Skip to content

Releases: epfl-lara/stainless

Stainless 0.9.9.0 (2024-12-09)

09 Dec 14:13
v0.9.9.0
805b1f7
Compare
Choose a tag to compare
  • 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)

18 Oct 22:40
Compare
Choose a tag to compare
  • 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 --compact also 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)

22 Aug 11:57
d452855
Compare
Choose a tag to compare

Version 0.9.8.8 (2024-08-22)

Stainless frontend, library and internals

  • Remove Scala 2 frontend (#1517)
  • Transform throw into assert(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)

06 May 14:03
0180904
Compare
Choose a tag to compare

Version 0.9.8.7 (2024-05-06)

Stainless frontend, library and internals

  • Add stainless.lang.Try allowing 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=smt option is enabled (#1508)
  • Have isExpressionFresh consider 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 map for mutable tail lists as a benchmark (#1484)

Build

  • Fix the stainless-cli script (#1486)

Stainless 0.9.8.2 (2023-11-10)

10 Nov 11:52
874df4c
Compare
Choose a tag to compare

Version 0.9.8.2 (2023-11-10)

Stainless frontend, library and internals

  • Add stainless.lang.Cell and stainless.lang.swap, allowing to swap the content of two Cells (#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 ReturnElimination to avoid triggering AdtSpecialization (#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-cli script to invoke scala-cli with the library (#1469)
  • Rename stainless.sh to stainless (#1469)

Stainless 0.9.8.1 (2023-09-21)

21 Sep 14:31
bf63eb4
Compare
Choose a tag to compare

Version 0.9.8.1 (2023-09-21)

Stainless frontend, library and internals

  • Fix --watch crashing 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.

Stainless 0.9.8 (2023-05-30)

30 May 09:44
a9d0fda
Compare
Choose a tag to compare

Version 0.9.8 (2023-05-30)

Stainless frontend, library and internals

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.

Stainless 0.9.7 (2022-11-21)

22 Nov 08:24
5526990
Compare
Choose a tag to compare

Version 0.9.7 (2022-11-21)

General

  • The recommended JDK is now JDK 17

Stainless frontend, library and internals

  • Improve equivalence checking: function call matching, norm, mkTest (#1294)
  • Experimental integration of OL- and OCBSL- based simplifiers (#1315)
  • Upgrade to Scala 3.2 (#1317)
  • Add verification pipeline summary (#1336)
  • Fix issues #1332, #1271, #1333, #731, #1290, #1321, #1322, #1306, #1301, #1302, essentially concerning @opaque and @inlineOnce, imperative phase and tupling.

Build

  • Include macOS ScalaZ3 build
  • Include SBT Stainless plugin

Stainless 0.9.6 (2022-07-03)

03 Jul 13:39
33158cb
Compare
Choose a tag to compare

Version 0.9.6 (2022-07-03)

This version is tested using java 1.8

Stainless frontend, library and internals

GenC

  • Annotate unexported function as static (#1261)

Stainless 0.9.5 (2022-05-06)

06 May 09:37
cef1cab
Compare
Choose a tag to compare
Pre-release

Version 0.9.5 (2022-05-06)

Stainless frontend, library and internals

  • VC checking in parallel (#1247)
    • The parallelism can be specified with -Dparallel=<N> when invoking Stainless
  • Fix issue #1159 (#1246)
  • Address some issues in the imperative phase (#1245, #1252)

VirtualBox VDI Image

A VirtualBox image with the release and bolts/ repository clone is available for this version, based on TurnKey linux. Usage:

  • download (648MB)
  • extract the archive using 7zr x stainless-turnkey.7z obtaining a 2GB .vdi file
  • set up a VM machine as Linux with enough memory and cores and the previously extracted VDI image as the disk
  • boot the machine in VirtualBox
  • Quit the console dialog that pops at boot
  • log in as root with password neverStainSince2010
  • Invoke the script in the home directory for a test run and browse for more examples