@@ -18,7 +18,92 @@ Version 9.1
1818Summary of changes
1919~~~~~~~~~~~~~~~~~~
2020
21- TODO
21+ We highlight some of the most impactful changes here:
22+
23+ - fixed incorrect guard checking leading to inconsistencies (multiple PRs)
24+
25+ - sort polymorphic universe instances :ref:`should now be written <91sortpolysyntax>`
26+ as `@{s ; u}` instead of `@{s | u}`
27+
28+ - :ref:`fixed <91ltac2notationfix>` handling of notation variables for ltac2 in notations
29+ (i.e. `Notation "'foo' x" := ltac2:(...)`)
30+
31+ - :ref:`Support <91refinedef>` for :attr:`refine` attribute in :cmd:`Definition`
32+
33+ - Rocq can be compile-time configured to be :ref:`relocatable <91relocatable>`
34+
35+ - extraction :ref:`handles <91extractsortpoly>` sort polymorphic definitions
36+
37+ See the `Changes in 9.1.0`_ section below for the detailed list of changes,
38+ including potentially breaking changes marked with **Changed**.
39+ Rocq's `reference manual for 9.1 <https://rocq-prover.org/doc/v9.1/refman>`_,
40+ documentation of the 9.1 `corelib <https://rocq-prover.org/doc/v9.1/corelib>`__
41+ and `developer documentation of the 9.1 ML API <https://rocq-prover.org/doc/v9.1/api>`_
42+ are also available.
43+
44+ Théo Zimmermann, with help from Jason Gross and Gaëtan Gilbert, maintained
45+ `coqbot <https://github.com/rocq-prover/bot>`__ used to run Rocq's CI and other
46+ pull request management tasks.
47+
48+ Jason Gross maintained the `bug minimizer <https://github.com/JasonGross/coq-tools>`_
49+ and its `automatic use through coqbot <https://github.com/rocq-prover/rocq/wiki/Coqbot-minimize-feature>`_.
50+
51+ Ali Caglayan, Emilio Jesús Gallego Arias, Rudi Grinberg and Rodolphe Lepigre maintained the
52+ `Dune build system for OCaml and Coq/Rocq <https://github.com/ocaml/dune/>`_
53+ used to build the Rocq Prover itself and many Rocq projects.
54+
55+ The `opam repository <https://github.com/coq/opam>`_ for Rocq packages has been maintained by
56+ Guillaume Claret, Guillaume Melquiond, Karl Palmskog, Matthieu Sozeau
57+ and Enrico Tassi with contributions from many users. The up-to-date list
58+ of packages is `available on the Rocq website <https://rocq-prover.org/packages>`_.
59+
60+ Erik Martin-Dorel maintained the
61+ `Rocq Docker images <https://hub.docker.com/r/rocq/rocq-prover>`_ and
62+ the `docker-keeper <https://gitlab.com/erikmd/docker-keeper>`_ compiler
63+ used to build and keep those images up to date (note that the tool is not Rocq specific).
64+ Erik Martin-Dorel and Théo Zimmermann maintained the
65+ `docker-coq-action <https://github.com/coq-community/docker-coq-action>`_
66+ container action (which is applicable to any opam project hosted on GitHub).
67+
68+ Cyril Cohen, Vincent Laporte, Pierre Roux and Théo Zimmermann
69+ maintained the `Nix toolbox <https://github.com/coq-community/coq-nix-toolbox>`_.
70+ The docker-coq-action and the Nix toolbox are used by many Rocq projects for continuous integration.
71+
72+ Rocq 9.1 was made possible thanks to the following 24 reviewers:
73+ Florian Angeletti, Ali Caglayan, Cyril Cohen, Pierre Courtieu, Jim
74+ Fehrle, Gaëtan Gilbert, Jason Gross, Emilio Jesús Gallego Arias,
75+ Jan-Oliver Kaiser, Thomas Lamiaux, Rodolphe Lepigre,
76+ Erik Martin-Dorel, Guillaume Melquiond, Patrick Nicodemus,
77+ Pierre-Marie Pédrot, Pierre Rousselin, Pierre Roux, Gabriel Scherer,
78+ Matthieu Sozeau, Nicolas Tabareau, Enrico Tassi, Théo Winterhalter and
79+ Théo Zimmermann.
80+
81+ See the `Rocq Team <https://rocq-prover.org/rocq-team>`_ page for
82+ more details on Rocq's development teams.
83+
84+ The 45 contributors to the 9.1 version are: Soudant,
85+ ypopovitch, Reynald Affeldt, Wassim Ait-Moussa, David Allsopp,
86+ Christian Benedict Smit, Frédéric Besson, Mathis Bouverot, Ali
87+ Caglayan, Jean Caspar, Benedict Christian Smit, Cyril Cohen, Pierre Courtieu,
88+ Julien Cretin, Jian Fang, Jim Fehrle, Gaëtan Gilbert, Jason Gross,
89+ Dario Halilovic, Hugo Herbelin, Elyes Jemel, Emilio Jesús Gallego
90+ Arias, Jan-Oliver Kaiser, Kacper Korban, Lucie Lahaye, Thomas Lamiaux,
91+ Rodolphe Lepigre, Yann Leray, Kenji Maillard, Erik Martin-Dorel,
92+ Patrick Nicodemus, Charles Norton, Pim Otte, Pierre-Marie Pédrot,
93+ Josselin Poiret, Johann Rosain, Pierre Rousselin, Pierre Roux,
94+ Radosław Rowicki, Benedict Smit, Bastien Sozeau, Matthieu Sozeau,
95+ Nicolas Tabareau, Enrico Tassi and Théo Zimmermann.
96+
97+ The Rocq community at large helped improve this new version via
98+ the GitHub issue and pull request system,
99+ the `Discourse forum <https://discourse.rocq-prover.org>`__ and the
100+ `Rocq Zulip chat <https://rocq-prover.zulipchat.com>`_.
101+
102+ Gaëtan Gilbert and Pierre-Marie Pédrot are the release managers of Rocq 9.1.
103+ This release is the result of 397 merged PRs, closing 56 issues.
104+
105+ | Nantes, September 2025
106+ | Gaëtan Gilbert and Pierre-Marie Pédrot for the Rocq development team
22107
23108Changes in 9.1.0
24109~~~~~~~~~~~~~~~~
@@ -50,10 +135,26 @@ Kernel
50135 (`#20729 <https://github.com/rocq-prover/rocq/pull/20729>`_,
51136 fixes `#20728 <https://github.com/rocq-prover/rocq/issues/20728>`_,
52137 by Yann Leray).
138+ - **Fixed:**
139+ Fix guard checker making propositional extensionality inconsistent
140+ (`#21050 <https://github.com/rocq-prover/rocq/pull/21050>`_,
141+ fixes `#21053 <https://github.com/rocq-prover/rocq/issues/21053>`_,
142+ by Yann Leray).
143+ - **Fixed:**
144+ substitution of functor delta-resolvers when strengthening.
145+ The previous code was only substituting the inner delta resolvers
146+ and ignoring the codomain of functors. In particular this was generating
147+ ill-formed constants whose canonical component was pointing to a bound name
148+ that did not exist in the global environment, leading to an inconsistency
149+ (`#21057 <https://github.com/rocq-prover/rocq/pull/21057>`_,
150+ fixes `#21051 <https://github.com/rocq-prover/rocq/issues/21051>`_,
151+ by Pierre-Marie Pédrot).
53152
54153Specification language, type inference
55154^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
56155
156+ .. _91sortpolysyntax:
157+
57158- **Deprecated:**
58159 in :ref:`sort polymorphic <sort-polymorphism>` instances, separating sorts from universes using `|` instead of `;` (the later being possible since this version)
59160 (`#20635 <https://github.com/rocq-prover/rocq/pull/20635>`_,
@@ -65,13 +166,24 @@ Specification language, type inference
65166 (`Definition foo@{s;u} := ...` instead of `Definition foo@{s|u|+} := ...`)
66167 (`#20635 <https://github.com/rocq-prover/rocq/pull/20635>`_,
67168 by Gaëtan Gilbert).
169+ - **Fixed:**
170+ Anomaly `List.chop` in the presence of projections with not
171+ enough argument scopes (`#20945
172+ <https://github.com/rocq-prover/rocq/pull/20945>`_, fixes `#20940
173+ <https://github.com/rocq-prover/rocq/issues/20940>`_, by Hugo
174+ Herbelin).
175+ - **Fixed:**
176+ Anomaly `List.chop` with too many projection parameters in an abbreviation
177+ (`#20946 <https://github.com/rocq-prover/rocq/pull/20946>`_,
178+ fixes `#15815 <https://github.com/rocq-prover/rocq/issues/15815>`_,
179+ by Hugo Herbelin).
68180
69181Notations
70182^^^^^^^^^
71183
72184- **Changed:**
73185 The `Specif` notations (`exists x : A, P`, `{ x : A | P }`, `{ x : A & P }`, etc)
74- locally open `type_scope` for the second component (`P`).
186+ locally opens `type_scope` for the second component (`P`).
75187 This makes eg `{ x & type_1 * type_2 }` work even when `nat_scope` is opened instead of interpreting `*` as peano multiplication
76188 (`#20294 <https://github.com/coq/coq/pull/20294>`_,
77189 by Gaëtan Gilbert).
@@ -159,6 +271,11 @@ Ltac2 language
159271 `Import Foo` will not run a mutation from (non exported) inner module `Foo.Bar`
160272 (`#20516 <https://github.com/rocq-prover/rocq/pull/20516>`_,
161273 by Gaëtan Gilbert).
274+ - **Added:**
275+ A file `Ltac1CompatNotations` for Ltac2 Notations reproducing Ltac1 parsing of tactics,
276+ that can be harmful to parsing, and produce bad error messages.
277+ (`#20569 <https://github.com/rocq-prover/rocq/pull/20569>`_,
278+ by Thomas Lamiaux).
162279- **Added:**
163280 `rename` (in `Ltac1CompatNotations`), `eassumption`, `cycle`, and `exfalso` Ltac2 notations
164281 (`#20197 <https://github.com/rocq-prover/rocq/pull/20197>`_,
@@ -220,6 +337,9 @@ Ltac2 language
220337 i.e. `let x := @y in constr:($hyp:x)` is equivalent to `constr:(&y)`
221338 (`#20656 <https://github.com/rocq-prover/rocq/pull/20656>`_,
222339 by Gaëtan Gilbert).
340+
341+ .. _91ltac2notationfix:
342+
223343- **Fixed:**
224344 Ltac2 in terms in notations is more aware of the notation variables it uses,
225345 providing early failure when the variable is instantiated with an invalid term,
@@ -295,6 +415,9 @@ Commands and options
295415 (`#20107 <https://github.com/coq/coq/pull/20107>`_,
296416 fixes `#20042 <https://github.com/coq/coq/issues/20042>`_,
297417 by Gaëtan Gilbert).
418+
419+ .. _91refinedef:
420+
298421- **Added:**
299422 support for the :attr:`refine` attribute to definitions and (co)fixpoints
300423 (`#20355 <https://github.com/coq/coq/pull/20355>`_,
@@ -356,6 +479,9 @@ Infrastructure and dependencies
356479 and minimum supported OCamlfind version is now 1.9.1 (instead of 1.8.1)
357480 (`#20576 <https://github.com/rocq-prover/rocq/pull/20576>`_,
358481 by Gaëtan Gilbert).
482+
483+ .. _91relocatable:
484+
359485- **Added:**
360486 Rocq can be compile-time configured to be relocatable,
361487 using `./configure -relocatable` instead of e.g. `./configure -prefix /some/path`.
@@ -381,6 +507,8 @@ Infrastructure and dependencies
381507Extraction
382508^^^^^^^^^^
383509
510+ .. _91extractsortpoly:
511+
384512- **Fixed:**
385513 extraction handles sort polymorphic definitions
386514 (`#20655 <https://github.com/rocq-prover/rocq/pull/20655>`_,
0 commit comments