|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## UNRELEASED |
| 3 | +## [1.1.0] - 2021-03-30 |
4 | 4 |
|
5 | | -- `#[export]` attribute can be given to `HB.instance` in order to have instances |
6 | | - (re)declared by `HB.reexport`. |
7 | | -- `#[compress_coercions]` attribute (off by default) to shorten coercions paths |
8 | | - in the synthesis of instances. |
9 | | -- `HB.check` is like `Check` but supports logging and can be disabled on a |
10 | | - selection of Coq versions. |
11 | | -- Experimental support for structures with a function as the carrier, that is |
| 5 | +Compatible with |
| 6 | +- Coq 8.11 with Coq-Elpi 1.6.2, |
| 7 | +- Coq 8.12 with Coq-Elpi 1.8.2, |
| 8 | +- Coq 8.13 with Coq-Elpi 1.9.5. |
| 9 | + |
| 10 | +### General |
| 11 | + |
| 12 | +- **Experimental** support for structures with a function as the carrier, for e.g. |
12 | 13 | hierarchies of morphisms. |
13 | | -- `HB.instance K F` deprecated in favor of `HB.instance Definition` |
14 | | -- `#[log]` and `#[log(raw)]` to get printed Coq commands equivalent to what HB |
15 | | - is doing. The raw print has higher changes to be reparsable. |
16 | | -- export `COQ_ELPI_ATTRIBUTES="hb(log(raw))"` to have HB commands log patch |
17 | | - files containing Coq commands equivalent to what HB did. Patch file have |
18 | | - extension `.hb` and are named after the file they apply to. |
19 | | -- `coq.hb` command line utility to patch/reset files. |
20 | | -- `indexed` is gone, one can use `#[key="T"]` instead to flag paramter `T` as |
21 | | - the key of the mixin/factory |
22 | | -- `#[infer(P)]` can be used to tell `HB.structure` to set things up so that |
| 14 | +- **Fix** Type inference of parameters for HB commands improved, it can now rely on |
| 15 | + the right hand side of factories and mixins |
| 16 | +- **Fix** Removed a hack that included phantom fields in mixins and factories in order |
| 17 | + to prevent erasure from section discharge. |
| 18 | +- **Cosmetic** Changed naming convention for canonical instances e.g. `T_is_a_Ring` is now |
| 19 | + renamed to `T_Ring`. This name should still not be relied upon. |
| 20 | +- **Cleanup** The elpi code has been split into several files, |
| 21 | + one for each command and a folder for common code. |
| 22 | +- **Fix** Speedup `toposort` in elpi code. |
| 23 | +- **Doc** The file `structures.v` contains a detailed documentation of each command. |
| 24 | + |
| 25 | +### Commands |
| 26 | + |
| 27 | +- **Deprecated** `HB.instance K F` in favor of `HB.instance Definition`. |
| 28 | +- **New** `HB.export` is like `Export` except that the module is stored |
| 29 | + in a database for later rexport. |
| 30 | +- **New** `HB.reexport` reexports all the modules that have been previously |
| 31 | + flagged by `HB.export`, as well as all the `HB.instance` that have been flagged |
| 32 | + by the attribute `#[export]`. |
| 33 | +- **New** `HB.check` is like `Check` but supports logging and can be |
| 34 | + disabled on a selection of Coq versions. |
| 35 | +- **New** `HB.graph` generates the graph of structures as a dot file. |
| 36 | + (One may use `tred file.dot | xdot -` to visualize the output). |
| 37 | +- **Extended** `HB.structure` to generate methods `.on` and `.copy` |
| 38 | + (see `structures.v` for their documentation). |
| 39 | + |
| 40 | +### Attributes |
| 41 | + |
| 42 | +- **New** `#[export]` attribute can be given to `HB.instance` in order to have instances |
| 43 | + (re)declared by `HB.reexport`. |
| 44 | +- **New** `#[compress_coercions]` attribute (off by default) to shorten coercions paths |
| 45 | + in the synthesis of instances. When instanciating structures one by one, |
| 46 | + (e.g. T is declared as a Semiring, then as a Ring, then as a Field, etc) |
| 47 | + the coercions used to pile up, we now compress these chains of application. |
| 48 | +- **New** `#[log]` and `#[log(raw)]` to print Coq commands equivalent to what HB |
| 49 | + is doing. The raw print is the only one which is reparsable. |
| 50 | +- **New** `#[key="T"]` to flag paramter `T` as the key of the mixin/factory. |
| 51 | + The definition `indexed` used to serve this purpose is deprecated and will not do anything. |
| 52 | +- **New** `#[infer(P)]` can be used to tell `HB.structure` to set things up so that |
23 | 53 | parameter `P` is automatically inferred. E.g. if `P : Ring.type` then |
24 | 54 | `Structure.type` will take a `t : Type` and trigger a canonical inference. |
25 | 55 | to infer the `t_is_a_Ring : Ring.type` associated to `t`. |
26 | 56 | If `Structure` has a function carrier, one has to write `#[infer(P = "_ -> _")]`. |
| 57 | +- **New** `#[arg_sort]` for `HB.structure` generates an intermediate |
| 58 | + sort projection called `arg_sort` which is prioritary as a coercion and which |
| 59 | + unfolds to `sort`. It is meant to be the sort of arguments of operations |
| 60 | + (see `mathcomp/fingroup/fingroup.v` for more information). |
| 61 | +- **New** `#[local]` for `HB.instance` so that they do not survive sections. |
| 62 | + |
| 63 | +### Tooling |
| 64 | + |
| 65 | +- **New** environment variable `COQ_ELPI_ATTRIBUTES="hb(log(raw))"` to have HB commands |
| 66 | + write patch files containing Coq commands equivalent to what HB did. |
| 67 | + These patch files have extension `.v.hb` and are named after the file they apply to. |
| 68 | +- **New** `coq.hb` command line utility to patch/reset files. |
| 69 | +- **New** The CI is now testing mathcomp and plan B (using nix). |
27 | 70 |
|
28 | 71 | ## [1.0.0] - 2020-12-16 |
29 | 72 |
|
|
0 commit comments