From 754063a9d7e173c51234934ae91953c7964f8f1c Mon Sep 17 00:00:00 2001 From: Nikolai Golub Date: Wed, 6 May 2026 09:58:32 +0200 Subject: [PATCH] Replace unmaintained bincode with messagepack --- Cargo.lock | 40 ++++++++++++++++++++++++--------- Cargo.toml | 3 +-- torture/Cargo.toml | 1 - torture/src/agent.rs | 10 ++++----- torture/src/supervisor/comms.rs | 14 ++++++------ 5 files changed, 42 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d8bceec62f..55ee355c2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -156,15 +156,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -1204,6 +1195,12 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "pin-project" version = "1.1.7" @@ -1460,6 +1457,28 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +[[package]] +name = "rmp" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + [[package]] name = "ruint" version = "1.12.1" @@ -1732,12 +1751,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caf600e7036b17782571dd44fa0a5cea3c82f60db5137f774a325a76a0d6852b" dependencies = [ - "bincode", "bytes", "educe", "futures-core", "futures-sink", "pin-project", + "rmp-serde", "serde", ] @@ -1787,7 +1806,6 @@ name = "torture" version = "0.1.0" dependencies = [ "anyhow", - "bincode", "cfg-if", "clap 4.5.23", "futures", diff --git a/Cargo.toml b/Cargo.toml index 81ae5b53f8..6c146dc693 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,12 +52,11 @@ lazy_static = "1.5.0" quickcheck = "1.0.3" nix = { version = "0.29", features = ["process"] } serde = { version = "1.0.216", default-features = false, features = ["derive"] } -bincode = "1.3.3" tokio = { version = "1.42.0", features = ["full"] } tokio-util = { version = "0.7.13", features = ["codec"] } tokio-stream = "0.1.17" futures = "0.3.31" -tokio-serde = { version = "0.9.0", features = ["bincode"] } +tokio-serde = { version = "0.9.0", features = ["messagepack"] } tracing = { version = "0.1.41", features = ["attributes"] } tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } futures-util = "0.3.31" diff --git a/torture/Cargo.toml b/torture/Cargo.toml index be32b11ec9..e1c47bdfd5 100644 --- a/torture/Cargo.toml +++ b/torture/Cargo.toml @@ -9,7 +9,6 @@ libc.workspace = true anyhow.workspace = true cfg-if.workspace = true serde.workspace = true -bincode.workspace = true nomt = { path = "../nomt" } tokio.workspace = true tokio-util.workspace = true diff --git a/torture/src/agent.rs b/torture/src/agent.rs index f20c03682c..6bacb4d5d4 100644 --- a/torture/src/agent.rs +++ b/torture/src/agent.rs @@ -14,7 +14,7 @@ use tokio::{ }, time::{error::Elapsed, sleep, timeout}, }; -use tokio_serde::{formats::SymmetricalBincode, SymmetricallyFramed}; +use tokio_serde::{formats::SymmetricalMessagePack, SymmetricallyFramed}; use tokio_stream::StreamExt as _; use tokio_util::codec::{FramedRead, FramedWrite, LengthDelimitedCodec}; use tracing::trace; @@ -458,12 +458,12 @@ struct Stream { rd_stream: SymmetricallyFramed< FramedRead, LengthDelimitedCodec>, Envelope, - SymmetricalBincode>, + SymmetricalMessagePack>, >, wr_stream: SymmetricallyFramed< FramedWrite, LengthDelimitedCodec>, Envelope, - SymmetricalBincode>, + SymmetricalMessagePack>, >, } @@ -479,7 +479,7 @@ impl Stream { .max_frame_length(MAX_ENVELOPE_SIZE) .new_codec(), ), - SymmetricalBincode::default(), + SymmetricalMessagePack::default(), ); let wr_stream = SymmetricallyFramed::new( FramedWrite::new( @@ -489,7 +489,7 @@ impl Stream { .max_frame_length(MAX_ENVELOPE_SIZE) .new_codec(), ), - SymmetricalBincode::default(), + SymmetricalMessagePack::default(), ); Self { rd_stream, diff --git a/torture/src/supervisor/comms.rs b/torture/src/supervisor/comms.rs index e805d14f27..56c9bf9646 100644 --- a/torture/src/supervisor/comms.rs +++ b/torture/src/supervisor/comms.rs @@ -19,7 +19,7 @@ use tokio::{ sync::{oneshot, Mutex}, time::timeout, }; -use tokio_serde::{formats::SymmetricalBincode, SymmetricallyFramed}; +use tokio_serde::{formats::SymmetricalMessagePack, SymmetricallyFramed}; use tokio_stream::StreamExt; use tokio_util::codec::{FramedRead, FramedWrite, LengthDelimitedCodec}; @@ -27,25 +27,25 @@ use crate::message::{self, Envelope, ToAgent, ToSupervisor, MAX_ENVELOPE_SIZE}; /// The type definition of a sink which is built: /// -/// - bincode serializer using [`Envelope`]. +/// - MessagePack serializer using [`Envelope`]. /// - length-delimited codec. /// - buf writer. /// - unix stream (write half). type WrStream = SymmetricallyFramed< FramedWrite, LengthDelimitedCodec>, Envelope, - SymmetricalBincode>, + SymmetricalMessagePack>, >; /// The type definition of a stream which is built: /// /// - unix stream (read half). /// - buf reader. /// - length-delimited codec. -/// - bincode deserializer using [`Envelope`]. +/// - MessagePack deserializer using [`Envelope`]. type RdStream = SymmetricallyFramed< FramedRead, LengthDelimitedCodec>, Envelope, - SymmetricalBincode>, + SymmetricalMessagePack>, >; /// A means to communicate with an agent. @@ -147,7 +147,7 @@ pub fn run(stream: UnixStream) -> (RequestResponse, impl Future (RequestResponse, impl Future