|
2 | 2 |
|
3 | 3 | See [docs/dev/news/](docs/dev/news/). |
4 | 4 |
|
| 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 | + |
5 | 87 | # 4.10.0 |
6 | 88 |
|
7 | 89 | ## New features |
|
0 commit comments