packages feed

c-expr-runtime-0.2.0.0: CHANGELOG.md

# Revision history for `c-expr`

## 0.2.0.0 -- 2026-10-16

### Breaking changes

- Pointer arithmetic counts elements of the pointee, as in C, and not bytes:
  `p + i` and `i + p` advance `p` by `i` elements, `p - i` moves `p` back by
  `i` elements, and `p1 - p2` counts the elements between `p1` and `p2`. The
  `Add` and `Sub` instances for `Ptr ty` now require the new class
  `Pointee ty`: `Pointee`s are `Storable ty`, whose `sizeOf` is the size of the
  step. In particular, neither `Void` nor `()` is an instance of `Pointee`.
  Arithmetic on `Ptr ()` (`void *`) and on pointers to opaque types is a type
  error, as in C; for byte arithmetic, cast to `Ptr Word8` first. See [issue
  #2306][issue-2306].
- `SPtr` now holds an `SPointee rec ty`: `SVoidPointee` for `void *`, or
  `SObjPointee`, which carries the `Pointee ty` evidence.

### New features

- `C.Type` exports `Pointee`, `NotVoid`, `SPointee(..)`, and `unSPointee`.

### Bug fixes

- `p - i` for an unsigned `i` narrower than `Int` no longer wraps around: on
  64-bit platforms, `p - 1u` moved `p` forward by `UINT_MAX` bytes.

[issue-2306]: https://github.com/well-typed/hs-bindgen/issues/2306

## 0.1.0.0 -- 2026-07-14

- Remove the `C.Char` module; UTF-8 encoding of character and string literals
  now lives in `c-expr-dsl`'s parser.

## 0.1.0-alpha -- 2026-02-06

- Release candidate.