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
Status events (deadline / liveliness / lost)wired
Manual liveliness assertwired
Event-driven wake (set_wake_callback)wired
Deadline hint (next_deadline_ms)wired
Zero-copy loan API
Batch receive (take_sequence)wiredwired
Streamed publishwiredwired
Connectivity pingwiredwired
Identity / feature probe
Publisher GID / matched counts
Actual-QoS read-back
Wait-for-acked
Take-with-info
Entity new-data callbacks
Graph introspection (names/types/counts)

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.