|
| 1 | +Release 3.12, 2022-11-25 |
| 2 | +======================== |
| 3 | + |
| 4 | +New features: |
| 5 | +- Support unstructured `switch` statements such as Duff's device. |
| 6 | + This is achieved via an optional, unverified code rewrite, |
| 7 | + activated by option `-funstructured-switch`. (#459) |
| 8 | +- Support C11 Unicode string literals and character constants, |
| 9 | + such as `u8"été"` or `u32'❎'`. |
| 10 | + |
| 11 | +Usability: |
| 12 | +- Support the `-std=c99`, `-std=c11` and `-std=c18` option. |
| 13 | + These options are passed to the preprocessor, helping it select the |
| 14 | + correct version of the standard header files. It also controls |
| 15 | + CompCert's warning for uses of C11 features. (#456) |
| 16 | +- The source character set of CompCert is now officially Unicode |
| 17 | + with UTF-8 encoding, A new warning `invalid-utf8` is triggered if byte |
| 18 | + sequences that are not valid UTF-8 are found outside of comments. |
| 19 | + Other source character sets and stricter validation can be supported |
| 20 | + via the `-finput-charset` option, see next. |
| 21 | +- If the GNU preprocessor is used, the source character set can be |
| 22 | + selected with the `-finput-charset=` option. In particular, |
| 23 | + `-finput-charset=utf8` checks that the source file is correctly |
| 24 | + UTF-8 encoded, and `-finput-charset=ascii` that it contains no |
| 25 | + Unicode characters at all. |
| 26 | +- Support mergeable sections for string literals and for numerical constants. |
| 27 | +- AArch64, ARM, RISC-V and x86 ELF targets: use `.data.rel.ro` section |
| 28 | + for `const` data whose initializers contain relocatable addresses. |
| 29 | + This is required by the LLVM linker and simplifies the work of the GNU linker. |
| 30 | +- `configure` script: add option `-sharedir` to specify where to put |
| 31 | + the `compcert.ini` configuration file (#450, #460) |
| 32 | +- ARM 32 bits: emit appropriate `Tag_ABI_VFP` attribute (#461) |
| 33 | + |
| 34 | +Optimizations: |
| 35 | +- Recognize more `if`-`else` statements that can be if-converted into |
| 36 | + a conditional move. In particular, debug statements generated in |
| 37 | + `-g` mode no longer prevent this conversion. |
| 38 | + |
| 39 | +Bug fixes: |
| 40 | +- Revised simplification of nested conditional, `||`, `&&` expressions |
| 41 | + to make sure the generated Clight code is well typed and is not rejected |
| 42 | + later by `ccomp` (#458). |
| 43 | +- In `-g` mode, when running under Windows, the `ccomp` executable could |
| 44 | + fail on an uncaught exception while inserting lines of the source C file |
| 45 | + as comments in the generated assembly file. |
| 46 | +- Reintroduced DWARF debug information for bit fields in structs |
| 47 | + (it was missing since 3.10). |
| 48 | + |
1 | 49 | Coq development:
|
2 |
| -- RTLgen: use the state and error monad for reserving goto labels (#371) |
| 50 | +- RTLgen: use the state and error monad for reserving `goto` labels (#371) |
3 | 51 | (by Pierre Nigron)
|
| 52 | +- Add `Declare Scope` statements where appropriate, and re-enable the |
| 53 | + `undeclared-scope` warning. |
| 54 | + |
4 | 55 |
|
5 | 56 | Release 3.11, 2022-06-27
|
6 | 57 | ========================
|
|
0 commit comments