// the find
eclipse-iceoryx/iceoryx
Eclipse iceoryx™ - true zero-copy inter-process-communication
iceoryx is a shared-memory IPC middleware that achieves true zero-copy by having publishers write directly into a pre-allocated shared segment that subscribers read without any copying. It originated in automotive (AUTOSAR Adaptive) and is the transport layer behind ROS 2's rmw_iceoryx and Cyclone DDS. Worth noting up front: this C++ version is in maintenance mode — iceoryx2 (Rust) is where active development is happening.
The zero-copy claim is real, not marketing: payload size has no effect on transfer latency because data never moves, only a pointer does. Real production adoption in ROS 2, Cyclone DDS, and Apex.AI means the API surface has been stress-tested at scale, not just in examples. The design documentation is unusually thorough — lock-free queue design, relocatable pointer internals, error-handling philosophy — you can actually understand why decisions were made. The C binding (iceoryx_binding_c) is a proper first-class citizen, not an afterthought, which makes FFI from Rust or Python via ctypes workable.
RouDi, the central daemon that manages shared memory segments, is a single point of failure: if it crashes, all IPC in the system stops cold. The memory pool is pre-allocated at startup with fixed sizes you configure upfront; get those wrong and you get runtime allocation failures, not a graceful backpressure signal. Payload types must be relocatable — no raw pointers, no virtual dispatch, no std::string — which is a real constraint that will hit you when you try to send anything non-trivial and forces you into iceoryx's fixed-size vector/string types. And if you're starting a new project today, adopting the C++ version means inheriting a codebase the maintainers have explicitly deprioritized in favor of the Rust rewrite.