GitHunt

CI
Codecov
Examples
FAQ
Gitter
Developer Meetup
Roadmap

iceoryx2 - Zero-Copy Lock-Free IPC with a Rust Core

Introduction

Welcome to iceoryx2, the efficient, and ultra-low latency inter-process
communication middleware. This library is designed to provide you with fast and
reliable zero-copy and lock-free inter-process communication mechanisms.

So if you want to communicate efficiently between multiple processes or
applications iceoryx2 is for you. With iceoryx2, you can:

  • Send huge amounts of data using a publish/subscribe, request/response,
    pipeline (planned) or blackboard pattern (planned), making it ideal
    for scenarios where large datasets need to be shared.
  • Exchange signals through events, enabling quick and reliable signaling between
    processes.

iceoryx2 is based on a service-oriented architecture (SOA) and facilitates
seamless inter-process communication (IPC).

It is all about providing a seamless experience for inter-process communication,
featuring versatile messaging patterns. Whether you're diving into
publish-subscribe, events, request-response, or the promise of upcoming features
like pipelines, and blackboard, iceoryx2 has you covered.

One of the features of iceoryx2 is its consistently low transmission latency
regardless of payload size, ensuring a predictable and reliable communication
experience.

iceoryx2's origins can be traced back to
iceoryx. By overcoming past
technical debts and refining the architecture, iceoryx2 enables the modularity
we've always desired.

In the near future, iceoryx2 is poised to support at least the same feature set
and platforms as iceoryx, ensuring
a seamless transition and offering enhanced capabilities for your inter-process
communication needs. So, if you're looking for lightning-fast, cross-platform
communication that doesn't compromise on performance or modularity, iceoryx2 is
your answer.

Feel free to join the Gitter Chat or
the Developer Meetup
if you want to have a chat with the developers of iceoryx.

Performance

Comparision Of Mechanisms

benchmark of different mechanism

Benchmark-System

  • CPU: Intel i7 13700h
  • OS: Linux 6.10.10-arch1-1 #1 SMP PREEMPT_DYNAMIC
  • Compiler:
    • rustc 1.81.0
    • gcc 14.2.1 20240910

Comparision Of Architectures

benchmark on different systems

Documentation

User Documentation

Contributor Documentation

API References

Supported Platforms

The support levels can be adjusted when required.

Operating System State Current Support Level Target Support Level
Android proof-of-concept1 - tier 1
Bare Metal proof-of-concept2 - tier 1
FreeBSD done tier 2 tier 1
FreeRTOS planned - tier 2
ThreadX planned - tier 2
iOS planned - tier 2
Linux (x86_64) done tier 2 tier 1
Linux (aarch64) done tier 2 tier 1
Linux (32-bit) done tier 2 tier 1
Mac OS done tier 2 tier 2
QNX 7.1 done tier 3 tier 1
QNX 8.0 done tier 3 tier 1
VxWorks proof-of-concept3 - tier 1
WatchOS planned - tier 2
Windows done tier 2 tier 2
  • tier 1 - All safety and security features are working.
  • tier 2 - Works with a restricted security and safety feature set.
  • tier 3 - Not tested in our CI, so may or may not compile and run.

Note

Some commercial operating systems require expensive licenses and the support
for these platforms relies on funding for the license costs.

Note

Yocto recipes are available at meta-iceoryx2

Language Bindings

Language State
C / C++ done
Python done
Go planned
C# done4
Java planned
Kotlin planned
Lua planned
Swift planned
Zig planned

Commercial Support

ekxide IO GmbH
info@ekxide.io
  • commercial extensions and tooling
  • custom feature development
  • training and consulting
  • integration support
  • engineering services around the iceoryx ecosystem

Thanks To All Contributors

Thanks to everyone who has contributed to iceoryx2. Without their passion and
dedication, the project wouldn't thrive. A list of people who have committed
code can be found on github.
However, contributions are not limited to code - testing the software, reporting
bugs, and spreading the word about iceoryx2 are all equally valuable. A big
thank you as well to those 'invisible' contributors who play a crucial role
behind the scenes.

Footnotes

  1. A proof-of-concept for Android platform support is available. Currently
    only local, inter-thread communication works.

  2. A proof-of-concept with no_std bare-metal support is available. The event
    messaging-pattern does not yet work and the memory usage is not yet optimized.

  3. A proof-of-concept for VxWorks platform support is available on this
    branch

    on the ekxide fork

  4. C# bindings are available in a separate repository. May not be up to date
    with main.