Releases: epfl-lara/stainless
Releases · epfl-lara/stainless
Release list
v0.10.0
What's Changed
- Update Scala to LARA Dotty 3.8.3 and SBT to 1.12.4 by @mbovel in #1708
- Update inox to 8fc9cf8 by @mbovel in #1709
- Fix compatibility with Scala 3.8 by @mbovel in #1711
- Add a lite version of bolts CI for PRs by @samuelchassot in #1712
- Add contributing documentation by @samuelchassot in #1715
- Add natural deduction test cases and documentation for quantified properties by @vkuncak with @Copilot in #1720
- remove refinement lifting phase by @kasiaMarek in #1717
- Refinement types (no skolems) by @kasiaMarek in #1725
- Refinement pattern matching by @kasiaMarek in #1726
- Add error msg for skolem use by @kasiaMarek in #1727
- feat: support
isInstaceOffor base types by @kasiaMarek in #1730 - Make refinement type predicates ghost environments by @samuelchassot in #1729
- bump Scala version to 3.9.0-RC1-bin-20260516-64de706-NIGHTLY by @kasiaMarek in #1732
- Create a sanitize pass that removes QualifierSkolemIndex annotations by @kasiaMarek in #1733
- Bump Scala to scala-3.9.0-RC1-bin-20260522-7039450-NIGHTLY by @kasiaMarek in #1734
- Add a new benchmark for non OOP interfaces by @samuelchassot in #1735
- Enable silent flag for refinement types by default by @kasiaMarek in #1737
- Disallow mutable types in object fields by @samuelchassot in #1739
- Fix a too restrictive check for pure fields in classes by @samuelchassot in #1746
- fix an issue with function closure with refinement types by @kasiaMarek in #1731
- More readable GenC by @vkuncak in #1750
- Add code generation for BitVector/Integer and signedness conversions by @sankalpgambhir in #1751
- Add more lemmas for List in the library by @samuelchassot in #1749
- Add CI workflow to automate releases by @mbovel in #1752
- Release workflow: push only the tag, not the bump commit by @mbovel in #1753
- Exclude upstream org.scala-lang Scala libs from assembled jars by @mbovel in #1754
- Add BitVector <-> Integer to frontend by @samuelchassot in #1755
- Refinement mutation by @samuelchassot in #1758
- Cleanup Main class and build.sbt to remove leftovers of the double frontend setup by @samuelchassot in #1762
New Contributors
- @kasiaMarek made their first contribution in #1717
Full Changelog: v0.9.9.3...v0.10.0
v0.9.9.3
What's Changed
- Add IArray to stainless library by @samuelchassot in #1686
- Fix formal parameters computation in
GhostAccessRewriterby @mbovel in #1688 - Fix bugs in classtag elimination found when adapting ZipLex by @samuelchassot in #1691
- Rename IArrays into IArray, and remove an additional @ignore that was breaking def list extraction by @samuelchassot in #1695
- Fix a bug in extraction for method calls with multiple list of arguments by @samuelchassot in #1694
- Add a ghost val in IArray instead of instantiating directly the list by @samuelchassot in #1699
- Add floating point support, attempt 2 by @iswoqqe in #1700
- Update ListMap to match the more advanced version on Bolts by @samuelchassot in #1702
- Add caching lemmas to ListMap by @samuelchassot in #1704
New Contributors
Full Changelog: v0.9.9.2...v0.9.9.3
v0.9.9.2
What's Changed
- Update readme and dependencies by @sankalpgambhir in #1663
- Move installation and build to docs; clean up tutorial docs by @sankalpgambhir in #1664
- Fix crashing on receiving no input files by @sankalpgambhir in #1666
- Add measures in library by @samuelchassot in #1665
- Consider top-level functions in function call matching by @drganam in #1668
- Fix ghost checker by splitting ghost annotation propagation and checks by @samuelchassot in #1673
- allow ignored fields by @vkuncak in #1675
- Remove
fail_if_pull_request_is_draftjob by @mbovel in #1679 - Ignore
ClassTagparameters by @mbovel in #1678
Full Changelog: v0.9.9.1...v0.9.9.2
Stainless 0.9.9.1 (2025-09-05)
- Scala version is now 3.7.2
- Improved reporting for
ExtractionFailed#1620 - Add support for extracting from Tasty #1606
- Add support for pattern alternatives #1627
- Tail recursion elimination for GenC #1626
- Added an axiomatized Exists quantifier #1635
- Disable fancy objects (objects that extend traits) at the extraction level #1643
- Added check files for verification integration tests #1641
- Added PartialInverse and Bijection classes and lemmas in Quantifiers library #1646, #1654
- Equivalence: allow
normto change return type of candidate programs #1658
Full Changelog: v0.9.9.0...v0.9.9.1
Stainless 0.9.9.0 (2024-12-09)
- Scala version is now 3.5.2
- Update to Inox that supports Horn clause solving, epfl-lara/inox#214
- Fix an extraction bug with type synonym definitions (#1595)
- Explicit measures in List library so termination checks are cached
- More properties and methods on lists and sets
- Set considered to have positive polarity (it is finite)
- Internal solver errors are now silent by default
Stainless 0.9.8.9 (2024-10-19)
- Default cache now only stores SHA-256 hash of formulas ( -binary-cache=true for old version) #1593, #1591 fixes #1576
- Scala version is now 3.5.0
- Inox now has a solver for ground assertions based on internal evaluator (Inox #218), called
eval - Opaque Forall and ensures: help higher order contracts (#1567)
- Option
--compactalso reduces progress messages (#1573) - Changed CI to use GitHub actions
- Documented a limited use of
throw - CI scripts as part of move to GitHub actions
Stainless 0.9.8.8 (2024-08-22)
Version 0.9.8.8 (2024-08-22)
Stainless frontend, library and internals
- Remove Scala 2 frontend (#1517)
- Transform
throwintoassert(false)(#1521) - Add measure transfer for equivalence checking (#1557)
- Add further benchmarks for equivalence checking (#1538, #1554)
- Add SAT Check for precondition (#1548)
- Add various specifications to Stainless library (#1555, #1541)
- Enhance unfold to work on bindings and imperative code as well (#1533)
- Various bug fixes (#1531, #1532)
Build
- Move Inox as a submodule instead of an http dependency (#1520)
Documentation
- Add documentation for codespaces use and link to a sample repo (#1440)
v0.9.8.7: Version 0.9.8.7 (2024-05-06)
Version 0.9.8.7 (2024-05-06)
Stainless frontend, library and internals
- Add
stainless.lang.Tryallowing for a monadic try construct (#1515) - Upgrade the Scala 3 frontend to Scala 3.3.3 (#1514 and #1516)
- Avoid rebuilding mutated objects when possible in AntiAliasing (#1507 and #1509)
- Show the ID of the corresponding generated SMT-lib file for each VC in the summary when
debug=smtoption is enabled (#1508) - Have
isExpressionFreshconsider arguments when computing freshness of a function call (#1505) - Avoid pairwise matching of "external" methods in Equivalence checking mode (#1503)
- Fix in documentation (#1502)
- Add support for exported methods (#1501)
- Fix ImperativeCleanup phase to not clean some unused bindings that should not be removed (#1500)
- Fix a bug in Equivalence checking mode that was considering the wrong preconditions in some cases (#1499)
- Fix type alias of opaque triggering missing dependencies (#1498)
- Add missing dropVCs annotation in AntiAliasing (#1496)
- Relax fallback condition of AntiAliasing handling of Let (#1495)
- Add missing case for Array typeBounds, make private final, fix minor bug in RefinementLifting (#1494)
- Fix MatchError in EffectsAnalyzer leading to a crash in some cases (#1492)
- Fix parametric extension methods (#1490)
- Allow for redundant type checks for pattern matching (#1489)
- Add 'unknown safety' category for Equivalence checkign (#1488)
- Allows for let-binding in tests and output 'expected but got' results in Equivalence checking (#1485)
- Add a tail recursive implementation of
mapfor mutable tail lists as a benchmark (#1484)
Build
- Fix the
stainless-cliscript (#1486)
Stainless 0.9.8.2 (2023-11-10)
Version 0.9.8.2 (2023-11-10)
Stainless frontend, library and internals
- Add
stainless.lang.Cellandstainless.lang.swap, allowing to swap the content of twoCells(#1461) - Add support for cvc5 (#1444)
- Upgrade the Scala 3 frontend to Scala 3.3 (#1442)
- Upgrade the Scala 2 frontend to Scala 2.13.12 (#1469)
- Support for
new Array(len)constructor for primitive types (#1453) - Remove ensuring clause in ghost elimination (#1454)
- Fix while loops being mistakenly considered as ghost (#1467)
- Fix occasionally incorrect positions (#1447, #1455, #1473, #1477)
- Enforce purity for class invariants (#1475)
- Do not treat inline methods or functions as ghost (#1481)
- Applying some type widening in
ReturnEliminationto avoid triggeringAdtSpecialization(#1466) - Relax freshness condition and improve aliasing error messages (#1468)
Build
- Upgrade the shipped Z3 version (
smt-z3) to 4.12.2 (#1469) - Add cvc5 1.0.8 to the archive (#1469)
- Add arm64 build for macOS (#1469)
- Add the compiled and source code of the Stainless library to the archive, under
lib(#1469) - Add a
stainless-cliscript to invoke scala-cli with the library (#1469) - Rename
stainless.shtostainless(#1469)
Stainless 0.9.8.1 (2023-09-21)
Version 0.9.8.1 (2023-09-21)
Stainless frontend, library and internals
- Fix
--watchcrashing on compilation error (#1424) - Expand options for equivalence checking (#1422, #1435)
- Add more info messages (#1425)
- Add further postconditions for indexOf and apply (#1428)
- Documentation updates (#1429, #1434, #1431)
- Fix ghost elimination for GenC (#1433)
- Reorganize some library files and allow for verification without Stainless library (#1436)
- Fix issue #1399
Note on platforms
Our CI and most developer machines run Ubuntu 20 or 22; we use OpenJDK 17. Stainless runs fine on terminal-only Linux installations (without X or Wayland), which makes it easy to deploy in Window Subsystem for Linux on Windows; we recommend WSL with *-linux.zip release file for Windows as well (though *-win.zip should work as well). Use option --solvers=smt-z3 on Mac.