All Projects → eclipse-iceoryx → Iceoryx

eclipse-iceoryx / Iceoryx

Licence: apache-2.0
iceoryx - true zero-copy inter-process-communication

Programming Languages

cpp
1120 projects

Projects that are alternatives of or similar to Iceoryx

Ecal
eCAL - enhanced Communication Abstraction Layer
Stars: ✭ 292 (+40.38%)
Mutual labels:  middleware, shared-memory, ipc
IPC.Bond
IPC.Bond is an extension of IPC library that provides inter-process communication using shared memory on Windows with Bond serialization.
Stars: ✭ 26 (-87.5%)
Mutual labels:  ipc, shared-memory
pg-ipc
IPC over PostgreSQL LISTEN/NOTIFY/UNLISTEN exposed as an EventEmitter
Stars: ✭ 27 (-87.02%)
Mutual labels:  ipc, pubsub
Msngr.js
An asynchronous messaging library, written in JavaScript, for node and the web browser
Stars: ✭ 337 (+62.02%)
Mutual labels:  middleware, pubsub
reactor-aeron
A reactive driver for Aeron transport (https://github.com/real-logic/aeron)
Stars: ✭ 43 (-79.33%)
Mutual labels:  ipc, shared-memory
Redux Electron Ipc
Redux Electron IPC Middleware
Stars: ✭ 54 (-74.04%)
Mutual labels:  middleware, ipc
Ipc
IPC is a C++ library that provides inter-process communication using shared memory on Windows. A .NET wrapper is available which allows interaction with C++ as well.
Stars: ✭ 332 (+59.62%)
Mutual labels:  shared-memory, ipc
Yarp
YARP - Yet Another Robot Platform
Stars: ✭ 358 (+72.12%)
Mutual labels:  middleware, ipc
Cpp Ipc
C++ IPC Library: A high-performance inter-process communication using shared memory on Linux/Windows.
Stars: ✭ 420 (+101.92%)
Mutual labels:  shared-memory, ipc
Sharedhashfile
Share Hash Tables With Stable Key Hints Stored In Memory Mapped Files Between Arbitrary Processes
Stars: ✭ 380 (+82.69%)
Mutual labels:  shared-memory, ipc
Jocket
Low-latency java socket implementation (using shared memory)
Stars: ✭ 83 (-60.1%)
Mutual labels:  shared-memory, ipc
Traffic Shm
traffic-shm (Anna) is a Java based lock free IPC library.
Stars: ✭ 72 (-65.38%)
Mutual labels:  shared-memory, ipc
Shadesmar
Fast C++ IPC using shared memory (with msgpack)
Stars: ✭ 126 (-39.42%)
Mutual labels:  shared-memory, ipc
Node Pg Pubsub
A Publish/Subscribe implementation on top of PostgreSQL NOTIFY/LISTEN
Stars: ✭ 194 (-6.73%)
Mutual labels:  pubsub
Httpkit
⚡️ High-level, High-performance HTTP(S) Clients/Servers in Reason/OCaml
Stars: ✭ 198 (-4.81%)
Mutual labels:  middleware
Laravel Shield
A HTTP basic auth middleware for Laravel
Stars: ✭ 193 (-7.21%)
Mutual labels:  middleware
Amateras Modeler
UML and ER-diagram editor for Eclipse
Stars: ✭ 190 (-8.65%)
Mutual labels:  eclipse
Erlide eclipse
Eclipse IDE for Erlang
Stars: ✭ 206 (-0.96%)
Mutual labels:  eclipse
Bndtools
ARCHIVED: The contents of this repo have been merged into the `bnd` repo.
Stars: ✭ 197 (-5.29%)
Mutual labels:  eclipse
Vkbottle
Homogenic! Customizable asynchronous VK API framework
Stars: ✭ 191 (-8.17%)
Mutual labels:  middleware

iceoryx - true zero-copy inter-process-communication

Build & Test Integrationtests Gitter License Codecov Sanitize

Introduction

Great that you've made it to this little Eclipse project! Let's get you started by providing a quick background tour, introducing the project scope and all you need for installation and a first running example.

So first off: What is iceoryx?

iceoryx is an inter-process-communication (IPC) middleware for various operating systems (currently we support Linux, MacOS and QNX). It has its origins in the automotive industry, where large amounts of data have to be transferred between different processes when it comes to driver assistance or automated driving systems. However, the efficient communication mechanisms can also be applied to a wider range of use cases, e.g. in the field of robotics or game development.

iceoryx uses a true zero-copy, shared memory approach that allows to transfer data from publishers to subscribers without a single copy. This ensures data transmissions with constant latency, regardless of the size of the payload. For more information have a look at the 1000 words iceoryx introduction

You're right, middleware is a cluttered term and can somehow be all or nothing, so let's talk about the goals and non-goals of iceoryx.

It's all about the API?!

Don't get too frighten of the API when strolling through the codebase. Think of iceoryx's API as a "plumbing" one ("plumbing" as defined in Git, which means low-level). We're not using the "plumbing" API ourselves, but instead a typed API. The normal use case is that iceoryx is integrated as high-performance IPC transport layer in a bigger framework with additional API layers. An example for such a "porcelain" API would be ROS2. Others are listed in the next section.

Where is Eclipse iceoryx used?

Framework Description
ROS2 Eclipse iceoryx can be used inside the robot operating system with rmw_iceoryx
eCAL Open-source framework from Continental AG supporting pub/sub and various message protocols
RTA-VRTE Adaptive AUTOSAR platform software framework for vehicle computer from ETAS GmbH
Cyclone DDS Performant and robust open-source DDS implementation maintained by ADLINK Technology Inc.

Build and install

You can find the build and installation guidelines here.

Examples

After you've built all the necessary things, you can continue playing around with the examples.

Build and run in a Docker environment

If you want to avoid installing anything on your host machine but you have Docker installed, it is possible to use it to build and run iceoryx applications.

Please see the dedicated README.md for information on how to do this.

Documentation

Targeted quality levels & platforms

Quality level are 5 to 1, where 1 is highest level.

CMake project/target QNX Linux, Windows, MacOS Comment
iceoryx_examples 5 5 All example code in this folder
iceoryx_binding_c 4 4 Not final and can change in the near future
iceoryx_dds 4 4
iceoryx_meta 5 5
iceoryx_posh 1, 2 4 Will be split into separate targets
iceoryx_utils 1 4
iceoryx_introspection 5 5

Is something missing or you've got ideas for other nifty examples? Jump right away to the next section!

Contribute

Please refer to the CONTRIBUTING.md for a quick read-up about what to consider if you want to contribute.

Planned features

Get to know the upcoming features and the project scope in PLANNED_FEATURES.md.

Innovations enabled by iceoryx

Name Description Technologies
Larry.Robotics An iceoryx demonstrator for tinker, thinker and toddler Demonstrator
iceoryx-rs Experimental Rust wrapper for iceoryx Rust
IceRay An iceoryx introspection client written in Rust Rust

Governance & maintainers

Please have a look at the GOVERNANCE.md.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].