Revision history for Data-Sync-Shared
0.07 2026-07-22
- Fix guards releasing a lock from the wrong process: a forked child
inheriting an RWLock, Condvar or Semaphore guard released the
PARENT lock at exit, breaking mutual exclusion. Each guard now
records the acquiring PID and releases only from it.
- On-disk format change (v2 -> v3): an existing 0.06 file is
refused; recreate it.
- Give the Guard packages a $VERSION so PAUSE indexes them.
- Reject acquire_n above the maximum instead of blocking forever.
0.06 2026-07-03
- Security and robustness hardening; backing files now created mode
0600 (pass a file-mode argument to new() for cross-user sharing).
0.05 2026-05-26
- RWLock dead-reader recovery: SIGKILL'd reader no longer pins the
counter; 1024-slot per-process mirror drains dead contributions on
wrlock timeout
- SYNC_VERSION 1 → 2 (RWLock files only); existing maps must be recreated
0.04 2026-04-26
- RWLock write-preferring + writers waiting split
- Barrier broken-on-timeout + is broken()
- sync() croaks; harden DESTROY
- sync sem drain: CAS-loop -> atomic exchange
- idempotent eventfd; aarch64 CI matrix
0.03 2026-04-13
- Add SEE ALSO cross-links to all family modules
0.02 2026-04-12
- Fix eventfd_set self-assignment fd guard
- Add SEE ALSO cross-links to family modules
0.01 2026-04-11
- Initial release
- Five primitives: Semaphore, Barrier, RWLock, Condvar, Once
- Futex-based blocking, mmap shared memory, PID stale recovery
- File-backed, anonymous, and memfd modes
- eventfd integration for event loops
- Guard objects for scope-based auto-release
- Timeouts on all blocking operations