Skip to content

libchronoid 0.10.1

Choose a tag to compare

@justinjoy justinjoy released this 01 May 12:29
· 16 commits to main since this release

A pre-1.0 hygiene release on top of 0.10.0. No public-API additions, no SONAME bump (SONAME stays at 0 across 0.10.x). All changes are rolled up from issues #3, #5, and #6.

Changed (BREAKING — pre-1.0 contract tightening)

  • chronoid-gen -f payload is now KSUID-only. Combining -f payload with --format=uuidv7 (generation mode) or with a 36-char UUIDv7 positional (parse mode) exits non-zero with a stderr message pointing at -f raw (16-byte image) or -f inspect (rand_a / rand_b broken out). UUIDv7 has no payload field per RFC 9562 §5.7 — the previous 10-byte slice in 0.10.0 was structurally invertible but semantically misnamed. KSUID -f payload is unchanged. (Closes #3)

Changed (docs-only — no behaviour change)

  • Clarified the thread-safety contract for chronoid_set_rand in chronoid/ksuid.h: the override is held in two independent atomic pointers (one for fn, one for ctx), not a single atomic pair. A draw racing a swap can observe a crossed (old_fn, new_ctx) pairing, so callers must quiesce all in-flight chronoid_ksuid_new / chronoid_uuidv7_new calls before swapping the override or freeing ctx. Cross-referenced from chronoid/uuidv7.h. (Closes #5)

Added (build / CI)

  • New -Dssse3 meson feature option (default auto) gating the SSSE3 hex-encode kernel for chronoid_uuidv7_format on x86_64. Default behaviour is byte-identical to 0.10.0 on every supported platform; -Dssse3=disabled lets packagers and CI exercise the scalar fallback. The option gate wraps both the MSVC and GCC/Clang branches so the disable actually takes effect on Windows.
  • Three new blocking PR-gate jobs (scalar-fallback / no-avx2, / no-ssse3, / force-scalar) in .github/workflows/ci-pr.yml, mirrored non-blocking with GCC + Clang in .github/workflows/ci-main.yml. Catches scalar-arm regressions that the SIMD-vs-scalar parity tests would otherwise mask. (Closes #6)

Footprint

A release build on x86_64 (post-strip --strip-unneeded):

Artifact Bytes
libchronoid.so.0.10.1 39 072
libchronoid.a 55 246
chronoid-gen (CLI) 31 136

Byte-identical to 0.10.0 on x86_64 GCC.