mirror of
https://github.com/yewstack/yew.git
synced 2025-12-08 21:26:25 +00:00
Upgrade bincode from 1.x to 2.0.0-rc.3 (#3899)
- Updated bincode dependency to 2.0.0-rc.3 in yew and yew-agent packages - Migrated from bincode::serialize/deserialize to bincode::serde::encode_to_vec/decode_from_slice - Updated test expectations for changed base64 encoding format - Used 2.0.0-rc.3 to maintain MSRV compatibility with Rust 1.78.0
This commit is contained in:
parent
0102d62d60
commit
50f987d9f5
31
Cargo.lock
generated
31
Cargo.lock
generated
@ -259,6 +259,25 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bincode"
|
||||
version = "2.0.0-rc.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95"
|
||||
dependencies = [
|
||||
"bincode_derive",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bincode_derive"
|
||||
version = "2.0.0-rc.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7e30759b3b99a1b802a7a3aa21c85c3ded5c28e1c83170d82d70f08bbf7f3e4c"
|
||||
dependencies = [
|
||||
"virtue",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bit-set"
|
||||
version = "0.5.3"
|
||||
@ -1281,7 +1300,7 @@ version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "085f262d7604911c8150162529cefab3782e91adb20202e8658f7275d2aefe5d"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bincode 1.3.3",
|
||||
"futures 0.3.31",
|
||||
"gloo-utils",
|
||||
"gloo-worker-macros",
|
||||
@ -3729,6 +3748,12 @@ version = "0.9.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
||||
|
||||
[[package]]
|
||||
name = "virtue"
|
||||
version = "0.0.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9dcc60c0624df774c82a0ef104151231d37da4962957d691c011c852b2473314"
|
||||
|
||||
[[package]]
|
||||
name = "walkdir"
|
||||
version = "2.5.0"
|
||||
@ -4258,7 +4283,7 @@ name = "yew"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
"bincode",
|
||||
"bincode 2.0.0-rc.3",
|
||||
"console_error_panic_hook",
|
||||
"futures 0.3.31",
|
||||
"gloo",
|
||||
@ -4285,7 +4310,7 @@ dependencies = [
|
||||
name = "yew-agent"
|
||||
version = "0.3.0"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bincode 2.0.0-rc.3",
|
||||
"futures 0.3.31",
|
||||
"js-sys",
|
||||
"pinned",
|
||||
|
||||
@ -17,7 +17,7 @@ wasm-bindgen = "0.2"
|
||||
js-sys = "0.3"
|
||||
pinned = "0.1.0"
|
||||
thiserror = "1.0.37"
|
||||
bincode = { version = "1.3.3" }
|
||||
bincode = { version = "2.0.0-rc.3", features = ["serde"] }
|
||||
wasm-bindgen-futures = "0.4"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
futures = "0.3"
|
||||
|
||||
@ -26,7 +26,8 @@ impl Codec for Bincode {
|
||||
where
|
||||
I: Serialize,
|
||||
{
|
||||
let buf = bincode::serialize(&input).expect("can't serialize an worker message");
|
||||
let buf = bincode::serde::encode_to_vec(&input, bincode::config::standard())
|
||||
.expect("can't serialize an worker message");
|
||||
Uint8Array::from(buf.as_slice()).into()
|
||||
}
|
||||
|
||||
@ -35,6 +36,8 @@ impl Codec for Bincode {
|
||||
O: for<'de> Deserialize<'de>,
|
||||
{
|
||||
let data = Uint8Array::from(input).to_vec();
|
||||
bincode::deserialize(&data).expect("can't deserialize an worker message")
|
||||
let (result, _) = bincode::serde::decode_from_slice(&data, bincode::config::standard())
|
||||
.expect("can't deserialize an worker message");
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ futures = { version = "0.3", default-features = false, features = ["std"] }
|
||||
html-escape = { version = "0.2.13", optional = true }
|
||||
implicit-clone = { version = "0.5", features = ["map"] }
|
||||
base64ct = { version = "1.6.0", features = ["std"], optional = true }
|
||||
bincode = { version = "1.3.3", optional = true }
|
||||
bincode = { version = "2.0.0-rc.3", optional = true, features = ["serde"] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
tracing = "0.1.40"
|
||||
tokise = "0.2.0"
|
||||
|
||||
@ -90,10 +90,15 @@ where
|
||||
.await
|
||||
.expect("failed to deserialize state");
|
||||
|
||||
let (state, deps) =
|
||||
bincode::deserialize::<(Option<T>, Option<D>)>(&buf)
|
||||
.map(|(state, deps)| (state.map(Rc::new), deps.map(Rc::new)))
|
||||
.expect("failed to deserialize state");
|
||||
let ((state, deps), _) =
|
||||
bincode::serde::decode_from_slice::<(Option<T>, Option<D>), _>(
|
||||
&buf,
|
||||
bincode::config::standard(),
|
||||
)
|
||||
.map(|((state, deps), consumed)| {
|
||||
((state.map(Rc::new), deps.map(Rc::new)), consumed)
|
||||
})
|
||||
.expect("failed to deserialize state");
|
||||
|
||||
data.set((Ok((state, deps)), None));
|
||||
});
|
||||
|
||||
@ -129,8 +129,11 @@ mod feat_any_hydration_ssr {
|
||||
fn prepare(&self) -> String {
|
||||
use base64ct::{Base64, Encoding};
|
||||
|
||||
let state = bincode::serialize(&(self.state.as_deref(), self.deps.as_deref()))
|
||||
.expect("failed to prepare state");
|
||||
let state = bincode::serde::encode_to_vec(
|
||||
(self.state.as_deref(), self.deps.as_deref()),
|
||||
bincode::config::standard(),
|
||||
)
|
||||
.expect("failed to prepare state");
|
||||
|
||||
Base64::encode_string(&state)
|
||||
}
|
||||
|
||||
@ -30,8 +30,11 @@ where
|
||||
let f = self.state_fn.borrow_mut().take().unwrap();
|
||||
let state = f(self.deps.clone());
|
||||
|
||||
let state = bincode::serialize(&(Some(&state), Some(&*self.deps)))
|
||||
.expect("failed to prepare state");
|
||||
let state = bincode::serde::encode_to_vec(
|
||||
(Some(&state), Some(&*self.deps)),
|
||||
bincode::config::standard(),
|
||||
)
|
||||
.expect("failed to prepare state");
|
||||
|
||||
Base64::encode_string(&state)
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ async fn use_prepared_state_works() {
|
||||
|
||||
assert_eq!(
|
||||
s,
|
||||
r#"<!--<[use_prepared_state::use_prepared_state_works::{{closure}}::App]>--><!--<[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--<[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--<?>--><div><!--<[use_prepared_state::use_prepared_state_works::{{closure}}::Comp]>--><div>12345</div><script type="application/x-yew-comp-state">ATkwAAAB</script><!--</[use_prepared_state::use_prepared_state_works::{{closure}}::Comp]>--></div><!--</?>--><!--</[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--</[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--</[use_prepared_state::use_prepared_state_works::{{closure}}::App]>-->"#
|
||||
r#"<!--<[use_prepared_state::use_prepared_state_works::{{closure}}::App]>--><!--<[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--<[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--<?>--><div><!--<[use_prepared_state::use_prepared_state_works::{{closure}}::Comp]>--><div>12345</div><script type="application/x-yew-comp-state">Afs5MAE=</script><!--</[use_prepared_state::use_prepared_state_works::{{closure}}::Comp]>--></div><!--</?>--><!--</[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--</[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--</[use_prepared_state::use_prepared_state_works::{{closure}}::App]>-->"#
|
||||
);
|
||||
|
||||
gloo::utils::document()
|
||||
@ -92,7 +92,7 @@ async fn use_prepared_state_with_suspension_works() {
|
||||
|
||||
assert_eq!(
|
||||
s,
|
||||
r#"<!--<[use_prepared_state::use_prepared_state_with_suspension_works::{{closure}}::App]>--><!--<[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--<[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--<?>--><div><!--<[use_prepared_state::use_prepared_state_with_suspension_works::{{closure}}::Comp]>--><div>12345</div><script type="application/x-yew-comp-state">ATkwAAAB</script><!--</[use_prepared_state::use_prepared_state_with_suspension_works::{{closure}}::Comp]>--></div><!--</?>--><!--</[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--</[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--</[use_prepared_state::use_prepared_state_with_suspension_works::{{closure}}::App]>-->"#
|
||||
r#"<!--<[use_prepared_state::use_prepared_state_with_suspension_works::{{closure}}::App]>--><!--<[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--<[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--<?>--><div><!--<[use_prepared_state::use_prepared_state_with_suspension_works::{{closure}}::Comp]>--><div>12345</div><script type="application/x-yew-comp-state">Afs5MAE=</script><!--</[use_prepared_state::use_prepared_state_with_suspension_works::{{closure}}::Comp]>--></div><!--</?>--><!--</[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--</[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--</[use_prepared_state::use_prepared_state_with_suspension_works::{{closure}}::App]>-->"#
|
||||
);
|
||||
|
||||
gloo::utils::document()
|
||||
|
||||
@ -42,7 +42,7 @@ async fn use_transitive_state_works() {
|
||||
assert_eq!(
|
||||
s,
|
||||
// div text content should be 0 but state should be 12345.
|
||||
r#"<!--<[use_transitive_state::use_transitive_state_works::{{closure}}::App]>--><!--<[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--<[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--<?>--><div><!--<[use_transitive_state::use_transitive_state_works::{{closure}}::Comp]>--><div>0</div><script type="application/x-yew-comp-state">ATkwAAAB</script><!--</[use_transitive_state::use_transitive_state_works::{{closure}}::Comp]>--></div><!--</?>--><!--</[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--</[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--</[use_transitive_state::use_transitive_state_works::{{closure}}::App]>-->"#
|
||||
r#"<!--<[use_transitive_state::use_transitive_state_works::{{closure}}::App]>--><!--<[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--<[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--<?>--><div><!--<[use_transitive_state::use_transitive_state_works::{{closure}}::Comp]>--><div>0</div><script type="application/x-yew-comp-state">Afs5MAE=</script><!--</[use_transitive_state::use_transitive_state_works::{{closure}}::Comp]>--></div><!--</?>--><!--</[yew::suspense::component::feat_csr_ssr::BaseSuspense]>--><!--</[yew::suspense::component::feat_csr_ssr::Suspense]>--><!--</[use_transitive_state::use_transitive_state_works::{{closure}}::App]>-->"#
|
||||
);
|
||||
|
||||
gloo::utils::document()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user