Releases: FStarLang/FStar
v2021.07.31
Release v2021.07.31
v2021.07.24
Release v2021.07.24
v2021.07.17
Release v2021.07.17
v2021.06.26
Release v2021.06.26
v2021.06.23
Release v2021.06.23
v2021.06.06
Release v2021.06.06
v2021.05.28
Release v2021.05.28
This release was automatically generated, cf. PR #2275
v0.9.7.0-alpha1 (Summer Schools)
A preview for an upcoming major release in preparation for several summer schools. Precise release notes coming up in the non-alpha release, but you can already have a look at:
https://github.com/FStarLang/FStar/blob/v0.9.7.0-alpha1/CHANGES.md
v0.9.6.0
A large number of people contributed to this release: thanks to all!
Here are a few highlights:
Main new features
-
Meta-F*: A metaprogramming and tactic framework, as described in this report. Code samples are in examples/tactics, examples/native_tactics and the
FStar.Tactics
andFStar.Reflection
libraries. Many people contributed a lot to this work, especially Guido Martinez. -
Improved type inference with two-phase typechecking: We now build verification conditions for a program after a first phase of type inference. This improves inference of implicit arguments and reduces our trust in the type inference. Thanks to Aseem Rastogi!
-
Caching typechecked modules: F* emits ".checked" files, an on-disk representation of a typechecked module that can be read back later. This significantly reduces the time to load a module's dependences.
Many other improvements
A sampling of improvements across the entire tool chain:
-
Resolving several syntactic ambiguities in the parser
-
A correct pretty printer for surface terms, using
fstar --indent
-
A new dependence analysis to support incremental compilation for larger projects
-
Overhauling the higher order unification algorithm, both in the representation of meta-variables and in the handling of unfolding, leading to significant performance and robustness improvements (see https://github.com/FStarLang/FStar/wiki/Design-note:-Revising-the-unifier)
-
Automatic generation of interfaces for modules and tighter enforcement of abstraction boundaries (see https://github.com/FStarLang/FStar/wiki/Revised-checking-of-a-module's-interface)
-
Improvements to the SMT encoding, removing axioms that lead to performance problems and reducing brittleness related to optimizations in the encoding, notably shallow vs deep encodings
-
Improved type-based erasure for extraction
-
Several new and improved libraries, including a revised treatment of footprints for Low* programs, in
FStar.Modifies
-
And work by many people in Project Everest whose use of F* drove a lot of the work in this release.
-
Plus many other improvements and changes as described in https://github.com/FStarLang/FStar/blob/v0.9.6.0/CHANGES.md
v0.9.6.0-alpha1 (EPIT and SSFT)
A preview for an upcoming major release in preparation for several courses and tutorials.
This brings lots of improvements:
- two-phase type checking (towards disentangling type checking from checking of verification conditions), more robust wrt. inference of implicit arguments
- extraction to OCaml preserves the structure of let-bindings
- extraction now erases all pure unit functions, lemmas and ghost functions
- and many many more, see https://github.com/FStarLang/FStar/blob/v0.9.6.0-alpha1/CHANGES.md for more details.