Revision history for Data-PubSub-Shared

0.09      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.08      2026-07-23
          - Int/Int32/Int16 publish now commits (value, sequence) atomically
            and drops an already-superseded store, so a publisher preempted a
            full lap can no longer revert a slot and stall a subscriber. Uses a
            lock-free slot-wide CAS where available, else the header mutex; the
            on-disk format is unchanged.
          - poll_cb: re-extract the subscriber after each callback, so one that
            destroys or replaces it croaks instead of using a freed pointer.
          - REEXTRACT guards re-check SvROK first (a replaced invocant croaks).
          - poll: compute the sequence displacement wraparound-safe, avoiding
            signed-overflow UB (previously masked by Perl's -fwrapv).
          - xt/stress.t: use a progress-based stall check, not a 30s deadline.
          - Reject headers whose data offset and arena size overflow.
          - Fetch get-magic on optional arguments before testing them.

0.07  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.06  2026-06-01
    - Str publish_multi: hoist SvPV out of the mutex so a tied/overloaded
      argument that dies mid-batch can't abandon the lock and deadlock peers

0.05  2026-05-27
    - poll_wait: fix missed-wakeup race; increment sub_waiters before
      polling and use SEQ_CST ordering with publisher fence
    - Str: reject capacity * (msg_size+8) > 4GB at create to preserve
      arena safety invariant (silent UINT32_MAX cap could let a publish
      to slot K overwrite slot N's still-current data)


0.04  2026-04-26
    - create: init header under flock
    - harden DESTROY (handles + subscribers)
    - factor MAKE OBJ macro
    - eventfd consume returns accumulated count
    - stat recoveries uint64 t; aarch64 CI matrix


0.03  2026-04-12
    - Add SEE ALSO cross-links to family modules


0.02  2026-04-10
    - XS::Parse::Keyword is now a required dependency

0.01  2026-04-09
    - Initial release
