From 7e6ef016416343e4245147483f6d070838f5417b Mon Sep 17 00:00:00 2001 From: Tomasz Kurcz Date: Wed, 24 Apr 2024 10:14:33 +0200 Subject: [PATCH 1/4] deprecate compact serialization of some types Binary, HexBinary, Checksum (cherry picked from commit a49c769d7b46a672e66da4239b76267176586fab) --- packages/std/src/binary.rs | 12 ++++++++++-- packages/std/src/checksum.rs | 12 ++++++++++-- packages/std/src/hex_binary.rs | 12 ++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/packages/std/src/binary.rs b/packages/std/src/binary.rs index 8237980666..4373c10860 100644 --- a/packages/std/src/binary.rs +++ b/packages/std/src/binary.rs @@ -220,7 +220,11 @@ impl Serialize for Binary { where S: ser::Serializer, { - serializer.serialize_str(&self.to_base64()) + if serializer.is_human_readable() { + serializer.serialize_str(&self.to_base64()) + } else { + panic!("Binary is only intended to be used with JSON serialization for now") + } } } @@ -230,7 +234,11 @@ impl<'de> Deserialize<'de> for Binary { where D: Deserializer<'de>, { - deserializer.deserialize_str(Base64Visitor) + if deserializer.is_human_readable() { + deserializer.deserialize_str(Base64Visitor) + } else { + panic!("Binary is only intended to be used with JSON serialization for now") + } } } diff --git a/packages/std/src/checksum.rs b/packages/std/src/checksum.rs index e56735640d..ff3b37bdc9 100644 --- a/packages/std/src/checksum.rs +++ b/packages/std/src/checksum.rs @@ -71,7 +71,11 @@ impl Serialize for Checksum { where S: ser::Serializer, { - serializer.serialize_str(&self.to_hex()) + if serializer.is_human_readable() { + serializer.serialize_str(&self.to_hex()) + } else { + panic!("Checksum is only intended to be used with JSON serialization for now") + } } } @@ -81,7 +85,11 @@ impl<'de> Deserialize<'de> for Checksum { where D: Deserializer<'de>, { - deserializer.deserialize_str(ChecksumVisitor) + if deserializer.is_human_readable() { + deserializer.deserialize_str(ChecksumVisitor) + } else { + panic!("Checksum is only intended to be used with JSON serialization for now") + } } } diff --git a/packages/std/src/hex_binary.rs b/packages/std/src/hex_binary.rs index 1b704e2261..c9d3be0f6c 100644 --- a/packages/std/src/hex_binary.rs +++ b/packages/std/src/hex_binary.rs @@ -210,7 +210,11 @@ impl Serialize for HexBinary { where S: ser::Serializer, { - serializer.serialize_str(&self.to_hex()) + if serializer.is_human_readable() { + serializer.serialize_str(&self.to_hex()) + } else { + panic!("HexBinary is only intended to be used with JSON serialization for now") + } } } @@ -220,7 +224,11 @@ impl<'de> Deserialize<'de> for HexBinary { where D: Deserializer<'de>, { - deserializer.deserialize_str(HexVisitor) + if deserializer.is_human_readable() { + deserializer.deserialize_str(HexVisitor) + } else { + panic!("HexBinary is only intended to be used with JSON serialization for now") + } } } From 2e3aa66064059267f01e429173fed1fb432ce5b9 Mon Sep 17 00:00:00 2001 From: Tomasz Kurcz Date: Wed, 24 Apr 2024 10:22:29 +0200 Subject: [PATCH 2/4] changelog (cherry picked from commit b8da044534734caef440a26f4373c67e598c5674) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b730dd127..da132ece0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ and this project adheres to ## [Unreleased] +### Changed + +- cosmwasm-std: Deprecate "compact" serialization of `Binary`, `HexBinary`, + `Checksum` ([#2128]) + +[#2128]: https://github.com/CosmWasm/cosmwasm/pull/2128 + ## [2.0.2] - 2024-04-24 ### Fixed From 301b0204a34dd1b12b978352f486035601a41ab9 Mon Sep 17 00:00:00 2001 From: Tomasz Kurcz Date: Wed, 24 Apr 2024 14:47:09 +0200 Subject: [PATCH 3/4] elaborate on panic msg for Binary/HexBinary (cherry picked from commit fea397c472bc9b67c0b082157a1e89256eb8b286) --- packages/std/src/binary.rs | 4 ++-- packages/std/src/hex_binary.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/std/src/binary.rs b/packages/std/src/binary.rs index 4373c10860..0de5d55b23 100644 --- a/packages/std/src/binary.rs +++ b/packages/std/src/binary.rs @@ -223,7 +223,7 @@ impl Serialize for Binary { if serializer.is_human_readable() { serializer.serialize_str(&self.to_base64()) } else { - panic!("Binary is only intended to be used with JSON serialization for now") + panic!("Binary is only intended to be used with JSON serialization for now. If you are hitting this panic please open an issue at https://github.com/CosmWasm/cosmwasm describing your use case.") } } } @@ -237,7 +237,7 @@ impl<'de> Deserialize<'de> for Binary { if deserializer.is_human_readable() { deserializer.deserialize_str(Base64Visitor) } else { - panic!("Binary is only intended to be used with JSON serialization for now") + panic!("Binary is only intended to be used with JSON serialization for now. If you are hitting this panic please open an issue at https://github.com/CosmWasm/cosmwasm describing your use case.") } } } diff --git a/packages/std/src/hex_binary.rs b/packages/std/src/hex_binary.rs index c9d3be0f6c..4c31260257 100644 --- a/packages/std/src/hex_binary.rs +++ b/packages/std/src/hex_binary.rs @@ -213,7 +213,7 @@ impl Serialize for HexBinary { if serializer.is_human_readable() { serializer.serialize_str(&self.to_hex()) } else { - panic!("HexBinary is only intended to be used with JSON serialization for now") + panic!("HexBinary is only intended to be used with JSON serialization for now. If you are hitting this panic please open an issue at https://github.com/CosmWasm/cosmwasm describing your use case.") } } } @@ -227,7 +227,7 @@ impl<'de> Deserialize<'de> for HexBinary { if deserializer.is_human_readable() { deserializer.deserialize_str(HexVisitor) } else { - panic!("HexBinary is only intended to be used with JSON serialization for now") + panic!("HexBinary is only intended to be used with JSON serialization for now. If you are hitting this panic please open an issue at https://github.com/CosmWasm/cosmwasm describing your use case.") } } } From 686fb6eb139d4b96ff0bef1e2d7e877bf5ea7c37 Mon Sep 17 00:00:00 2001 From: Tomasz Kurcz Date: Wed, 24 Apr 2024 14:47:53 +0200 Subject: [PATCH 4/4] elaborate on panic msg for Checksum (cherry picked from commit 82464e5fbce509fbcdd073f296743c69b4d768be) --- packages/std/src/checksum.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/std/src/checksum.rs b/packages/std/src/checksum.rs index ff3b37bdc9..b2b1a79e9a 100644 --- a/packages/std/src/checksum.rs +++ b/packages/std/src/checksum.rs @@ -74,7 +74,7 @@ impl Serialize for Checksum { if serializer.is_human_readable() { serializer.serialize_str(&self.to_hex()) } else { - panic!("Checksum is only intended to be used with JSON serialization for now") + panic!("Checksum is only intended to be used with JSON serialization for now. If you are hitting this panic please open an issue at https://github.com/CosmWasm/cosmwasm describing your use case.") } } } @@ -88,7 +88,7 @@ impl<'de> Deserialize<'de> for Checksum { if deserializer.is_human_readable() { deserializer.deserialize_str(ChecksumVisitor) } else { - panic!("Checksum is only intended to be used with JSON serialization for now") + panic!("Checksum is only intended to be used with JSON serialization for now. If you are hitting this panic please open an issue at https://github.com/CosmWasm/cosmwasm describing your use case.") } } }