Revision history for Data::Pool::Shared

0.10      2026-09-26
          - recover_stale frees slots of processes killed mid alloc or free.
          - New file format: recreate files from 0.09 or earlier.
          - Segments are reserved, so a full filesystem fails the constructor;
            DATA_POOL_SHARED_SPARSE=1 skips the reservation.
          - A failed create no longer leaves a full-size file behind.

0.09      2026-08-12
          - A file left by an interrupted create is recovered, not refused.
          - Hardening against tied and overloaded arguments.
          - unlink() reports a failed removal; a missing file is no error.

0.08      2026-07-22
          - Fix a use-after-free in Raw/Str set() when the value's magic
            destroys the pool; it now croaks.
          - Reject crafted headers whose layout overflows 64 bits.
          - A guard no longer frees the parent's slot from a forked child.
          - alloc_n rejects counts above 2^32; Guard has a $VERSION.

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 object pool (Raw, I64, F64, I32, Str) with
      CAS bitmap allocation.
    - Futex-blocking alloc, recover_stale, alloc_n/free_n, zero-copy slot_sv,
      guards.
    - File, anonymous or memfd backing; eventfd wakeup; atomic ops on I64/I32.
