Revision history for Data-ReqRep-Shared
0.04 2026-05-27
- slot_acquire: owner_pid CAS gates the state CAS, ACQUIRE on loads
(fixes recovery ABA where a fresh free+acquire could clobber a live owner)
- reply: re-check generation before publishing CAS and recover post-CAS
via gen bump (fixes TOCTOU where cancel+re-acquire could let a reply
land on the wrong owner's slot)
- slot_release: two-step CAS (owner_pid mypid→0, then state from→FREE)
prevents blind state-store from clobbering a freshly-acquired slot
- compute_layout: resp_stride in uint64 (was wrapping for resp_data_max
near UINT32_MAX → replies overflowing into next slot)
- validate_header: reject files with resp_stride too small for slot data
- size(): read head before tail and clamp tail<head to 0
- plug mmap/fd leak in create_int / create_int_memfd on calloc OOM
0.03 2026-04-26
- arena underflow guard; init under flock
- strict fd validation; harden DESTROY
- hoist SV construction out of recv multi/drain mutex
- class prefix on client croaks
- eventfd consume returns count; MAKE OBJ macro fix
- idempotent eventfd; aarch64 CI matrix
0.02 2026-04-12
- Add SEE ALSO cross-links to family modules
0.01 2026-04-10
- Initial release
- Str variant: mutex-protected request queue with circular arena
- Int variant: lock-free Vyukov MPMC request queue
- Per-slot futex for targeted response delivery
- Generation counter for ABA-safe cancel/recycle
- PID-based stale lock and slot recovery
- Dual eventfd for async EV integration
- File-backed, anonymous, and memfd shared memory