-
Notifications
You must be signed in to change notification settings - Fork 9
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
Incremental Statix #108
Incremental Statix #108
Conversation
Add generated `Spoofax2ProjectContext` to allow: - The `current-language-relative-source-or-include-path` (used in statix runtime) to work. - Resolution of libraries.
It is worth mentioning that there will be an innocent stacktrace in the console when there is no |
Does this mean that the Statix solver can be either concurrent or incremental but not both? Ideally it would be both at the simultaneously, or choose one or the other depending on which of the two is expected to be the fastest. |
That is not in particular a concern of this PR, but the incremental solver is always concurrent at the same time. |
For some reason I never got a notification about this. I will review and merge this next week. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good apart from a couple of small changes!
This PR enables using Statix with different solver modes. The changes are as follows:
statix-solver-mode = traditional | concurrent | incremental
option is added to theconstraint-analyzer
section of the CFG language.AnalyzeMulti
task will have the solver mode integrated in itsStatixProjectConfig
context object.StatixSolverModePrimitive
andStatixConcurrentEnabledPrimitive
read this solver mode. They receive the language identifier by calling thelanguage_components
stratego primitive (implemented byspoofax2.common
).As the
ConstraintAnalyzerContext
already manages the state, and provides the previous result to the constraint analyzer, no additional effort needs to be undertaken to manage (serialize) previous solver states.Items still to do: