Revision history for Data::Pool::Shared

0.08      2026-07-22
          - Fix a use-after-free in set() for the Raw and Str pools: the value
            argument is a bare SV, so its overload or tie magic runs Perl that
            can destroy the pool, after which the already-captured handle was
            still used. Such a call now croaks.
          - Reject a crafted header whose full layout overflows 64 bits. The
            attach-time check counted only the header, while the create paths
            counted header + bitmap + owners + data, so a wrapped total_size
            could place the slot pointers outside the mapping.
          - Give Data::Pool::Shared::Guard a $VERSION so PAUSE indexes it.
          - Reject alloc_n counts above 2^32.
          - A guard no longer frees the parent slot from a forked child.

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).
    - new() on an existing backing file now requires a matching capacity and
      elem_size, croaking on a mismatch (previously the requested geometry
      was silently ignored).

0.06  2026-06-30
    - scan_from($slot): pin the per-handle allocation scan start for deterministic,
      sequential id order (overrides the getpid()-derived spread default). Purely
      additive; inherited by all typed variants.

0.05  2026-06-01
    - alloc_n/free_n: free temp buffer via SAVEFREEPV (leak on OOM-croak)

0.04  2026-05-26
    - recover_stale: owner re-check around bitmap CAS + saturating-sub on used
      (fixes ABA race where a freshly allocated slot was incorrectly freed)
    - pool_alloc: compare against hdr->capacity directly (fixes truncation
      for capacity > UINT32_MAX)

0.03  2026-04-26
    - -Duselongdouble test fix (RT#176378)
    - fd validation hardening
    - stat recoveries uint64 t
    - idempotent eventfd; aarch64 CI matrix


0.02  2026-04-13
    - Add SEE ALSO cross-links to all family modules
    - Fix eventfd_set self-assignment guard
    - Add capacity*elem_size overflow check

0.01  2026-04-11
    - Initial release
    - Fixed-size shared-memory object pool with CAS bitmap allocation
    - Variants: Raw, I64, F64, I32, Str
    - Futex-based blocking when pool is exhausted
    - PID-based stale slot recovery (recover_stale)
    - Batch operations: alloc_n, free_n
    - Zero-copy read: slot_sv
    - Guard objects for auto-free on scope exit
    - File-backed, anonymous, and memfd backing modes
    - eventfd integration for event-loop wakeup
    - Atomic ops: cas, cmpxchg, xchg, add, incr, decr (I64/I32)
