-
Notifications
You must be signed in to change notification settings - Fork 6
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
Library support #5
base: master
Are you sure you want to change the base?
Conversation
86ee826
to
6fc97eb
Compare
Thanks for writing this up! If I understand it correctly, it seems like if a file It seems like some version of @jayb's Rust-based proposal (dafny-lang/dafny#1236 (comment)) would help here. For example, if we have:
we would also have something like:
(alternatively, we could just paths, and rely on Dafny to extract the names of the modules they contain). This would still require you to specify the files included in your project, but at least you only specify them once, in a single place, rather than many times in |
I'd like to remove the need for include directives all-together. I think we should distinguish two kinds of included files:
This proposal only removes the need for including files of the second kind. For removing the need for includes of the first kind I have another proposal, maybe I should have shared that first. The summary of the changes there is:
The end goal of those changes and the ones in this proposal is that you can work on a project by only doing calls of the form
It'll create a
I think we can distinguish the feature of allowing customers to specify Dafny command line arguments through a configuration file and features that improve Dafny's parallelisation, caching and support for libraries. I'm not against supporting a TOML based configuration file, but I'd like to see whether there is still a need for one once we implement the changes I described above and in the proposal. |
I've been tacking this problem recently, and just recalled that this RFC already existed and overlapped a lot with my plans, so let me append them here to close the loop. Since @keyboardDrummer wrote this, he has given us However, there is one thing I'm doing differently than proposed in this RFC: rather than reusing The main reason I want a distinct build artifact is to make it much harder to accidentally skip verification in the build process: I've noticed users are often surprised that included files are not verified by default, for example. Verifying once and then compiling to multiple target languages is a common workflow (especially in our own test suite), and it is much safer to only skip verification when given a There are more details about the cc @parno since you had some great input on this RFC earlier! |
I like the idea of a Dafny issued file that certifies verification took place. A number of our build scripts already create (empty) @robin-aws I do have one concern about item 4 in the comment you link to above. I may be misreading it, but it sounds like you're suggesting deprecation of a developer's ability to verify a single Dafny file without verifying all of its includes. We have found that feature critical for individual developer productivity as well as for doing massive scale out for CI purposes on large projects, so I'd be sad to see it go. Apologies if I've misunderstood your suggestion! |
Great to hear! I will just carefully clarify that a
I'm definitely not suggesting making that impossible, just safer by default (and even then only after a deprecation period with lots of warning). If |
No description provided.