Skip to content

zenoh unifies data in motion, data in-use, data at rest and computations. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.

License

Notifications You must be signed in to change notification settings

eclipse-zenoh/zenoh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI Documentation Status codecov Discussion Discord License License

Eclipse Zenoh

Eclipse Zenoh: Zero Overhead Pub/Sub, Store/Query and Compute.

Zenoh (pronounced /zeno/) unifies data in motion, data at rest, and computations. It carefully blends traditional pub/sub with geo-distributed storage, queries, and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.

Check the website zenoh.io for more information and installation instructions.

See also the roadmap for more detailed technical information.

Structure of the Repository

This repository contains the following elements:

  • zenoh Rust crate

    This crate is the primary and reference implementation of the Zenoh protocol. The Zenoh libraries for other languages are bindings to this Rust implementation, except for the pure-C zenoh-pico (see the "Language Support" section below).

  • zenoh-ext Rust crate

    This crate contains extended components of Zenoh:

    • AdvancedPublisher / AdvancedSubscriber - APIs for sending/receiving data with advanced delivery guarantees.
    • Data serialization support. This serialization is lightweight and universal for all zenoh bindings, which simplifies interoperability.
  • zenohd router binary

    The Zenoh router is a standalone daemon used to support Zenoh network infrastructure.

  • plugins

    The crates related to plugin support in zenohd.

  • commons

    The internal crates used by zenoh. These crates are not intended to be imported directly, and their public APIs can be changed at any time. Stable APIs are provided by zenoh and zenoh-ext only.

  • examples

    Zenoh usage examples. These examples have a double purpose: they not only demonstrate writing Zenoh applications in Rust but also serve as a set of tools for experimenting with and testing Zenoh functionality.

Documentation

Build and run

Install Cargo and Rust. If you already have the Rust toolchain installed, make sure it is up to date with:

rustup update

Zenoh can be successfully compiled with Rust stable (>= 1.75.0), but some of its dependencies may require newer Rust versions. The zenoh crate itself doesn't lock its dependencies with "=" to avoid conflicts. Instead, we provide the zenoh-pinned-deps-1-75 crate with zenoh dependencies locked to Rust 1.75-compatible versions.

To build Zenoh, simply type the command below after having followed the previous instructions:

cargo build --release --all-targets

There are multiple features in zenoh; see the full list and descriptions on docs.rs. For example, to use shared memory, it must be explicitly enabled:

zenoh = {version = "1.5.1", features = ["shared-memory"]}

Examples

Examples can be executed with Cargo, or directly from target/release/examples. When running with Cargo, use -- to pass command line arguments to the examples:

Publish/Subscribe

cargo run --example z_sub
cargo run --example z_pub

Query/Reply

cargo run --example z_queryable
cargo run --example z_get

Zenohd Router and Plugins

The zenohd router can be run with the command cargo run or from target/release/zenohd. When running with Cargo, use -- to pass command line arguments to zenohd:

cargo run -- --config DEFAULT_CONFIG.json5

The router's purpose is to support Zenoh network infrastructure and provide additional services using plugins. See more details and a directory of available plugins in the zenohd readme.

Language Support

Troubleshooting

In case of trouble, please first check this page to see if the issue and its cause are already known. Otherwise, you can ask a question on the Zenoh Discord server, or create an issue.

About

zenoh unifies data in motion, data in-use, data at rest and computations. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published