Skip to content

Release v1.1.0#1

Merged
ekjaisal merged 21 commits into
mainfrom
dev/v1.1.0
May 23, 2026
Merged

Release v1.1.0#1
ekjaisal merged 21 commits into
mainfrom
dev/v1.1.0

Conversation

@ekjaisal

Copy link
Copy Markdown
Owner

Summary

This release hardens MonoLexID across all platforms. All changes are fully backward-compatible with v1.0.0. No consumer code changes required.

What’s Changed

  • Initialisation no longer raises during unit startup; failures are deferred and surfaced at the call site.
  • Three-stage pthread_atfork handler for full POSIX fork safety on Linux and macOS, with PID-change detection as a secondary layer and MonoLexIDReinitialize as an explicit application-callable third layer.
  • Lock contention eliminated in global monotonic mode. Spin waits happen outside the critical section.
  • External callbacks (MonoLexIDSaveState) now fire outside all locks.
  • Torn read vulnerability on 32-bit targets eliminated via local timestamp snapshot.
  • Lock inversion deadlock between GInitLock and GMonoLexIDLock resolved.
  • Dedicated GErrorLock decouples error reporting from the generator lock.
  • Fork child handler made async-signal-safe. No heap allocation, no managed strings.
  • Wall-clock bounded spin timeouts via MonoLexIDSpinTimeoutMS.
  • Nil function pointer guards on MonoLexIDGetTimeMS and MonoLexIDYieldThread.
  • Entropy buffer copy optimised with Move.

New Public API

MonoLexIDReinitialize, MonoLexIDGetLastError, MonoLexIDInitError, MonoLexIDSpinTimeoutMS

Test Runner

Expanded from 7 to 12 sections covering all new API surface, version constants, initialisation state, error reporting, spin timeout configuration, and flush behaviour.

ekjaisal added 21 commits May 22, 2026 17:57
@ekjaisal ekjaisal merged commit 813b54f into main May 23, 2026
3 checks passed
@ekjaisal ekjaisal deleted the dev/v1.1.0 branch May 23, 2026 02:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant