Coder Social home page Coder Social logo

dafny.msbuild's People

Contributors

acioc avatar alex-chew avatar robin-aws avatar rustanleino avatar wouterschols avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dafny.msbuild's Issues

Support an optional Dafny version parameter

Since this tool is currently invoking the Dafny CLI rather than depending on it directly as a .NET package, it would be useful to check that the provided Dafny CLI is a compatible version.

This can be either:

  1. A release identifier such as "2.3.0.10506", or
  2. A git reference ("HEAD", v2.3.0, a commit hash, etc.)

The second option would only be satisfied when running Dafny from a local git repository clone.

Output summary of verification times per file

This would be helpful for identifying outliers that take a long time to verify, especially when they are approaching the timeout and about to make future changes hit unexpected delays.

Bug: occasionally phantom verification failures

Every once in a while a file will fail but with apparently successful output from the Dafny CLI:


938 | Verifying ../src/Util/Sets.dfy failed:
939 | Dafny 2.3.0.10506
940 |  
941 | Dafny program verifier finished with 1 verified, 0 errors

Use the new dotnet tool

Now that we published Dafny as a dotnet tool, it would be good to use it unless an option says otherwise.
That way, we would be able to use it for Dafny development as well without having a circularity problem.

DafnyVerifyTask defaults to maximum parallelism

This appears to be a regression or something environment-sensitive, since the task used to default to the number of logical cores.ParallelOptions seems to intentionally default to maximum parallelism according to the source code, so perhaps this changed with a dependency upgrade somehow.

Cache verification results

This is an enhancement request to memoize the fact that a file has been verified somehow, so that subsequent executions of the VerifyDafny task don't waste time re-verifying it unless the file is modified.

Doing this correctly will probably require adding a feature to Dafny itself to determine the dependency graph of Dafny files, so that this "cache" can be correctly invalidated.

More thorough testing needed

The build is currently only verifying different use cases pass, but it should also:

  • Verify that passing -p:VerifyDafnyJobs=1 results in deterministic, sequential verification
  • Verify correct behaviour if at least one file fails to verify
  • Verify the /timeLimit parameter is being provided correctly (perhaps by including a file that is very slow to verify)

Perhaps we can use lit to define and compare against the expected dotnet commands' output?

Specify Dafny version to use

For reproducible builds, we should allow the configuration of what version of Dafny should be used to build/verify the project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.