|
| 1 | +# Jasmin 2026.03.0 — 2026-03-09 |
| 2 | + |
| 3 | +## New features |
| 4 | + |
| 5 | +- String constants can occur as literal values (`"abcd"`) |
| 6 | + ([PR 1375](https://github.com/jasmin-lang/jasmin/pull/1375), |
| 7 | + [PR 1376](https://github.com/jasmin-lang/jasmin/pull/1376), |
| 8 | + [PR 1386](https://github.com/jasmin-lang/jasmin/pull/1386)). |
| 9 | + |
| 10 | +- Add support for assertions; `assert` is now a keyword |
| 11 | + ([PR 1389](https://github.com/jasmin-lang/jasmin/pull/1389)). |
| 12 | + |
| 13 | +## Bug fixes |
| 14 | + |
| 15 | +- Propagation of parameters in array lengths used a wrong implementation |
| 16 | + for unsigned division and unsigned remainder, giving |
| 17 | + possibly wrong results on negative integers |
| 18 | + ([PR 1382](https://github.com/jasmin-lang/jasmin/pull/1382)). |
| 19 | + |
| 20 | +- Fail properly when stack variables have type `int` |
| 21 | + ([PR #1385](https://github.com/jasmin-lang/jasmin/pull/1385); |
| 22 | + fixes [#1384](https://github.com/jasmin-lang/jasmin/issues/1384)). |
| 23 | + |
| 24 | +- Do not crash when too few explicit L-values are given |
| 25 | + ([PR #1393](https://github.com/jasmin-lang/jasmin/pull/1393); |
| 26 | + fixes [#1366](https://github.com/jasmin-lang/jasmin/issues/1366)). |
| 27 | + |
| 28 | +- Fix some type errors |
| 29 | + ([PR 1394](https://github.com/jasmin-lang/jasmin/pull/1394)). |
| 30 | + |
| 31 | +- The semantics of the x86 SIMD shifts (instructions `VPSLL`, `VPSRL`, and |
| 32 | + `VPSRA`) has been corrected: the second operand (the shift amount) is a |
| 33 | + 128-bit value, but only its 64 least significant bits are meaningful. |
| 34 | + Consequently, these instructions cannot be used for implementing the Jasmin |
| 35 | + operators such as `<<2u64` in full generality: only selected patterns are |
| 36 | + recognized by the compiler |
| 37 | + ([PR 1399](https://github.com/jasmin-lang/jasmin/pull/1399); |
| 38 | + fixes [#1397](https://github.com/jasmin-lang/jasmin/issues/1397)). |
| 39 | + |
| 40 | +## Other changes |
| 41 | + |
| 42 | +- The deprecated syntax for memory accesses (e.g., `(u8)[p + i]`) is no longer |
| 43 | + supported; the typing annotation should be put *inside* the square brackets |
| 44 | + (i.e., `[:u8 p + i]`) instead |
| 45 | + ([PR #1336](https://github.com/jasmin-lang/jasmin/pull/1336)). |
| 46 | + |
| 47 | +- Pretty-printing of Jasmin programs and expressions use less parentheses, |
| 48 | + taking into account priority and associativity of operators |
| 49 | + ([PR #1340](https://github.com/jasmin-lang/jasmin/pull/1340)). |
| 50 | + |
| 51 | +- Annotations without delimiting square brackets are no longer supported |
| 52 | + ([PR #1353](https://github.com/jasmin-lang/jasmin/pull/1353)). |
| 53 | + |
| 54 | +- When an intrinsic operator does not return any result, the equal sign and the |
| 55 | + empty list of L-values can be omitted (e.g., it is now possible to write |
| 56 | + instructions such as `#LFENCE();` or `#spill(x);`) |
| 57 | + ([PR #1355](https://github.com/jasmin-lang/jasmin/pull/1355)). |
| 58 | + |
| 59 | +- Zero-extension from 128-bit to 256-bit is now supported on x86 |
| 60 | + ([PR #1364](https://github.com/jasmin-lang/jasmin/pull/1364)). |
| 61 | + |
| 62 | +- The assembly output of the compiler features an `.ident` directive including |
| 63 | + the version of the compiler |
| 64 | + ([PR #1365](https://github.com/jasmin-lang/jasmin/pull/1365)). |
| 65 | + |
| 66 | +- On arm-m4, the add-with-carry operation `_, r = a + b + c` is translated into |
| 67 | + `ADC` (as opposed to `ADCS`) when the output carry is explicitly ignored |
| 68 | + (i.e., written as an underscore) |
| 69 | + ([PR #1369](https://github.com/jasmin-lang/jasmin/pull/1369)). |
| 70 | + |
1 | 71 | # Jasmin 2025.06.3 — Nancy, 2025-12-18 |
2 | 72 |
|
3 | 73 | ## New features |
|
0 commit comments