Skip to content

Commit 45478e1

Browse files
Release Dafny 4.7.0
1 parent eb2d95b commit 45478e1

35 files changed

+108
-40
lines changed

RELEASE_NOTES.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,113 @@
22

33
See [docs/dev/news/](docs/dev/news/).
44

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+
5112
# 4.6.0
6113

7114
## New features

Source/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project>
22

33
<PropertyGroup>
4-
<VersionPrefix>4.6.0</VersionPrefix>
4+
<VersionPrefix>4.7.0</VersionPrefix>
55
<NoWarn>1701;1702;VSTHRD200</NoWarn>
66
</PropertyGroup>
77

docs/dev/news/4181.fix

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/dev/news/4700.fix

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/dev/news/4823.fix

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/dev/news/4860.fix

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/dev/news/5081.feat

Lines changed: 0 additions & 3 deletions
This file was deleted.

docs/dev/news/5161.feat

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/dev/news/5175.feat

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/dev/news/5209.fix

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)