Skip to content

Commit eeb2315

Browse files
authored
Update Changelog.md
1 parent ae90b15 commit eeb2315

File tree

1 file changed

+61
-18
lines changed

1 file changed

+61
-18
lines changed

Changelog.md

Lines changed: 61 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,72 @@
11
# Changelog
22

3-
## UNRELEASED
3+
## [1.1.0] - 2021-03-30
44

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.
1213
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
2353
parameter `P` is automatically inferred. E.g. if `P : Ring.type` then
2454
`Structure.type` will take a `t : Type` and trigger a canonical inference.
2555
to infer the `t_is_a_Ring : Ring.type` associated to `t`.
2656
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).
2770

2871
## [1.0.0] - 2020-12-16
2972

0 commit comments

Comments
 (0)