Repository navigation
Conversation
…rgo manifests Signed-off-by: rraometa <rrao@meta.com>
Author
|
Hi! The "Check for required labels" job is failing because I don't have permission to add labels. Could a maintainer please add the bug enhancement? Thanks! |
meta-codesync Bot
pushed a commit
to facebookexperimental/rust-shed
that referenced
this pull request
Oct 28, 2026
Summary: Upgrade zenoh from 1.7.1 to 1.10.1 for Rust, zenoh-c, zenoh-cpp and eclipse-zenoh (Python) together. They must move in lockstep: 1.10.1 bumps `SHM_VERSION` 1 -> 2, so 1.7.1 and 1.10.1 processes cannot share SHM buffers (the wire protocol is unchanged, 0x09). This is D1 of a stack: pristine upstream 1.10.1 plus build plumbing. Behavior fixups that upstream does not yet carry are re-added on top in their own diffs, after being re-verified against this baseline. **Rust (`third-party/rust`)** - All zenoh crates 1.7.1 -> 1.10.1. New transitive crates: `lockfree`, `owned-alloc`, `lz4_flex` 0.10, `rlimit` 0.10; `stabby` 72.1.1 -> 72.1.16. - Removed overlays: - `zenoh` `net/routing/dispatcher/queries.rs` (routing AB-BA deadlock T289921933, `pending_queries` use-after-free D124609602): fixed upstream, `route_send_response` now takes `tables` before `queries` and clones the query before releasing the lock. - `zenoh-shm` `lib.rs` / `shm_provider.rs`, `zenoh-codec` `zbuf.rs`, `zenoh-transport` `pipeline.rs` (in-flight SHM ref tracker D93568656 / D122891487, GC `total_freed`, `busy_count`, UDP stuck congestion D112961319): not in 1.10.1 upstream; re-added later in the stack only if the on-robot repros still fail on 1.10.1 (the SHM leak is expected to be covered by the unsafe allocation policy the zenoh team recommends). - Kept overlay: `Session::matching_subscribers()` (camera 1:1 subscriber check, T280311274), rewritten for the 1.10.1 routing tables and gated to `=1.10.1`. - New overlay (1.10.1 regression, upstream: eclipse-zenoh/zenoh#2891): closing a session while a publisher or querier is still alive leaked the session, its runtime and its SHM auth segment. Their states keep a key expression whose `KeyExprWireDeclaration` holds a strong session reference; `close_inner()` cleared subscriber and queryable states but not these, and undeclaring after close returns early. `api/session.rs`: `close_inner()` also takes `publishers` and `queriers`. - `stabby`: replace the `github.com/nitinsingh-meta/stabby` fork (pinned at 72.1.1, no longer matched by zenoh's `^72.1.8`) with reindeer overlays on 72.1.16 carrying the same change: build without `proc-macro-crate`, which panics under Buck. The `stabby-abi` bootstrap-nightly `build.rs` overlay moves its gate to `=72.1.16` (upstream `build.rs` is unchanged). **zenoh-c / zenoh-cpp** - Re-import at 1.10.1. - `000-buck-friendly-buildrs.patch` regenerated as a clean vendor-only diff. New in 1.10.1: Buck mode skips `sync_opaque_types_lockfile()` (no `Cargo.lock` under Buck) and logs with `eprintln!` instead of the new `build_print` dependency. - Drop `001-rand-compat.patch`: depend on `rand_09`, the version zenoh-c declares. **eclipse-zenoh** - Import 1.10.1 wheels, remove 1.7.1. - Import test also checks `zenoh.shm` and `GarbageCollect(safe=False)`. **First-party (`rl_robot`)**, minimal API adaptations: - `connect.endpoints` is now `Vec<EndPoints>`: convert with `.into()` in pubsub `config.rs`, camcat, zctl and motor_control `wuji_comm`. - `SampleFields` gained `timestamp_stack`: ignored in recording `subscribe.rs` and `zctl play` (same behavior as 1.7.1). - `ReplyBuilder::priority()` / `congestion_control()` are deprecated no-ops in 1.10.1 (replies use the query's QoS): removed from state_machine `client.rs`. - Python API changes are additive only; zenoh encoding IDs (hardcoded in zctl) are unchanged; no `rl_robot` zenoh config sets the routing keys 1.10.1 removed. Upstream: - session-close leak: eclipse-zenoh/zenoh#2891 - subscriber count on `MatchingStatus` (feature request): eclipse-zenoh/zenoh#2894 - stabby optional `proc-macro-crate`: ZettaScaleLabs/stabby#153 allow-large-files #build_targets_regex[fbcode//rl_robot/.*] Reviewed By: guoweis-work Differential Revision: D127603619 fbshipit-source-id: bc362f20fbb6d06119928fd90608d2ee552f59e7
meta-codesync Bot
pushed a commit
to meta/sapling
that referenced
this pull request
Oct 28, 2026
Summary: Upgrade zenoh from 1.7.1 to 1.10.1 for Rust, zenoh-c, zenoh-cpp and eclipse-zenoh (Python) together. They must move in lockstep: 1.10.1 bumps `SHM_VERSION` 1 -> 2, so 1.7.1 and 1.10.1 processes cannot share SHM buffers (the wire protocol is unchanged, 0x09). This is D1 of a stack: pristine upstream 1.10.1 plus build plumbing. Behavior fixups that upstream does not yet carry are re-added on top in their own diffs, after being re-verified against this baseline. **Rust (`third-party/rust`)** - All zenoh crates 1.7.1 -> 1.10.1. New transitive crates: `lockfree`, `owned-alloc`, `lz4_flex` 0.10, `rlimit` 0.10; `stabby` 72.1.1 -> 72.1.16. - Removed overlays: - `zenoh` `net/routing/dispatcher/queries.rs` (routing AB-BA deadlock T289921933, `pending_queries` use-after-free D124609602): fixed upstream, `route_send_response` now takes `tables` before `queries` and clones the query before releasing the lock. - `zenoh-shm` `lib.rs` / `shm_provider.rs`, `zenoh-codec` `zbuf.rs`, `zenoh-transport` `pipeline.rs` (in-flight SHM ref tracker D93568656 / D122891487, GC `total_freed`, `busy_count`, UDP stuck congestion D112961319): not in 1.10.1 upstream; re-added later in the stack only if the on-robot repros still fail on 1.10.1 (the SHM leak is expected to be covered by the unsafe allocation policy the zenoh team recommends). - Kept overlay: `Session::matching_subscribers()` (camera 1:1 subscriber check, T280311274), rewritten for the 1.10.1 routing tables and gated to `=1.10.1`. - New overlay (1.10.1 regression, upstream: eclipse-zenoh/zenoh#2891): closing a session while a publisher or querier is still alive leaked the session, its runtime and its SHM auth segment. Their states keep a key expression whose `KeyExprWireDeclaration` holds a strong session reference; `close_inner()` cleared subscriber and queryable states but not these, and undeclaring after close returns early. `api/session.rs`: `close_inner()` also takes `publishers` and `queriers`. - `stabby`: replace the `github.com/nitinsingh-meta/stabby` fork (pinned at 72.1.1, no longer matched by zenoh's `^72.1.8`) with reindeer overlays on 72.1.16 carrying the same change: build without `proc-macro-crate`, which panics under Buck. The `stabby-abi` bootstrap-nightly `build.rs` overlay moves its gate to `=72.1.16` (upstream `build.rs` is unchanged). **zenoh-c / zenoh-cpp** - Re-import at 1.10.1. - `000-buck-friendly-buildrs.patch` regenerated as a clean vendor-only diff. New in 1.10.1: Buck mode skips `sync_opaque_types_lockfile()` (no `Cargo.lock` under Buck) and logs with `eprintln!` instead of the new `build_print` dependency. - Drop `001-rand-compat.patch`: depend on `rand_09`, the version zenoh-c declares. **eclipse-zenoh** - Import 1.10.1 wheels, remove 1.7.1. - Import test also checks `zenoh.shm` and `GarbageCollect(safe=False)`. **First-party (`rl_robot`)**, minimal API adaptations: - `connect.endpoints` is now `Vec<EndPoints>`: convert with `.into()` in pubsub `config.rs`, camcat, zctl and motor_control `wuji_comm`. - `SampleFields` gained `timestamp_stack`: ignored in recording `subscribe.rs` and `zctl play` (same behavior as 1.7.1). - `ReplyBuilder::priority()` / `congestion_control()` are deprecated no-ops in 1.10.1 (replies use the query's QoS): removed from state_machine `client.rs`. - Python API changes are additive only; zenoh encoding IDs (hardcoded in zctl) are unchanged; no `rl_robot` zenoh config sets the routing keys 1.10.1 removed. Upstream: - session-close leak: eclipse-zenoh/zenoh#2891 - subscriber count on `MatchingStatus` (feature request): eclipse-zenoh/zenoh#2894 - stabby optional `proc-macro-crate`: ZettaScaleLabs/stabby#153 allow-large-files #build_targets_regex[fbcode//rl_robot/.*] Reviewed By: guoweis-work Differential Revision: D127603619 fbshipit-source-id: bc362f20fbb6d06119928fd90608d2ee552f59e7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
stabby-macroslocates thestabby/stabby-abicrates withproc_macro_crate::crate_name(), which reads the calling crate'sCargo.toml. Build systems that compile crates without a per-crate manifest in place (Buck2, Bazel) have no such file, so every#[stabby]expansion panics:This blocks using
zenohwith shared memory (which depends on stabby) under those build systems.Change
New
proc-macro-cratefeature, enabled by default instabbyandstabby-abi, so Cargo users see no change:#[cfg(feature = "proc-macro-crate")].tl_mod()always emitsstabby::abi, andstabbyandstabby-abieach declareextern crate self as stabby;(pluspub(crate) mod abi { pub(crate) use super::*; }instabby-abi) so that path resolves inside both crates and in dependents.stabby-macros:proc-macro-cratebecomes an optional dependency behind the feature; theproc_macro2::Identimport is gated with it to stay warning-free.Crates depending on
stabbyorstabby-abiwithdefault-features = falseshould add theproc-macro-cratefeature to keep the old behaviour (worth a CHANGELOG note).Testing
cargo test -p stabby -p stabby-abi -p stabby-macros: unit tests pass (8 + 18).cargo build -p stabby --no-default-features --features stdandcargo build -p stabby-abi --no-default-features --features stdbuild without warnings;cargo tree -i proc-macro-crateconfirms the dependency is absent.libloadingfeature, andcargo build -p libraryon its own does not enable an allocator.proc-macro-crateunder Buck2 as a dependency ofzenoh-shm(72.1.1 through a fork with this change, 72.1.16 with an equivalent patch), with SHM traffic on our robots.