diff --git a/CHANGELOG.md b/CHANGELOG.md index 1345249ada6a4a08a46262fe0ef500e5ec34d653..a12ad3ffaa078d305db920313fa9960cbf4e951c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,37 @@ way the logic is used on paper. We also mention some significant changes in the Coq development, but not every API-breaking change is listed. Changes marked `[#]` still need to be ported to the Iris Documentation LaTeX file(s). -## Iris master +## Iris 3.2.0 (unreleased) + +This release of Iris received contributions by Aleš Bizjak, Amin Timany, Dan +Frumin, Glen Mével, Hai Dang, Hugo Herbelin, Jacques-Henri Jourdan, Jan Menz, +Jan-Oliver Kaiser, Jonas Kastberg Hinrichsen, Joseph Tassarotti, Mackie Loeffel, +Marianna Rapoport, Maxime Dénès, Michael Sammler, Paolo G. Giarrusso, +Pierre-Marie Pédrot, Ralf Jung, Robbert Krebbers, Rodolphe Lepigre, and Tej +Chajed. Thanks a lot to everyone involved! + +The highlight of this release is the completely re-engineered interactive proof +mode. Not only did many tactics become more powerful; the entire proof mode can +now be used not just for Iris but also for other separation logics satisfying +the proof mode interface (e.g., [Iron] and [GPFSL]). Also see the +[accompanying paper][MoSeL]. + +[Iron]: https://iris-project.org/iron/ +[GPFSL]: https://gitlab.mpi-sws.org/iris/gpfsl/ +[MoSeL]: https://iris-project.org/mosel/ + +Beyond that, the Iris program logic gained the ability to reason about +potentially stuck programs, and a significantly strengthened adequacy theorem +that unifies the three previously separately presented theorems. There are now +also Hoare triples for total program correctness (but with very limited support +for invariants) and logical atomicity. + +And finally, our example language HeapLang was made more realistic +(Compare-and-set got replaced by compare-exchange and limited to only compare +values that can actually be compared atomically) and more powerful, with added +support for arrays and prophecy variables. + +Further details are given in the changelog below. Changes in the theory of Iris itself: @@ -50,7 +80,7 @@ Changes in heap_lang: operator allowed compared closures with each other. * Implement prophecy variables using the new support for "observations". The erasure theorem (showing that prophecy variables do not alter program - behavior) can be found [in the iris/examples repository](https://gitlab.mpi-sws.org/iris/examples/blob/3f33781fe6e19cfdb25259c8194d34403f1134d5/theories/logatom/proph_erasure.v). + behavior) can be found [in the iris/examples repository][prophecy-erasure]. * heap_lang now uses right-to-left evaluation order. This makes it significantly easier to write specifications of curried functions. * heap_lang values are now injected in heap_lang expressions via a specific @@ -63,17 +93,18 @@ Changes in heap_lang: (continuously allocated regions of memory). * One can now assign "meta" data to heap_lang locations. +[prophecy-erasure]: https://gitlab.mpi-sws.org/iris/examples/blob/3f33781fe6e19cfdb25259c8194d34403f1134d5/theories/logatom/proph_erasure.v + Changes in Coq: -* An all-new generalized proof mode that abstracts away from Iris! See - <http://iris-project.org/mosel/> for the corresponding paper. Major new +* An all-new generalized proof mode that abstracts away from Iris! Major new features: - The proof mode can now be used with logics derived from Iris (like iGPS), with non-step-indexed logics and even with non-affine (i.e., linear) logics. - `iModIntro` is more flexible and more powerful, it now also subsumes `iNext` and `iAlways`. - General infrastructure for deriving a logic for monotone predicates over - an existing logic (see the paper for more details). + an existing logic (see the paper for more details). Developments instantiating the proof mode typeclasses may need significant changes. For developments just using the proof mode tactics, porting should not be too much effort. Notable things to port are: