Revision history for Data::Graph::Shared

0.06      2026-08-12
          - Recover a file left behind by an interrupted create instead of
            leaving the path unopenable.
          - Frozen read-only mode: freeze() seals a file-backed structure;
            new_readonly() maps it O_RDONLY and queries it lock-free.
          - 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.
          - Document which methods return false for an id whose node is gone and
            which croak; add_edge naming a removed node adds nothing and reports
            it only through its return value.

0.05      2026-07-22
          - Fix a use-after-free in add_edge(): an overloaded or tied weight
            argument runs Perl that can destroy the graph, after which the
            already-captured handle was still used. Such a call now croaks.
          - Cache mapping geometry from one validated snapshot at attach.
          - Reject node indexes >= 2^32 instead of truncating them.

0.04  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.03  2026-06-01
    - new/new_memfd: reject max_nodes/max_edges > 2^32 instead of silently
      truncating the uint32 cast to a tiny graph

0.02  2026-04-26
    - atomic RMW + lifecycle parity
    - REQUIRE NODE macro; notify() returns bool
    - eventfd consume returns SV*
    - hoist Perl alloc out of neighbors mutex
    - idempotent eventfd; aarch64 CI matrix


0.01  2026-04-12
    - Initial release
