Repository navigation
libchronoid 0.10.1
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 payloadis now KSUID-only. Combining-f payloadwith--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 payloadis unchanged. (Closes #3)
Changed (docs-only — no behaviour change)
- Clarified the thread-safety contract for
chronoid_set_randinchronoid/ksuid.h: the override is held in two independent atomic pointers (one forfn, one forctx), 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-flightchronoid_ksuid_new/chronoid_uuidv7_newcalls before swapping the override or freeingctx. Cross-referenced fromchronoid/uuidv7.h. (Closes #5)
Added (build / CI)
- New
-Dssse3mesonfeatureoption (defaultauto) gating the SSSE3 hex-encode kernel forchronoid_uuidv7_formaton x86_64. Default behaviour is byte-identical to 0.10.0 on every supported platform;-Dssse3=disabledlets 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.