AC

Rust no_std

zenoh-nostd is a memory-safe Rust implementation of Zenoh for no_std targets — bare-metal hardware with no operating system.

This implementation was previewed in the October 2025 Zenoh Report and is under active development. See the eclipse-zenoh/zenoh-nostd repository for the latest status.

Why Rust on Embedded?

  • Memory safety — no buffer overflows, no use-after-free, no data races
  • Zero-cost abstractions — no runtime overhead
  • Modern tooling — Cargo, clippy, rustfmt, cross-compilation built-in

Supported Targets

  • ARM Cortex-M (thumbv7em, thumbv8m)
  • RISC-V (riscv32imc)
  • ESP32-C3/C6 (RISC-V via esp-hal)
  • ESP32-S3 (Xtensa via esp-hal)

Basic Example

#![no_std]
#![no_main]
 
use zenoh_nostd::prelude::*;
 
#[entry]
fn main() -> ! {
    let config = Config::client("tcp/192.168.1.100:7447");
    let session = Session::open(config).unwrap();
 
    loop {
        session.put("sensors/temperature", b"23.5").unwrap();
        cortex_m::asm::delay(8_000_000); // ~1 second at 8 MHz
    }
}

Cargo.toml

[dependencies]
zenoh-nostd = { version = "0.1", default-features = false }

The no_std feature disables the standard library and allocator dependencies.