Skip to content

Commit fcb2042

Browse files
committed
Release Dafny 4.11.0
1 parent 0081bd9 commit fcb2042

25 files changed

+82
-47
lines changed

RELEASE_NOTES.md

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

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

5+
# 4.11.0
6+
7+
## New features
8+
9+
- Stabilize verifications by automatically computing triggers for the quantified proof obligations associated with `:|` constructs.
10+
Manually specified triggers and warning-suppressing attributes are also supported (and mentioned in warning messages, as for other quantifiers and comprehensions).
11+
12+
Enhance witness guessing for the proof obligation associated for `:|` assignments.
13+
(https://github.com/dafny-lang/dafny/pull/6023)
14+
15+
- Four new Dafny standard libraries:
16+
17+
* `Std.Actions` - utilities for abstract imperative actions, including enumerating and streaming values
18+
* `Std.Frames` - utilities related to working with dynamic framing, often related to reads and modifies clauses
19+
* `Std.Ordinal` - operations and properties of the ORDINAL type
20+
* `Std.Termination` - a datatype for representing Dafny decreases clauses and extensions
21+
(https://github.com/dafny-lang/dafny/pull/6074)
22+
23+
- Support using `--standard-libraries` with `--enforce-determinism`. Removed `Std.Collections.Seq.SetToSeq` since it was slow and not compatible with this mode. (https://github.com/dafny-lang/dafny/pull/6137)
24+
25+
- With `--standard-libraries` you can now read an UTF-8 text files from the disk using `Std.FileIO.ReadUTF8FromFile(path: string): Result<string, string>`.
26+
To write some content to the disk, use `Std.FileIO.WriteUTF8ToFile(path: string, content: string): Outcome<string>`.
27+
**Standard library breaking change**: All `UnicodeEncodingForm` versions of `FromUTF8Checked`, `FromUTF16Checked` and `DecodeCodeUnitSequenceChecked` now return a `Result` instead of an `Option` so that the error message is clearer. Migration is easy: Use `.ToOption()` if you really prefer an option. Affected refining modules: `Utf8EncodingForm` and `Utf16EncodingForm`
28+
(https://github.com/dafny-lang/dafny/pull/6198)
29+
30+
- The Dafny standard libraries now include a powerful parser combinators framework, available through `Std.Parsers.StringBuilders`.
31+
32+
Key Features
33+
34+
- **Guaranteed Termination**: All parsers, including those built with recursive combinators, are proven to terminate
35+
- **Mutual Recursion Support**: Build complex parsers that can reference each other (demonstrated in the Polynomial example)
36+
- **Rich Error Reporting**: Failed parsing attempts combine their error messages to provide meaningful feedback
37+
- **Developer-Friendly Tools**: Built-in debugging utilities for inspecting parser inputs and outputs
38+
- **Memory-Efficient Recursion**: Advanced implementations avoid stack overflow in recursive parsers
39+
- **Elegant DSL**: Compact, datatype-based combinators designed for readability and composition
40+
- **Flexible Backtracking**: Optional backtracking available through `.??()` (DSL) or `?(...)` (standard syntax)
41+
- **Comprehensive Toolkit**: Rich set of combinators including lookahead, negation, folding, and binding operations
42+
- The library includes several practical examples, including JSON and SMT parsers, each implemented in about 50 lines of code.
43+
(https://github.com/dafny-lang/dafny/pull/6243)
44+
45+
- Dafny classes and traits can now redeclare methods defined by traits they inherit from. (https://github.com/dafny-lang/dafny/pull/6280)
46+
47+
- Real literals now support scientific notation using lowercase `e` to denote the exponent (like `1.23e5` for `123000.0` or `5e-2` for `0.05`). Real literals also support convenient trailing-dot shorthand (like `1.` for `1.0`) and leading-dot shorthand (like `.5` for `0.5` or `.5e2` for `50.0`). Note that explicit `+` signs in exponents are not supported; use `5e2` instead of `5e+2`. (https://github.com/dafny-lang/dafny/pull/6286)
48+
49+
## Bug fixes
50+
51+
- Fix soundness issue that could occur when using an opaque block and old or fresh in its ensures clause (https://github.com/dafny-lang/dafny/pull/6060)
52+
53+
- Correctly display project files errors when using build command (https://github.com/dafny-lang/dafny/pull/6107)
54+
55+
- Fix crash that could occur when a `forall` statement was used inside a `match` `case` (https://github.com/dafny-lang/dafny/pull/6121)
56+
57+
- Fix a case where a forall statement would cause Dafny to crash (https://github.com/dafny-lang/dafny/pull/6129)
58+
59+
- Fix @VerifyOnly and migrated the new code to use it (https://github.com/dafny-lang/dafny/pull/6146)
60+
61+
- Java lambdas now accepting boxing/unboxing (https://github.com/dafny-lang/dafny/pull/6149)
62+
63+
- Fix crash in resolution of structural-inclusion greater-than operator (https://github.com/dafny-lang/dafny/pull/6155)
64+
65+
- Generate alloc consequence axiom only for functions that read the heap (fixes unsoundness) (https://github.com/dafny-lang/dafny/pull/6164)
66+
67+
- Made the language server compliant with the LSP protocol so that it can be used with other editors, such as Helix (https://github.com/dafny-lang/dafny/pull/6172)
68+
69+
- No more compilation issue when using bitvector shifts in Rust with the new resolver (https://github.com/dafny-lang/dafny/pull/6196)
70+
71+
- Fix handling of opaque blocks in the Dafny IDE (https://github.com/dafny-lang/dafny/pull/6203)
72+
73+
- JSON serialization now properly encodes unicode characters with 0 pre-pend instead of space-append.
74+
Also, string literals ending with escaped characters are now supported as well.
75+
(https://github.com/dafny-lang/dafny/pull/6227)
76+
77+
- Fail more gracefully when reusing names (https://github.com/dafny-lang/dafny/pull/6262)
78+
79+
- Escape user string literals in error messages (https://github.com/dafny-lang/dafny/pull/6273)
80+
81+
- Compilation of type conversion from a `newtype`-based on `char` to `int` (https://github.com/dafny-lang/dafny/pull/6296)
82+
83+
- Fix LSP bug that cause IDE exceptions during invalid parse states (https://github.com/dafny-lang/dafny/pull/6299)
84+
85+
- Fix two resolver crashes involving datatypes and traits (https://github.com/dafny-lang/dafny/pull/6321)
86+
587
# 4.10.0
688

789
## New features

docs/dev/news/6023.feat

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

docs/dev/news/6060.fix

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

docs/dev/news/6074.feat

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

docs/dev/news/6107.fix

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

docs/dev/news/6121.fix

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

docs/dev/news/6129.fix

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

docs/dev/news/6137.feat

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

docs/dev/news/6146.fix

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

docs/dev/news/6149.fix

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

0 commit comments

Comments
 (0)