-
Notifications
You must be signed in to change notification settings - Fork 123
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
Cryptol projects #1334
Comments
We will initially focus on implementing cryptol "Projects" for the purposes of @yav suggested using https://hackage.haskell.org/package/config-value and https://hackage.haskell.org/package/config-schema for defining the Project configuration file. Initially this would just include a list of modules in the Project. Cryptol should automatically find and load all module dependencies even if they are not explicitly listed. The Project config could also include setting a custom If we try to load all the modules in a Project at once, we might run into the issue of there being multiple "main" modules which have no name, and this would confuse the cryptol interpreter. The output of |
We are solving the "multiple main module" problem by identifying main modules by their filename instead so that there is no conflict. Once we have the ability to load all modules in a project at once to check or prove their properties, we can save the fingerprint of all the modules (e.g. to a file), so that when we re-run the project we only load in the modules which have changed or whose dependencies have changed. Furthermore, we would only re-prove properties which have a dependency in one of the re-loaded modules. |
More details on projects:
|
With larger collections of Cryptol specifications now being developed, it would be useful to have a declarative way to specify a collection of modules that are intended to be used together. This could be used by the Cryptol REPL and by the remote API to automatically populate an environment of modules at startup. It could also be used to, e.g., specify a collection of options at startup.
In addition, it would be useful to specify collections of actions to run, such as
:check
, or:prove
in a way that allows better control over exactly what gets run, e.g., in a CI setting. Having such a structure would be very helpful in such settings for allowing us enough structure to do caching and incremental testing (i.e., only run the tests that have changed since the last run).It is unclear if we also want/need some notion of "package." The distinction, in my mind, is that a "package" is geared toward reuse of subparts and distribution, whereas a "project" is more about the end product, when all the pieces have been gathered together.
The text was updated successfully, but these errors were encountered: