[blocked] chore(deps): bincode 1.3->3.0 (smg-mesh) — 3.0.0 is a tombstone compile_error release#1802
[blocked] chore(deps): bincode 1.3->3.0 (smg-mesh) — 3.0.0 is a tombstone compile_error release#1802slin1237 wants to merge 1 commit into
Conversation
…a tombstone release]
bincode 3.0.0 is not a functional release. Its entire src/lib.rs is:
compile_error!("https://xkcd.com/2347/");
The crate is unmaintained; per its README no further releases will be
published on crates.io, and 3.0.0 ships only a README plus a compiler
error to signal that status. Any crate depending on bincode 3.0 fails to
compile by design, so the 1.3->3.0 bump cannot be adopted.
The latest real major is bincode 2.0.1 (the Encode/Decode + config-builder
rewrite). Retargeting this unit to 2.0.1 is the actionable path; see the
draft PR description.
Signed-off-by: Simo Lin <25425177+slin1237@users.noreply.github.com>
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Code Review
This pull request updates the bincode dependency version in crates/mesh/Cargo.toml from 1.3 to 3.0. Feedback was provided to correct this change, as bincode 3.0 is a tombstone release that will cause compilation failures, and migrating to version 2.0.1 or reverting to 1.3 is recommended instead.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
|
||
| # Mesh-specific dependencies | ||
| bincode = "1.3" | ||
| bincode = "3.0" |
There was a problem hiding this comment.
Using bincode = "3.0" will break compilation because bincode 3.0.0 is a tombstone release that only contains a compile_error!. To resolve this, you should either revert to 1.3 or migrate to 2.0.1 (the latest functional release supporting the new Encode/Decode API and config builder) or use a maintained alternative like wincode.
| bincode = "3.0" | |
| bincode = "2.0.1" |
|
👋 The PR description doesn't fully follow
Please update the PR description so reviewers have the context they need. |
There was a problem hiding this comment.
Per REVIEW.md, dependency version bumps with no code changes are in the skip list. This PR changes only crates/mesh/Cargo.toml (one line: bincode "1.3" → "3.0"), with no accompanying code changes.
The PR description thoroughly documents that bincode 3.0.0 is a tombstone release (compile_error! only) and proposes retargeting to 2.0.1 as the path forward. No code-level issues to flag.
Summary: 0 🔴 Important · 0 🟡 Nit · 0 🟣 Pre-existing
[blocked] bincode 1.3 -> 3.0 (crates/mesh) cannot be adopted
Assigned unit: bump
bincode1.3->3.0incrates/mesh/Cargo.toml, fix CRDT/gossip serialization breakage, pass pre-commit, open PR.Status: BLOCKED — the target version is a non-functional tombstone release.
Root cause
bincode 3.0.0(the only3.xon crates.io, and the latest published version) is not a real release. Its entiresrc/lib.rsis:Its
README.mdstates:The published
3.0.0crate contains onlyREADME.md,LICENSE.md, and alib.rsthat is a singlecompile_error!. There is no API surface — noEncode/Decode, no config builder, noserdecompat module. Any crate that depends onbincode = "3.0"fails to compile by design.Reproduction
Compiling the published
3.0.0source directly:cargo build -p smg-meshwith the bump applied fails identically once it reaches thebincodecrate.Adopting the bump as specified is therefore impossible, and the procedure forbids pinning back to an old version to dodge a breaking change — but here there is simply nothing to migrate to. This requires an orchestrator decision, hence a draft.
Why this is left as a
3.0diffThis draft intentionally keeps
bincode = "3.0"incrates/mesh/Cargo.tomlso the attempt and the failure are visible. The branch does not compile (by design of the upstream tombstone) and must not be merged.Recommended path: retarget to
bincode 2.0.1The full version list (from the crates.io index) shows the last real major after
1.3.3is2.0.0/2.0.1(both published, non-yanked).2.xis exactly the rewrite described in the unit's breaking-change notes:Encode/Decodederives + a config builder replacingserialize/deserialize+Options, withbincode::serdecompat helpers for serde-derived types.If retargeted to
2.0.1, the mesh migration is well-scoped to two files:crates/mesh/src/crdt_kv/operation.rsOperationLog::to_bytes/from_bytes(bincode::serialize/deserializeover the serde-derivedOperationLog).decode_counter_payload(bincode::deserialize::<i64>and::<HashMap<String, i64>>).crates/mesh/src/crdt_kv/epoch_max_wins.rsencode_shard(bincode::serialize) anddecode_shard, which currently usesDefaultOptions::new().with_fixint_encoding().allow_trailing_bytes().with_limit(64 KiB).Wire-format caveat (must preserve): in bincode 1.3, both
bincode::serializeanddecode_sharduse fixint + little-endian (1.3's freeserialize/deserializedefault towith_fixint_encoding).RateLimitShardbytes are gossiped between nodes and persisted, so a 2.x migration must usebincode::config::legacy()(fixint, little-endian, no limit) forencode_shard/OperationLog, and a fixint + little-endian config with a 64 KiB read limit fordecode_shard, to keep the gossip/stored format byte-compatible across a rolling upgrade. The serde-derived types would migrate viabincode::serde::encode_to_vec/decode_from_slice(theserdefeature), not the nativeEncode/Decodederives, to avoid changing the encoding.Requested decision
Please either (a) retarget this unit to
bincode 2.0.1, or (b) pick a maintained successor (the upstream README points towincodeas a bincode-compatible drop-in, andpostcard/rkyvotherwise). I did not unilaterally switch the target version.Verification performed
bincode 3.0.0package contents (README + tombstonelib.rs).compile_error!via directrustccompile of3.0.0.2.0.1is the newest real major and3.0.0is the only3.x.