Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Per-RMW Feature Matrix

One table per question the capability pages used to answer in contradictory prose. Derived from the backend sources — the two C vtables (vtable.cpp, vtable.c) and the zenoh shim’s trait overrides — so a backend gaining or losing a slot moves this page in the same commit or fails the gate.

wired = the backend implements it. — = not wired: the runtime surfaces UNSUPPORTED or falls back where a fallback exists (the vtable comments name which). The rows below the parity marker are the phase-376 W4 surface — slots declared in the ABI whose backend wiring is the in-flight campaign; all-dash rows there mean declared, not yet wired anywhere, and they flip automatically as backends land implementations.

Session / entity capabilities

CapabilityZenohXRCE-DDSCyclone DDS
Publish / subscribewiredwiredwired
Services (server side)wiredwiredwired
Service clientswiredwiredwired
Server-availability probewired—wired
Status events (deadline / liveliness / lost)wired——
Manual liveliness assertwired—wired
Event-driven wake (set_wake_callback)wired—wired
Deadline hint (next_deadline_ms)wired——
Zero-copy loan API———
Batch receive (take_sequence)wired—wired
Streamed publishwiredwired—
Connectivity pingwiredwired—
Identity / feature probe———
Publisher GID / matched counts——wired
Actual-QoS read-backwired—wired
Wait-for-acked———
Take-with-infowired—wired
Graph introspection (names/types/counts)wired—wired

Node-layer features

These live in nros-node on top of pub/sub + services — they are not backend slots, so the rule, not a vtable, decides the row:

FeatureZenohXRCE-DDSCyclone DDSRule
ActionsyesyesuntestedBuilt in nros-node on pub/sub + services. Cyclone has both since service.cpp, but no action example runs on it in CI — see known limitations.
Parameters (+ param services)yesyesyesNode-layer services (RFC-0004); available wherever services are.
Lifecycle (REP-2002)yesyesyesNode-layer state machine + services (lifecycle-services feature).

QoS policies

A backend advertises the policies it can enforce via supported_qos_policies(); requesting an unadvertised policy fails entity creation loudly (INCOMPATIBLE_QOS) — no silent downgrade. Per-policy semantics: RMW vs upstream §7.

PolicyZenohXRCE-DDS / Cyclone DDS (via C ABI) ¹
CORE✓—
DURABILITY_TRANSIENT_LOCAL✓—
DEADLINE✓—
LIFESPAN✓—
LIVELINESS_AUTOMATIC✓—
LIVELINESS_MANUAL_BY_TOPIC✓—
LIVELINESS_MANUAL_BY_NODE——
LIVELINESS_LEASE✓—
AVOID_ROS_NAMESPACE_CONVENTIONS——

¹ The C-ABI backends’ mask is asserted by the runtime shim (packages/rmw/cffi/src/lib.rs), not reported by the backend — the vtable has no supported_qos_policies slot yet (TODO 115.K.2.x). Treat the column as the runtime’s assumption; the backend’s own enforcement happens at entity creation.