All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project aims to follow Semantic Versioning.
spscringas a third-party submodule for the shared-memory SPSC ring, wait/notify, and layout ABI.shm_channelproducer and consumer wrappers over the shared-memory transport.- C API
xproc_c_message_metaplus send/peek helpers that accept or return per-message metadata. - Timed
reserve_foron ring writers, withsend_*_fordelegating to that path.
- In-tree
include/xproc/ringbufferandinclude/xproc/syncimplementations are replaced byspscring. - Poll/peek callbacks and send APIs take
message_meta. Variable-length slots carry it on the wire; fixed-size slots remain payload-only, sosend_fixed_*_with_meta/xproc_c_producer_send_fixed_sized_with_metakeep the argument for compatibility and readers still see default (zero) metadata. - Optional JSON and Protobuf codec integrations and related CMake options are removed.
- Linux
atomic_wait/atomic_notifynow use process-sharedFUTEX_WAIT/FUTEX_WAKE, so cross-process shared-memory waiters wake instead of blocking indefinitely. - Windows CI generator and CMake policy settings for Visual Studio 2022 / 2026.
- Shared-library build option (
XPROC_BUILD_SHARED) and install updates. - pkg-config generation/install support (
xproc.pc). - Docker-based CI workflow.
- Benchmark target split with
xproc_run_benchmarks. - Sphinx-compatible RST documentation under
docs/. - Project support files (
SECURITY.md,CONTRIBUTING.md,CODEOWNERS). - Initial
capi/C API wrapper with opaque handles, byte-copy send/receive APIs, structured layout errors, option validation, and smoke tests.
- Benchmark layout and execution model for better suite-level control.
- Transport validation now enforces socket connect-mode port requirements, retry bounds, and role-specific producer / consumer / observer expectations more explicitly.
- Socket transport now resolves IPv4 / IPv6 peers via
getaddrinfo(AF_UNSPEC)and prefers a dual-stack IPv6 listener with IPv4 fallback.
- Benchmark crash paths related to invalid benchmark argument usage and ringbuffer benchmark stability.
- Core xproc IPC/ringbuffer APIs, tests, examples, and CI foundation.