This repository was archived by the owner on May 1, 2026. It is now read-only.
Conversation
First stable release. Public API and ABI are now under semver: a
binary-incompatible change requires a 2.x bump and a new SONAME.
Version bumps:
- meson.build project version: 0.1.0 -> 1.0.0
- both_libraries soversion: 0 -> 1 (SONAME flips to libksuid.so.1)
- tests/test_smoke.c version-macro sync point: matches the new
project version (the deliberate compile-time check that
@VERSION_*@ substitution flows from meson.project_version()
through configure_file into ksuid_version.h).
README:
- Status section: drops "early development" disclaimer; documents
the SONAME stability commitment.
- Footprint table: re-measured stripped sizes for the 1.0.0
build on x86_64 (libksuid.so.1.0.0 ~26 KB, libksuid.a ~35 KB,
ksuid-gen ~23 KB) and notes the AVX2 kernel's contribution.
Cumulative scope from 0.x development that ships in 1.0.0:
- 20-byte / 27-char wire-compatible KSUID encode/decode
- lock-free per-thread ChaCha20 CSPRNG with bounded reseed and
DSE-resistant wipe (issue #2) + thread-exit hook (issue #4)
- SSE2/NEON-accelerated input validation + 20-byte compare
- AVX2 8-wide ksuid_string_batch with CPUID dispatch (issue #13)
- meson + ninja build, both static and shared libraries,
ksuid-gen CLI
- Cross-platform RNG matrix (Linux getrandom, macOS getentropy,
Windows BCryptGenRandom) with /dev/urandom fallback
- Permanent CompressedSet deferral (issue #7) -- not in scope
for v1.x.
Verification:
- meson test -C build-release: 16/16 pass
- ksuid-gen smoke: matches upstream sample
(0ujtsYcgvSTl8PAuAdqWYSMnLOv -> 0669F7EFB5A1CD34B5F99D1154FB6853345C9735)
- gst-indent: clean
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
First stable release. Public API + ABI move under semver from this
PR forward.
0.1.0→1.0.0both_librariessoversion0→1(SONAME →libksuid.so.1)tests/test_smoke.cversion-macro sync point updated (thedeliberate compile-time check that
@VERSION_*@substitution flowsthrough
configure_fileintoksuid_version.h)SONAME stability
Cumulative scope landed across 0.x and shipping in 1.0.0:
DSE-resistant wipe (issue Wipe CSPRNG state with explicit_bzero / SecureZeroMemory shim (defeat DSE) #2) + automatic thread-exit wipe via
__cxa_thread_atexit_impl/FlsAlloc(issue Wipe per-thread CSPRNG state at thread exit (residue policy) #4)ksuid_string_batchwith CPUID-gated dispatch (issue AVX2 8-wide ksuid_string_batch kernel (follow-up to #5) #13)ksuid-genCLIgetrandom(Linux),getentropy(macOS),BCryptGenRandom(Windows),/dev/urandomfallbackIssue #7 (CompressedSet) is permanently deferred and intentionally
NOT in 1.x scope.
Test plan
meson test -C build-release— 16/16 passksuid-gensmoke: upstream sample0ujtsYcgvSTl8PAuAdqWYSMnLOv→0669F7EFB5A1CD34B5F99D1154FB6853345C9735tools/gst-indentcleanv1.0.0on the merge commit and create GitHub releaseAfter merge: tag
v1.0.0on the merge commit onmain, then pushthe tag to trigger any release-publishing workflow.