Skip to content

Releases: epfl-lara/stainless

Version 0.7.4 (2020-10-02)

03 Oct 07:27
Compare
Choose a tag to compare
Pre-release

Version 0.7.4 (2020-10-02)

Bug fixes

  • Fix unapplyAccessor not instantiating with refinement type (#841)
  • Remove duplicate serializations

Version 0.7.3 (2020-09-08)

08 Sep 13:35
Compare
Choose a tag to compare
Pre-release

Improvements

  • Remove check that measure has good type at call site (this was making arguments of recursive functions being type-checked twice, and thus duplicating VCs)
  • Instead, add check that mutually recursive functions have the same measure type
  • SplitCallBack now processes mutually recursive functions together
  • Improve HTML output for type-checking derivation

Version 0.7.2 (31-08-2020)

31 Aug 16:50
Compare
Choose a tag to compare
Pre-release

Features

  • Add ListMap implementation (associative list) (#794)

Improvements

  • Remove type-checking tuple rule that was duplicating VCs (#792)
  • Improve documentation on check/assert (#815)
  • Add documentation for contracts on abstract functions (#825)

Bug fixes

  • Fix @induct transformation for bounded-size integers (#804)
  • Add checks to reject programs not supported by Stainless (#810, #814)
  • Fix type encoding translation error (#818)
  • Fix issues on @inlineInvariant feature (#820)
  • Fix bug where Stainless could make an infinite loop in isMutableClassType (#824)
  • Fix "missing field" error in watch mode (#829)
  • Fix bug in watch mode where errors from previous runs kept getting reported (#830)
  • Fix bug in watch mode that made the verification report incomplete (#831)

Version 0.7.1 (17-06-2020)

17 Jun 10:56
Compare
Choose a tag to compare
Pre-release

Features

  • Add ListOps.noDuplicate, and a contract for Set#toList (#746)
  • Check match exhaustiveness in type checker (#737)

Improvements

  • Rearrange debugging options (#781)
  • Change StdOut print functions to handle Any (#761)
  • Improve error reporting (#756)
  • Add @inlineInvariant flag to ADT invariant dispatch method (#744)
  • Use static checks for SetOps methods (#742)
  • Recommend using Z3 4.8.6 instead of 4.7.1 (#741)

Bug fixes

  • Fix List#toScala method (#778)

Version 0.7.0 (07-02-2020)

07 Feb 15:30
v0.7.0
Compare
Choose a tag to compare
Pre-release

Features

  • Enable --type-checker by default (#721)
  • Rework the termination checker to infer measures for recursive functions (#721)

Improvements

  • Relax mutual recursion check for functions/ADTs enough for TypeEncoding (#721)
  • Add List#toScala and List.fromScala to the library (#708)
  • Add methods map, withFilter, toList, and toScala to Set (#708)
  • Add methods keys, values, toList and toScala to Map (#708)

Bug fixes

  • Add missing position in FieldAccessors phase (#734)
  • Fix extraction of extern types with Dotty frontend (#708)

Version 0.6.2 (16-01-2020)

17 Jan 12:43
v0.6.2
Compare
Choose a tag to compare
Pre-release
  • Ensures invariants of ancestors cannot be weakened
  • Limit parallelism when running stainless-actors tests
  • Fix broken benchmark in TypeCheckerSuite
  • Update Docker packaging script

Version 0.6.1 (13-11-2019)

13 Nov 14:09
v0.6.1
Compare
Choose a tag to compare
Pre-release

Improvements

  • Modularize Dockerfile and automate Docker image release process
  • Specify version of extra deps when extracting sources from JAR
  • Change name of target directory for extracted sources

Bug fixes

  • Add missing @library annotation to stainless-algebra. Bump to 0.1.1
  • Fix missing import in stainless-algebra. Bump to 0.1.2

Version 0.6.0 (07-11-2019)

07 Nov 16:59
v0.6.0
Compare
Choose a tag to compare
Pre-release

Features

  • Enable strict arithmetic by default (#608)
  • Introduce stainless.math.wrapping method to opt-out of overflow checks (#608)
  • Add @wrapping annotation for function definitions (#608)
  • Add ability to resolve extra source dependencies via Coursier (#715)
  • Erase values classes (#712)
  • Expose @invariant flag to user-land (#712)
  • Lift invariants of value classes to a refinement type (#712)
  • Implement Map#-- for finite maps (#705)
  • Add List.empty method

Improvements

  • Enforce overriding of abstract vals with constructor params (#712)
  • Ensure soundness of invariants in TreeSanitizer (#712)
  • Lift refinements in lets into assertions (#712)
  • Update ScalaZ3 to its latest release (bundling Z3 4.7.1) (#707)
  • Disallow defining classes within a class body (#697)
  • Document type aliases and type members (#686)
  • Ensure type parameters with non-trivial bounds are properly encoded (#685)

Bug fixes

  • Fix null pointer exception when running --eval (#699)
  • Fix warning about multiple library sources (#692)

Version 0.5.1 (12-09-2019)

12 Sep 15:06
v0.5.1
Compare
Choose a tag to compare
Pre-release

Bug fixes

  • Fix bug in ScalaCompiler.topmostAncestors (#693)
  • Fix warning about multiple library sources (#692)

Version 0.5.0 (12-09-2019)

12 Sep 13:44
v0.5.0
Compare
Choose a tag to compare
Pre-release

Features

  • Bump Scala version to 2.12.9 and update sbt to 1.3.0 (#629, #591)
  • Add support for removing elements from Map (#688)
  • Setting stainlessEnabled := false keeps both library sources and ghost elimination (#684)
  • Include Stainless library sources even when verification is disabled in sbt plugin (#680)
  • Add --config-file option to specify or disable configuration file (#648)

Improvements

  • Document type aliases and type members support (#686)
  • Add Cont monad benchmark to model exceptions (#675)
  • Make qed be of unit type with post-condition (#669)
  • Do not consider built-in classes in override chain (#661)
  • Induct flag only adds decreases check if type checker is enabled (#657)
  • Improve position reporting for postconditions (#656)
  • Remove warnings for asserts in extern functions (#651)
  • Propagate @ghost annotation to variables introduced by calls to default copy getter (#643)

Bug fixes

  • Fix bad mutual recursion in GodelNumbering proof (#679)
  • Ensure type parameters with non-trivial bounds are properly encoded (#685)
  • Do not check model when invoking solver during partial evaluation (#676)