-
Notifications
You must be signed in to change notification settings - Fork 237
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unifier tweaks #2983
Unifier tweaks #2983
Conversation
This allows to distinguish a `val x` from a `let x`, and is in general clearer at the cost of not much more verbosity.
Here's the memory usage for before and after in a part of everest (FStar+steel+HACL*). It looks inconclusive, but I think this may just discrepancies in GC heuristics. The files with the most memory usage decrease, and do so considerably, but some others increase. Before:
(CPU time does not vary much at all) (By the way, I'm not sure the slope is computed correctly, I think it depends on the size/scale of the axes.) Anyway, I think this change is the right thing to do, and the files that consume the most memory decrease, so I'll merge this. |
The interesting commit is the second one, that slightly changes some
unfolding logic in the unifier.
I think I wrote this originally,It is shortcircuiting... this PR is only taking more advantage of theand made the mistake of thinking that
||
was short-circuiting :).NotEqual
case.I'll run an everest comparison and post it here before merging.
This call is anyway problematic as this full normalization can be excessively
expensive, I'm working on finding a better way to do this instead of
full normalization. In one F* example in an external development,
adding
Weak
to the set of flags is the difference between a runtimeof 30mins and 0.5 seconds. Separate PR to come soon probably.