- Add the
&&&
operator, which splits verification conditions. - Improve reporting when there are multiple
require
in inlined function - Add some benchmarks for
full-imperative
phase - Upgrade to Scala 2.13 (#1173)
- Allow reference to old global state
- Ignore
opaque
keyword in GenC inlining
- Add
--full-imperative
phase, for an imperative phase without aliasing restrictions (#1140) - Bug fixes in imperative phase (#1108, #1103, #1116, #1121, #1123)
- Split
Unchecked
annotation intoDropVCs
andDropConjunct
(#1125) - Fix ghost elimination for multiple parameter groups (#1138)
- Fix timeout sometimes not being respected with non-incremental mode (
no-inc:
solver prefix) (#1141) - Bump sbt to
1.5.5
and add documentation for Windows (#1134)
- Drop extern functions in GenC (#1114)
- Disable mangling of fields for classes that are defined outside Stainless (#1115)
- Add pure attribute to pure functions when compiling to C (#1119)
- Split
inline
(for verification) andcCode.inline
(for compilation) annotations (#1132) - Reorganize GenC annotations (#1129)
- Bug fixes (#1124, #1133)
- Better support for jumping to errors in IDEs (#966, #995, #996)
- Add support for return keyword (#923, #925, #934)
- Various fixes and changes in aliasing analysis (#915, #918, #920, #928, #965, #969, #973, #985, #1076, #1094)
- Support for tuples with mutable types (#1064)
- Add support for multiple requires in functions (not in ADTs) (#983)
- Better measure inference for chain processor (#967)
- Add more support for bitvector operations (#962, #1062)
- Print verification progress but not all verification conditions by default (#1018)
- Add support for swap operation for array elements (#946)
- Add support for inlining and making opaque while loops (#1009)
- Library cleanup (#953, #998, #999, #1000)
- Add fresh copy primitive (#1033)
- Improve traceInduct and add clustering (#1052)
- Add no-return invariants for while loops (#1079)
- Add support for CVC4 1.8 (#833)
- Add support for Z3 4.8.10 (#1010)
- Better support for
@export
annotation in GenC (#924, #1008, #1019) - Add StructInliningPhase to remove structs with one member in GenC (#1058, #1065)
- Add support for fixed length arrays in GenC (#1055, #1057)
- Add compilation of global state in GenC (#1085, #1089)
- Support for Scala 2.12.13 (#913)
- Support for ghost fields in GenC (#904, #907)
- Initial support for unsigned integers in GenC (#888)
- Fix issues watch mode (and add support for Enter key to reload) (#906)
- Better support for refinement types in type-checker
- Various bug fixes in extraction phases
- Add GenC component from Leon (#885)
- Add frontend for more bitvector types and operations (#879)
- Inox dependency is now directly on GitHub
- Fix some issues in imperative phase (#874) and type encoding (#884)
- Add
admit-vcs
option to generate VCs without sending them to the solver - Add support for indexed types in scalac frontend
- Generalize specification helpers (#828)
- Remove unsound type-checking rule for function types, and add subtying rules instead
- Fix unapplyAccessor not instantiating with refinement type (#841)
- Remove duplicate serializations
- 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
- Add
ListMap
implementation (associative list) (#794)
- Remove type-checking tuple rule that was duplicating VCs (#792)
- Improve documentation on check/assert (#815)
- Add documentation for contracts on abstract functions (#825)
- 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)
- Add
ListOps.noDuplicate
, and a contract forSet#toList
(#746) - Check match exhaustiveness in type checker (#737)
- 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)
- Fix
List#toScala
method (#778)
- Enable
--type-checker
by default (#721) - Rework the termination checker to infer measures for recursive functions (#721)
- Relax mutual recursion check for functions/ADTs enough for TypeEncoding (#721)
- Add
List#toScala
andList.fromScala
to the library (#708) - Add methods
map
,withFilter
,toList
, andtoScala
toSet
(#708) - Add methods
keys
,values
,toList
andtoScala
toMap
(#708)
- Add missing position in
FieldAccessors
phase (#734) - Fix extraction of extern types with Dotty frontend (#708)
- Ensures invariants of ancestors cannot be weakened
- Limit parallelism when running stainless-actors tests
- Update Docker packaging script
- Fix broken benchmark in TypeCheckerSuite
- 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
- Add missing @library annotation to stainless-algebra. Bump to 0.1.1
- Fix missing import in stainless-algebra. Bump to 0.1.2
- 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
- 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)
- Fix null pointer exception when running --eval (#699)
- Fix warning about multiple library sources (#692)
- Fix bug in ScalaCompiler.topmostAncestors (#693)
- Fix warning about multiple library sources (#692)
- 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)
- 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)
- 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)
- Support for type members in local classes (#633)
- Report functions with missing positions in PositionChecker (#639)
- Add AmortizedQueue data structure to Stainless library (#635)
- Add debug section to show the full VC before simplification (#637)
- Add script to run tests on stainless-actors and bolts (#623)
- Ignore @library flag on typeclasses which have non-library subclasses (#595)
- Enable -feature and -unchecked scalac flags in embedded compiler (#610)
- Enforce sound equality tests (#605, #609)
- Port partial specification feature from Leon (#438)
- Add BoundedQuantifiers module to the library (#596)
- Propagate @ghost annotation to variables introduced by calls to default copy getter (#643)
- Do not lift refinement into pre-/post-conditions when
--type-checker
is enabled (#620) - Follow symbolic links when searching for base directory (#621)
- Check that methods are only overridden by methods with the same ghostiness (#615)
- Check that required tools are installed before packaging (#599)
- Add readability check for jars in script (#600)
- Add missing serializer for LocalThis (#631)
- Fix malformed case object constructor method (#641)
- Use triple quotes and escape \u for extraClasspath and extraCompilerArguments (#626)
- Fix bug in AssertionInjector where unary minus was lost in strict arithmetic mode (#630)
- Fix DottyVerificationSuite not being run (non-initialized folder) (#627)
- Fix bug where anonymous inner classes would have same identifier (#619)
- Fix handling of super calls in case objects (#618)
- Fix a bunch of issues with type members (#580)
- Improve support for type members and type aliases (#580)
- Re-enable check for abstract methods overrides and consider methods of abstract classes with empty body to be abstract (#587)
- Add documentation about the Gitter8 template, and re-order some sections (#588)
- Dealias type aliases more eagerly (#585)
- Add microtests from recently closed issues (#578)
- Add testcase for #532 (#589)
- Indexed recursive types and type-checking based VC generation (#479)
- Display counter-examples when using metals (#579)
- Add --no-colors option, for use via metals in VS Code
- Add FAQ extracted from the C4DT newsletter (#570)
- Emit warning when dropping require/ensuring/assert in a user @extern function (#562)
- Microtests from recently closed issues (#578)
- Use git-describe to compute version of artifact in packaging script
- Bump Inox version to 1.1.0-332-ga6cbf8e (#571)
- Make purity of requires and assertions depend on their bodies (#547)
- Fix "a required artifact is not listed by module descriptor" error
- Fix report being shown twice (#567)
- Update sbt docs and fix plugin publishing issues (#565)
- Fix effects checker for MutableMapUpdated tree (#563)
- Fix sbt plugin, metals integration, and tests (#556)
- Switch to git-describe based versioning scheme (#550)
- Add
--version
flag (#550)
- Fix license in sbt build definition (#545)
- Prevent over-simplifications in ImperativeCodeElimination (#533)
- Fix check in mutable map effect analysis (#525)
- Bump Inox version to 1.1.0-329-g3c23a86 (#530)
- Change license from AGPL to Apache 2.0
- Allow specifying which arguments should the induction be performed over with
@induct
(#504) - Add
snapshot
keyword for imperative code (#491) - Add
@keep
annotation and option to avoid filtering out library symbols (#488) - Add packaging script for stainless-scalac-standalone (#487)
- Add support for type aliases, type members, and dependent function types (#470)
- Support for configuration file (#466)
- Extract default getters in toplevel objects (#464)
- Report positions when going through the compiler reporter from the sbt plugin (#434)
- Bump Scala to v2.12.8 (#437)
- Upgrade Dotty to 0.12.0-RC1 (#436)
- Fix for line numbers sometimes being off (#429)
- Remove registry and add option to consolidate all symbols into a single symbol table (#422)
- Help solver deduce that reified type args do not influence evaluation (#414)
- Allow fields/methods named after tuple selectors (#410)
- Remove all assertions, and use assumeChecked for simplifications (#408)
- Add
Nat
type to the library (#407) - Conditional effect targets for accessors, mutable Any, and phase re-ordering (#399)
- Add mechanism to recover from missing dependencies (#397)
- Add while-loop condition and invariant to path condition in TransformerWithPC (#392)
- Make equations go backwards for better line number reporting (#341)
- Add support for inner and anonymous classes (#271)
- First official release on GitHub