Popularity
3.6
Growing
Activity
9.0
Growing
280
30
48

Description

The enhanced communication abstraction layer (eCAL) is a middleware that enables scalable, high performance interprocess communication on a single computer node or between different nodes in a computer network. The design is inspired by known Data Distribution Service for Real-Time Systems (see Data distribution service on wikipedia). The current eCAL implementation realizes a subset of such a DDS system, there is only a basic support for Quality of Service (QoS) driven data transport (best effort and reliable).

eCAL is designed for typical cloud computing scenarios where different processes exchange their I/O’s using a publisher/subscriber pattern. The data exchange is based on so called topics. A topic wraps the payload that should be exchanged with additional informations like a unique name, a type and a description. A topic can be connected to more than one publisher and/or subscriber. These are the basic elements of the eCAL API.

Programming language: C++
License: Apache License 2.0
Latest version: v5.7.5

eCAL alternatives and similar libraries

Based on the "Inter-process communication" category.
Alternatively, view eCAL alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of eCAL or a related project?

Add another 'Inter-process communication' Library

README

eCAL - enhanced Communication Abstraction Layer

Copyright (c) 2020, Continental Corporation.

🏠 http://ecal.io

License

[License](LICENSE.txt)

Build States

Build Windows Server 2019

Build Ubuntu 18.04

Build Ubuntu 20.04

Build Ubuntu 20.04 (Iceoryx)

Build macOS Catalina 10.15

Preface

The enhanced Communication Abstraction Layer (eCAL) is a middleware that enables scalable, high performance interprocess communication on a single computer node or between different nodes in a computer network. eCAL uses a publish / subscribe pattern to automatically connect different nodes in the network. It's choosing the best available data transport mechanisms - UDP for network communication and High Performance Shared Memory for local communication.

eCAL

  • is fast (1 - 10 GB/s depends on payload size - check measured performance here)
  • provides publish / subscribe and client / server patterns
  • is designed brokerless
  • provides a C++ and C interface for easy integration into other languages (like python or csharp)
  • supports intel and arm platforms
  • has powerful tools for recording, replay and monitoring all your data flows - decentralized
  • integrates gently into your ROS2 environement with the brand new eCAL RMW

eCAL runs on

  • Windows (stable)
  • Linux (stable)
  • QNX (stable)
  • MacOS (experimental)
  • FreeBSD (experimental)

Really ?? Just another pub/sub middleware ? Why ? What is the different to my beloved fully featured DDS ?

  • it's stupid simple - no complex configuration effort for all kind of communication details or QOS settings
  • it's message protocol agnostic - choose the message protocol that fits to your needs like Google Protobuf, CapnProto, Flatbuffers ..
  • it's using the standardized recording format HDF5

What is on the roadmap ?

  • more language bindings (rust, go-lang)
  • and ?? tell us about your use case :-)

[email protected] using eCAL


*Note that all licence references and agreements mentioned in the eCAL README section above are relevant to that project's source code only.