From 3099263c1ed49771ddf19bc02189abc856a0c79b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Tue, 15 Sep 2026 09:26:27 +0200 Subject: [PATCH] Use caret requirements for published dependencies instead of exact pins Perry's P0 integration of turnloop 0.1.0-alpha.2 had to downgrade libc (0.2.189 -> 0.2.175), tokio (via mio/rustix), redis (1.6.0 -> 1.2.4, now with a future-incompatibility warning), wasm-bindgen/js-sys/web-sys and tempfile across its whole workspace, because turnloop's manifests pinned libc, windows-sys, wasm-bindgen, js-sys, wasip2/wasip3, getrandom, futures-io and the protocol codecs with '='. A library must not force its consumers' graph. Published crates now use caret requirements at the same minimum versions. turnloop's own builds are unchanged: Cargo.lock still satisfies every manifest under --locked, and the lockfile-based seven-day soak still gates what CI builds. Dev-only pins (loom, gungraun, the publish = false contract crate's wasm-bindgen-test stack) stay exact. --- Cargo.toml | 12 ++++++------ crates/turnloop-io/Cargo.toml | 2 +- crates/turnloop-wasi-random/Cargo.toml | 4 ++-- crates/turnloop/Cargo.toml | 10 +++++----- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cabbd02..b571fef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,13 +15,13 @@ turnloop-io = { path = "crates/turnloop-io", version = "0.1.0-alpha.3" } turnloop-wasi-random = { path = "crates/turnloop-wasi-random", version = "0.1.0-alpha.3" } turnloop = { path = "crates/turnloop", version = "0.1.0-alpha.3" } turnloop-contract = { path = "crates/turnloop-contract", version = "0.1.0-alpha.2" } -libc = "=0.2.175" -futures-io = "=0.3.31" +libc = "0.2.175" +futures-io = "0.3.31" bytes = "1.11" -postgres-protocol = "=0.6.12" -mysql_common = { version = "=0.38.2", default-features = false } -bson = { version = "=3.1.0", default-features = false, features = ["compat-3-0-0", "serde", "serde_json-1"] } +postgres-protocol = "0.6.12" +mysql_common = { version = "0.38.2", default-features = false } +bson = { version = "3.1.0", default-features = false, features = ["compat-3-0-0", "serde", "serde_json-1"] } base64 = "0.22" sha1 = "0.11" sha2 = "0.11" @@ -31,7 +31,7 @@ md-5 = "0.11" stringprep = "0.1" flate2 = { version = "1", default-features = false, features = ["rust_backend"] } # Keep lettre's encoding helper on the shared base64 0.22 API used by the DB codecs. -email-encoding = "=0.4.1" +email-encoding = "0.4.1" lettre = { version = "0.11.23", default-features = false, features = ["builder"] } rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] } serde_json = "1" diff --git a/crates/turnloop-io/Cargo.toml b/crates/turnloop-io/Cargo.toml index 9b0e7ab..657bf03 100644 --- a/crates/turnloop-io/Cargo.toml +++ b/crates/turnloop-io/Cargo.toml @@ -30,4 +30,4 @@ name = "allocations" harness = false [target.'cfg(windows)'.dependencies] -windows-sys = { version = "=0.61.2", features = ["Win32_NetworkManagement_Dns", "Win32_Foundation", "Win32_Networking_WinSock"] } +windows-sys = { version = "0.61.2", features = ["Win32_NetworkManagement_Dns", "Win32_Foundation", "Win32_Networking_WinSock"] } diff --git a/crates/turnloop-wasi-random/Cargo.toml b/crates/turnloop-wasi-random/Cargo.toml index 75f4e3d..43252f4 100644 --- a/crates/turnloop-wasi-random/Cargo.toml +++ b/crates/turnloop-wasi-random/Cargo.toml @@ -15,5 +15,5 @@ role = "support" workspace = true [target.'cfg(all(target_os = "wasi", target_env = "p3"))'.dependencies] -getrandom03 = { package = "getrandom", version = "=0.3.4" } -getrandom04 = { package = "getrandom", version = "=0.4.3" } +getrandom03 = { package = "getrandom", version = "0.3.4" } +getrandom04 = { package = "getrandom", version = "0.4.3" } diff --git a/crates/turnloop/Cargo.toml b/crates/turnloop/Cargo.toml index 0f431a4..9ccfb5e 100644 --- a/crates/turnloop/Cargo.toml +++ b/crates/turnloop/Cargo.toml @@ -26,7 +26,7 @@ futures-io = { workspace = true, optional = true } libc.workspace = true [target.'cfg(windows)'.dependencies] -windows-sys = { version = "=0.61.2", features = [ +windows-sys = { version = "0.61.2", features = [ "Wdk_Storage_FileSystem", "Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", @@ -47,11 +47,11 @@ loom-filters = ["models"] miri-filters = ["timer::tests", "table::tests"] [target.'cfg(all(target_os = "wasi", target_env = "p2"))'.dependencies] -wasip2 = "=1.0.3" +wasip2 = "1.0.3" [target.'cfg(all(target_os = "wasi", target_env = "p3"))'.dependencies] -wasip3 = { version = "=0.8.0", optional = true } +wasip3 = { version = "0.8.0", optional = true } [target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies] -wasm-bindgen = "=0.2.108" -js-sys = "=0.3.85" +wasm-bindgen = "0.2.108" +js-sys = "0.3.85"