Revision history for Data-Sync-Shared

0.08      2026-08-12
          - Recover a file left behind by an interrupted create instead of
            leaving the path unopenable.
          - Hardening: re-entrancy with tied and overloaded arguments, and
            DESTROY on an invocant that is not one of ours.
          - Documentation and test-harness corrections.
          - unlink() reports a removal that failed; one already gone is not an
            error.

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
