|
2 | 2 |
|
3 | 3 | See [docs/dev/news/](docs/dev/news/). |
4 | 4 |
|
| 5 | +# 4.7.0 |
| 6 | + |
| 7 | +## New features |
| 8 | + |
| 9 | +- Add the option --find-project <path> that given a Dafny file traverses up the file tree until it finds a Dafny project that includes that path. This is useful when developing a particular file and doing CLI invocations as part of your development workflow. |
| 10 | + |
| 11 | +- Improved error reporting when verification times out or runs out of resources, so that when using `--isolate-assertions`, the error message points to the problematic assertion. (https://github.com/dafny-lang/dafny/pull/5281) |
| 12 | + |
| 13 | +- Support newtypes based on map and imap (https://github.com/dafny-lang/dafny/pull/5175) |
| 14 | + |
| 15 | +- To enable smoothly working with multiple projects inside a single repository, Dafny now allows using a Dafny project file as an argument to `--library`. When using `dafny verify`, Dafny ensures that any dependencies specified through a project are verified as well, unless using the flag `--dont-verify-dependencies`. (https://github.com/dafny-lang/dafny/pull/5297) |
| 16 | + |
| 17 | +- Experimental Dafny-to-Rust compiler development |
| 18 | + - Supports emitting code even if malformed with option `--emit-uncompilable-code`. |
| 19 | + - Supports for immutable collections and operators |
| 20 | + (https://github.com/dafny-lang/dafny/pull/5081) |
| 21 | + |
| 22 | +- Allow for plugins to add custom request handlers to the language server. (https://github.com/dafny-lang/dafny/pull/5161) |
| 23 | + |
| 24 | +- Deprecated the unicode-char option (https://github.com/dafny-lang/dafny/pull/5302) |
| 25 | + |
| 26 | +- Warn when passing a Dafny source file to `--library` (https://github.com/dafny-lang/dafny/pull/5313) |
| 27 | + |
| 28 | +- Add support for "translation records", which record the options used when translating library code. |
| 29 | + * `--translation-record` - Provides a `.dtr` file from a previous translation of library code. Can be specified multiple times. |
| 30 | + * `--translation-record-output` - Customizes where to write the translation record for the current translation. Defaults to the output directory. |
| 31 | + Providing translation records is necessary to handle options such as `--outer-module` that affect how code is translated. |
| 32 | + (https://github.com/dafny-lang/dafny/pull/5346) |
| 33 | + |
| 34 | +- The new `decreases to` expression makes it possible to write an explicit assertion equivalent to the internal check Dafny does to prove that a loop or recursive call terminates. (https://github.com/dafny-lang/dafny/pull/5367) |
| 35 | + |
| 36 | +- The new `assigned` expression makes it possible to explicitly assert that a variable, constant, out-parameter, or object field is definitely assigned. (https://github.com/dafny-lang/dafny/pull/5501) |
| 37 | + |
| 38 | +- Greatly reduced the size of generated code for the backends: C#, Python, GoLang and JavaScript. |
| 39 | + |
| 40 | +- Introduce additional warnings that previously only appeared when running the `dafny audit` command. Two warnings are as follows: |
| 41 | + - Emit a warning when exporting a declaration that has requires clauses or subset type inputs |
| 42 | + - Emit a warning when importing a declaration that has ensures clauses or subset type outputs |
| 43 | +Those two can be silenced with the flag `--allow-external-contracts`. A third new warning occurs when using bodyless functions marked with `{:extern}`, and can be silenced using the option `--allow-external-function`. |
| 44 | + |
| 45 | +- Enable project files to specify another project file as a base, which copies all configuration from that base file. More information can be found in the reference manual. |
| 46 | + |
| 47 | +## Bug fixes |
| 48 | + |
| 49 | +- Fix a common memory leak that occurred when doing verification in the IDE that could easily consume gigabytes of memory. |
| 50 | + |
| 51 | +- Fix bugs that could cause the IDE to become unresponsive |
| 52 | + |
| 53 | +- Improve the performance of the Dafny IDE by fixing bugs in its caching code |
| 54 | + |
| 55 | +- No longer reuse SMT solver processes between different document version when using the IDE, making the IDE verification behavior more inline to that of the CLI |
| 56 | + |
| 57 | +- Fix bugs that caused Dafny IDE internal errors (https://github.com/dafny-lang/dafny/issues/5355, https://github.com/dafny-lang/dafny/pull/5543, https://github.com/dafny-lang/dafny/pull/5548) |
| 58 | + |
| 59 | +- Fix bugs in the Dafny IDEs code navigation and renaming features when working with definition that are not referred to. |
| 60 | + |
| 61 | +- Fix a code navigation bug that could occur when navigating to and from module imports |
| 62 | +- |
| 63 | +- Fix a code navigation bug that could occur when navigating to and from explicit types of variables |
| 64 | + (https://github.com/dafny-lang/dafny/pull/5419) |
| 65 | + |
| 66 | +- Let the IDE no longer show diagnostics for projects for which all files have been closed (https://github.com/dafny-lang/dafny/pull/5437) |
| 67 | + |
| 68 | +- Fix bug that could lead to an unresponsive IDE when working with project files (https://github.com/dafny-lang/dafny/pull/5444) |
| 69 | + |
| 70 | +- Fix bugs in Dafny library files that could cause them not to work with certain option values, such as --function-syntax=3 |
| 71 | + |
| 72 | +- Fix a bug that prevented building Dafny libraries for Dafny projects that could verify without errors. |
| 73 | + |
| 74 | +- Reserved module identifiers correctly escaped in GoLang (https://github.com/dafny-lang/dafny/pull/4181) |
| 75 | + |
| 76 | +- Fix a soundness issue that could be triggered by calling ensures fresh in the post-condition of a constructor (https://github.com/dafny-lang/dafny/pull/4700) |
| 77 | + |
| 78 | +- Ability to cast a datatype to its trait when overriding functions (https://github.com/dafny-lang/dafny/pull/4823) |
| 79 | + |
| 80 | +- Fix crash that could occur when using a constructor in a match pattern where a tuple was expected (https://github.com/dafny-lang/dafny/pull/4860) |
| 81 | + |
| 82 | +- No longer emit an incorrect internal error while waiting for verification message (https://github.com/dafny-lang/dafny/pull/5209) |
| 83 | + |
| 84 | +- More helpful error messages when read fields not mentioned in reads clauses (https://github.com/dafny-lang/dafny/pull/5262) |
| 85 | + |
| 86 | +- Check datatype constructors for bad type-parameter instantiations (https://github.com/dafny-lang/dafny/pull/5278) |
| 87 | + |
| 88 | +- Avoid name clashes with Go built-in modules (https://github.com/dafny-lang/dafny/pull/5283) |
| 89 | + |
| 90 | +- Invalid Python code for nested set and map comprehensions (https://github.com/dafny-lang/dafny/pull/5287) |
| 91 | + |
| 92 | +- Stop incorrectly emitting the error message "Dafny encountered an internal error while waiting for this symbol to verify" (https://github.com/dafny-lang/dafny/pull/5295) |
| 93 | + |
| 94 | +- Rename the `dafny generate-tests` option `--coverage-report` to `--expected-coverage-report` (https://github.com/dafny-lang/dafny/pull/5301) |
| 95 | + |
| 96 | +- Stop giving an incorrect warning about a missing {:axiom} clause on an opaque constant. (https://github.com/dafny-lang/dafny/pull/5306) |
| 97 | + |
| 98 | +- No new resolver crash when datatype update expressions are partially resolved (https://github.com/dafny-lang/dafny/pull/5331) |
| 99 | + |
| 100 | +- Optional pre-type won't cause a crash anymore (https://github.com/dafny-lang/dafny/pull/5369) |
| 101 | + |
| 102 | +- Unguarded enumeration of bound variables in set and map comprehensions (https://github.com/dafny-lang/dafny/pull/5402) |
| 103 | + |
| 104 | +- Reference the correct `this` after removing the tail call of a function or method (https://github.com/dafny-lang/dafny/pull/5474) |
| 105 | + |
| 106 | +- Apply name mangling to datatype names in Python more often (https://github.com/dafny-lang/dafny/pull/5476) |
| 107 | + |
| 108 | +- Only guard `this` when eliminating tail calls, if possible (https://github.com/dafny-lang/dafny/pull/5524) |
| 109 | + |
| 110 | +- Compiled disjunctive nested pattern matching no longer crashing (https://github.com/dafny-lang/dafny/pull/5572) |
| 111 | + |
5 | 112 | # 4.6.0 |
6 | 113 |
|
7 | 114 | ## New features |
|
0 commit comments