mrkeyoor.com_
Sun 01 Nov 18:06 UTC
Dataevaluationupdated 31 Oct 2026

zenoh review

Evaluate Eclipse Zenoh when your network needs pub/sub together with queries and stored data, and you can validate the deployment yourself. Zenoh combines pub/sub, storage, queries and computation. Our run on September 17, 2026, at commit 9fcd9cb built successfully but the test command failed. That result warrants investigation before adoption; it does not establish how your workload will behave.

+8stars / 7d
Verdict

Evaluate Zenoh for its combined pub/sub, query and storage model when that combination solves an application requirement. Our September 17, 2026 run at commit 9fcd9cb built successfully, but cargo test exited with code 101. Resolve the observed close timeout and validate your deployment before adopting it. Choose Mosquitto for an MQTT server requirement or evaluate Cyclone DDS for a DDS implementation; Zenoh bridges may instead complement an existing DDS system.

We ran it

Lab card: what happened when we ran zenohScreenshot of zenoh (zenoh.io)
Install✓ · 26s526 packages
Build✓ · 406s
Tests✗ · 757s164 passed · 2 failed of 166 (cargo test)
Repo790 files~214,777 lines of source · 8 MB · 8 CI workflows

Answers from our run

Does zenoh build from source?

Dependencies installed in 26 seconds (526 packages), and the build succeeded in 406 seconds. We cloned commit 9fcd9cb into a clean Debian container with 3 CPUs and no project-specific setup.

Do zenoh's tests pass?

No. The project's own test command finished in 757 seconds and reported 164 passed, 2 failed (cargo test).

Who should not use zenoh?

Teams requiring a passing test command on the measured commit before evaluation can proceed.

What are the alternatives to zenoh?

Eclipse Mosquitto, Eclipse Cyclone DDS. Evaluate Zenoh for its combined pub/sub, query and storage model when that combination solves an application requirement.

Setup2/5Material friction under the visible rubric: our build took 406 seconds and cargo test exited with code 101 after 757 seconds. Stored parser totals are not verified unique counts.
Docs4/5Strong evidence within the reviewed scope: the README and router documentation explain crate boundaries, compiler requirements, features and dynamic-plugin compatibility. Deployment completeness was not tested.
Community4/5Scoped to visible collaboration and contribution routes: the 1.10.1 release credits multiple contributors, and the README provides issue and Discord support routes. Adoption and support responsiveness were not measured.
Maturity3/5Usable with important qualifications under the visible rubric: release 1.10.1 documents maintenance fixes, but our test command failed and production recovery and workload behavior remain untested.

Who it’s for

Rust teams evaluating a shared networking system for pub/sub, queries and storage.
Operators prepared to configure Zenoh routers and keep dynamic plugins compatible with their builds.
DDS or ROS 2 teams evaluating a Zenoh bridge alongside their existing middleware.

Who it’s NOT for

Teams requiring a passing test command on the measured commit before evaluation can proceed.
Operators who need to upgrade dynamic plugins independently of the router's compiler, Zenoh dependency and features.
Projects whose only requirement is an MQTT server for existing MQTT clients. Compare Mosquitto first.
Teams seeking evidence here of production throughput, recovery behavior or deployment compatibility. Our recorded run did not establish those outcomes.

Setup reality

Our run took place on September 17, 2026, at commit 9fcd9cb in our lab-rust:1 sandbox with 3 CPUs and 12 GB memory. The harness recorded installation success in 26 seconds, a successful build in 406 seconds, and a failed cargo test command after 757 seconds with exit code 101. The stored dependency count is 526.

The attached stored parser summaries contain 164 passed, 2 failed and 166 total. Legacy output repeats suite summaries, so these figures may double-count suites and are not verified unique or exhaustive test counts. They remain the recorded aggregates; the named raw failure is discussed separately below without substituting its suite figures for those aggregates.

The README documents Rust stable 1.75.0 or newer, while warning that dependencies may need a newer compiler. Shared memory requires an explicit feature. Dynamic plugins also require matching build inputs. The successful build does not establish that a deployed router, bridge, storage service or application workload was exercised.

Should you evaluate Zenoh?

Zenoh combines pub/sub, storage, queries and computation. Evaluate that combination if your application needs both pushed updates and access to queried or stored data. The project README describes the combined model; it does not establish a performance advantage for your network. Our recorded build and test results give you a starting point for evaluation, not deployment approval.

The repository contains the reference Rust implementation, the zenoh-ext crate, the zenohd router, plugin support and examples. The README limits stable APIs to zenoh and zenoh-ext; internal commons APIs can change at any time. Most other language libraries live in separate repositories, and zenoh-pico is a pure C implementation rather than a Rust binding. Check the binding you intend to ship as its own dependency.

What our sandbox established

Our run on September 17, 2026, used commit 9fcd9cb, whose full hash is 9fcd9cb5d364192c3e8a27e66de76f4bc750d1d5. Installation succeeded in 26 seconds and the build succeeded in 406 seconds. The test command failed after 757 seconds with exit code 101; the harness did not mark it timed out.

Our harness records command success, exit status, elapsed time and parsed test summaries separately. The attached stored parser summaries report 164 passed, 2 failed and 166 total. Replayed Cargo summaries may have been counted more than once, so those aggregates cannot support a unique test count, a pass percentage or a claim that the full suite completed.

The raw tail identifies test_callback_drop_on_undeclare_liveliness_subscriber as a failing test. It panicked after a close operation timed out. That is an observation within the callback_drop_on_undeclare target, not independent confirmation of the aggregate failure count. The tail also contains ignored tests; ignored tests are not failures. It does not establish a second distinct failing case or the cause of the observed timeout.

The build tail reports a dev profile, so this run should not be described as a release-build benchmark. The recorded build duration is the harness wall-clock value, rather than the shorter compiler duration printed inside the tail.

The supplied record contains no separate workload, CLI deployment, throughput, latency, soak or recovery test. It also contains no audit result, so advisory findings and scan coverage are unknown. See how MrKeyoor tests for provenance and general limits. That methodology page was retrieved later and does not establish which current procedures applied to this older run. No new execution supports this correction.

Plan router and plugin builds together

Dynamic plugins should use the same Rust version, Zenoh version or commit, and feature set as zenohd. The router documentation explains that Rust lacks a stable ABI, that some mismatches cause rejection, and that incompatible shared memory layouts can cause a SIGSEGV crash. Keep the router and its dynamic plugins in one reproducible build and validation process.

The router supports explicit listen and connect endpoints, JSON5 or YAML configuration, and multicast scouting responses that can be disabled. Its bundled REST and storage-manager plugins provide additional services. These are documented capabilities, not deployments validated by our build. Test discovery and configured connections under your actual network policy, then check plugin loading and recovery behavior.

The compiler floor also needs attention. The README says Zenoh can compile with Rust stable 1.75.0 or newer but warns that dependencies may require newer versions. It provides a separate pinned-dependencies crate for compatibility with Rust 1.75. Resolve and test the dependencies and features you will actually deploy before relying on that floor.

When an alternative answers the requirement

Mosquitto implements MQTT versions 5.0, 3.1.1 and 3.1. Compare Eclipse Mosquitto first when MQTT protocol compatibility is the requirement. Its README includes broker and client utilities, with a local quick start and configuration requirements for remote clients. Our evidence does not compare its performance or operating cost with Zenoh.

Eclipse Cyclone DDS implements the OMG DDS specification and is a tier-1 middleware for ROS 2. Compare Cyclone DDS when you need a DDS implementation. The Zenoh router documentation separately lists plugins that bridge DDS and ROS 2 communications over Zenoh. In that arrangement, Zenoh can complement existing DDS middleware; a bridge is not evidence that replacing the middleware is necessary.

How to read the ratings

Ratings use a five-point editorial scale: 1 means substantial documented obstacles, 2 means material friction, 3 means usable with important qualifications, 4 means strong evidence within the stated scope, and 5 requires broad corroboration with few unresolved gaps. These are judgments about the evidence described here, not benchmark results or adoption measurements.

Setup ease is 2 because our build required several minutes and the test command failed. Documentation is 4 for the explicit repository boundaries, compiler caveat and router/plugin instructions, without a claim that every deployment path is covered. Community is 4 narrowly for the visible release collaboration and documented contribution and support routes; this does not measure adoption, response times or support quality. Maturity is 3 because the supplied 1.10.1 release records maintenance fixes while our run leaves test and deployment questions unresolved.

Before you commit

Reproduce the named failing target on your intended environment, investigate the timeout, and rerun the relevant suite without replayed-summary ambiguity. Then exercise your application's publish/subscribe and query paths, router topology, required plugins and failure recovery. Use the release and dependency resolution you plan to ship. A successful compilation alone cannot answer those questions.

Alternatives

ProjectWhat it isPick it when
Eclipse MosquittoAn MQTT server with client libraries and command-line utilities.Choose it when MQTT versions 5.0, 3.1.1 or 3.1 and existing MQTT clients define the requirement.
Eclipse Cyclone DDSAn implementation of OMG DDS and a tier-1 middleware for ROS 2.Evaluate it when you need DDS middleware. A Zenoh DDS bridge can be a complement when you also need to connect that system through Zenoh.

What people are saying

  1. [github-trending] eclipse-zenoh/zenoh

Sources

  1. Eclipse Zenoh repository and README
  2. Zenoh 1.10.1 release
  3. Zenoh router and plugin documentation
  4. Shared-memory provider initialization report
  5. Shared-memory attach failure report
  6. Router restart connection report

More data reviews

jq · pgx · HowToLiveLonger · ip2region · dbdelve · litestream · the whole board →