Zenoh-Flow is a distributed data flow programming framework based on Zenoh. Both of them are Eclipse Foundation open-source projects. Zenoh-Flow focuses on performance, real-time capabilities, and control over these aspects thanks to a declarative approach.
It is developed in Rust, a programming language gaining traction in the automotive industry due to its memory and concurrency safety guarantees.
Genesis of Zenoh-Flow
It started as an exploration of the potential of Zenoh as a performant and easy-to-use building block for distributed applications.
The aim was to replace Pylot’s data flow framework, assess gains in ease of use, deployment, and performance. This first iteration has already yielded improvements on all fronts!
In particular, it removed a bottleneck in the processing, which translated to a continuous rendering of the autonomous driving simulator in some scenarios.
Zenoh-Flow for Software Defined Vehicle Architectures
It aims to offer several benefits compared to existing solutions. Some of these key benefits include:
- Declarative approach allows quick modification of data flow, ensuring ease of use and fine-grained control for developers and integrators.
- It enables seamless integration with automotive middleware, ensuring effective communication and data transfer across systems.
- Real-time capabilities include task priority association, time budget allocation, CPU core pinning, and task parking.
Julien Loudet, the Project Lead, hosted a presentation during the Zenoh User Meeting 2023 and delved deeper into the its performance and what’s coming next.
Real-time Capabilities
Real-time capabilities are essential for the automotive industry and, in general, for any safety-critical application. Hence, one of the streamlining mechanism’s main objectives is to offer precise yet easily adjustable control over each computation
This control will eventually allow to address these requirements. The possibility to easily (though safely) tweak the execution will allow for quick development cycles and, ultimately, faster delivery.
In addition to what we describe below, these offerings position Zenoh-Flow as a valuable framework for future automotive developments.
Assigning Priorities
When working with a streaming framework, it’s crucial to prioritize tasks. Prioritizing ensures higher-priority tasks are executed first as needed. By assigning priorities, you can ensure that higher-priority tasks are executed first, depending on the specific requirements of your environment.
This allows for efficient task management, especially in real-time computing scenarios
In addition to this static assignment, it’ll be able to dynamically adjust priorities, catering to the unique needs of automotive applications in changing environments and ensuring seamless task execution.
CPU Core Pinning
Though in a prototyping stage, it offers the ability to pin a task to a specific CPU core, providing control over task allocation and ensuring optimal performance.
By pinning a task to a specific CPU core, you can effectively manage resource allocation and guarantee safety in automotive applications.
This feature is another major step towards precise control over computational resources, enhancing the real-time capabilities of Zenoh-Flow and making it a valuable framework for automotive developments.
Integration with Automotive Middleware
Its integration with automotive middleware is a critical aspect that ensures effective communication and data transfer within the automotive stack.
By leveraging Zenoh, it’s already compatible with automotive middleware, such as Cyclone DDS or the upcoming µProtocol. This guarantees efficient data transfer, making it a valuable framework for future automotive developments.
This integration is another example of how Zenoh-Flow caters to the specific requirements of automotive applications.
Rust Language and Zenoh-Flow
Zenoh-Flow, in Rust, a programming language gaining automotive traction, offers control over data flow for software-defined vehicles.
Rust has been recognised and certified by industry leaders. The first RUST compiler was certified for ISO 26262. Testimonials from Volvo engineers make it an ideal choice for automotive applications. Renault does it as well and Frédéric Ameye (a Cybersecurity Architect previously working at Renault) gave a talk about it on RUST Nation UK in 2024.
Limitations in languages like C and C++ drive rising preference for Rust in modern development, particularly in autonomous driving.
Conclusion
As an open-source initiative, Zenoh-Flow is continuously evolving to meet the dynamic demands of the automotive industry.
Ongoing work on custom scheduling, real-time capabilities, and seamless integration positions Zenoh-Flow as a valuable resource for future automotive apps.
The framework’s development in Rust, a programming language gaining traction in the automotive industry. This further solidifies its potential for growth and innovation.
Do you want to know more about it?
If you want to try the code yourself, Julien Loudet wrote a blog post on how to get started. Read it, hack it and let us know your thoughts.
Expect to see significant advancements and contributions in the coming years. It’ll be the leading framework for real-time computing and data flow programming in the automotive sector!
As an open-source initiative, Zenoh-Flow encourages contributions from the development community. More information is available on GitHub. If you have questions, send us an email at contact@zettascale.tech or talk with our engineers on Discord.