From eed886bdc125dd964ec770500b0dd0ea47309f03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Mar 2025 16:11:53 +0000 Subject: [PATCH 1/4] build(deps): update bincode requirement from 1.3.3 to 2.0.1 Updates the requirements on [bincode](https://github.com/bincode-org/bincode) to permit the latest version. - [Release notes](https://github.com/bincode-org/bincode/releases) - [Commits](https://github.com/bincode-org/bincode/compare/v1.3.3...v2.0.1) --- updated-dependencies: - dependency-name: bincode dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- firewood/Cargo.toml | 2 +- storage/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/firewood/Cargo.toml b/firewood/Cargo.toml index 0c77ba7af..02f9a8ff5 100644 --- a/firewood/Cargo.toml +++ b/firewood/Cargo.toml @@ -26,7 +26,7 @@ sha2 = "0.10.8" test-case = "3.3.1" thiserror = "2.0.3" typed-builder = "0.21.0" -bincode = "1.3.3" +bincode = "2.0.1" integer-encoding = "4.0.0" smallvec = "1.6.1" fastrace = { version = "0.7.4" } diff --git a/storage/Cargo.toml b/storage/Cargo.toml index 51ed7b2e3..e0d2f3a78 100644 --- a/storage/Cargo.toml +++ b/storage/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bincode = "1.3.3" +bincode = "2.0.1" bitflags = "2.5.0" enum-as-inner = "0.6.0" hex = "0.4.3" From ba43bec04b1b4f16d987de48c1aa48a870ecbe3f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Mar 2025 23:08:01 +0000 Subject: [PATCH 2/4] build(deps): update bincode requirement from 1.3.3 to 2.0.1 Updates the requirements on [bincode](https://github.com/bincode-org/bincode) to permit the latest version. - [Release notes](https://github.com/bincode-org/bincode/releases) - [Commits](https://github.com/bincode-org/bincode/compare/v1.3.3...v2.0.1) --- updated-dependencies: - dependency-name: bincode dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- firewood/Cargo.toml | 2 +- storage/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/firewood/Cargo.toml b/firewood/Cargo.toml index 65a20ea60..80b536ef7 100644 --- a/firewood/Cargo.toml +++ b/firewood/Cargo.toml @@ -26,7 +26,7 @@ sha2 = "0.10.8" test-case = "3.3.1" thiserror = "2.0.3" typed-builder = "0.21.0" -bincode = "1.3.3" +bincode = "2.0.1" integer-encoding = "4.0.0" smallvec = "1.6.1" fastrace = { version = "0.7.4" } diff --git a/storage/Cargo.toml b/storage/Cargo.toml index 8bace88b6..d539072eb 100644 --- a/storage/Cargo.toml +++ b/storage/Cargo.toml @@ -7,7 +7,7 @@ rust-version = "1.85.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bincode = "1.3.3" +bincode = "2.0.1" bitflags = "2.5.0" enum-as-inner = "0.6.0" hex = "0.4.3" From 94dd04ec3d4c8618a442436f792e15015bfc5dca Mon Sep 17 00:00:00 2001 From: Ron Kuris Date: Wed, 26 Mar 2025 20:54:14 -0700 Subject: [PATCH 3/4] Migrate to bincode2 --- benchmark/src/tenkrandom.rs | 1 - storage/Cargo.toml | 2 +- storage/benches/serializer.rs | 9 ++++----- storage/src/nodestore.rs | 19 ++++++++----------- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/benchmark/src/tenkrandom.rs b/benchmark/src/tenkrandom.rs index 35b62f424..375e8b024 100644 --- a/benchmark/src/tenkrandom.rs +++ b/benchmark/src/tenkrandom.rs @@ -61,7 +61,6 @@ fn generate_deletes(start: u64, count: u64) -> impl Iterator impl bincode::Options { - DefaultOptions::new().with_varint_encoding() +fn serializer() -> bincode::config::Configuration { + bincode::config::legacy().with_variable_int_encoding() } // TODO: automate this, must stay in sync with above @@ -197,8 +196,7 @@ impl NodeStore { fn area_index_and_size(&self, addr: LinearAddress) -> Result<(AreaIndex, u64), Error> { let mut area_stream = self.storage.stream_from(addr.get())?; - let index: AreaIndex = serializer() - .deserialize_from(&mut area_stream) + let index: AreaIndex = bincode::decode_from_std_read(&mut area_stream, serializer()) .map_err(|e| Error::new(ErrorKind::InvalidData, e))?; let size = *AREA_SIZES.get(index as usize).ok_or(Error::new( @@ -447,10 +445,10 @@ impl NodeStore, S> { *free_stored_area_addr = free_head; } else { let free_area_addr = address.get(); - let free_head_stream = self.storage.stream_from(free_area_addr)?; - let free_head: StoredArea> = serializer() - .deserialize_from(free_head_stream) - .map_err(|e| Error::new(ErrorKind::InvalidData, e))?; + let mut free_head_stream = self.storage.stream_from(free_area_addr)?; + let free_head: StoredArea> = + bincode::serde::decode_from_std_read(&mut free_head_stream, serializer()) + .map_err(|e| Error::new(ErrorKind::InvalidData, e))?; let StoredArea { area: Area::Free(free_head), area_size_index: read_index, @@ -544,8 +542,7 @@ impl NodeStore { area, }; - let stored_area_bytes = serializer() - .serialize(&stored_area) + let stored_area_bytes = bincode::serde::encode_to_vec(&stored_area, serializer()) .map_err(|e| Error::new(ErrorKind::InvalidData, e))?; self.storage.write(addr.into(), &stored_area_bytes)?; From 32e0157431cdf03f533e2908323ccd8f70994afb Mon Sep 17 00:00:00 2001 From: Ron Kuris Date: Wed, 26 Mar 2025 21:09:55 -0700 Subject: [PATCH 4/4] Allow let-and-return warning Too bad the compiler is a little confused here. When debug!() does nothing, the compiler thinks it should just return the original value rather than assigning it. But we might want the original value in the debug!(), so we'll just suppress this warning. --- benchmark/src/tenkrandom.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmark/src/tenkrandom.rs b/benchmark/src/tenkrandom.rs index 375e8b024..78c9ab50e 100644 --- a/benchmark/src/tenkrandom.rs +++ b/benchmark/src/tenkrandom.rs @@ -61,6 +61,7 @@ fn generate_deletes(start: u64, count: u64) -> impl Iterator