chore: raise rust-version floor to 1.88

The 1.85 claim is now false at the dependency level: the lockfile pins
alkcall 0.7.x, and alkcall 0.7.1 raised its MSRV floor to 1.88, so no
1.85 toolchain can resolve this dependency graph regardless of what
Cargo.toml declares. Raising the floor keeps the claim honest and
aligns with the ecosystem floor. Verified: on a 1.85 toolchain with
--ignore-rust-version, the build fails in the graph (icu_locale_core
2.3.0, MSRV 1.86, via alkcall's jsonschema -> idna chain) before any
alktunnels code is reached — the raise is dependency-driven, and
unlike alktty, two clippy lints promoted since 1.85 surfaced here,
both test-only and behavior-identical:

- tests/harness.rs: unreachable_code — the hanging-establisher probe
  ends in a typed Err(EstablishmentError::HandlerError) instead of an
  unreachable!() cast (the sleep never completes; the per-op timeout
  cancels the task, so behavior is unchanged)
- tests/end_to_end.rs: uninlined_format_args — channel_id inlined
  into the format! string

Version-line bump deferred (crate is unpublished); no CHANGELOG here
yet.

Verification:
- 1.88: test 71 default / 91 all-features pass, clippy --all-targets
  --all-features -D warnings, wasm32-unknown-unknown check + clippy
  clean (target component installed)
- stable 1.94: test 71/91 pass, clippy --all-targets --all-features
  -D warnings, fmt, doc --no-deps, wasm32 check + clippy clean
This commit is contained in:
2026-09-10 03:52:04 +00:00
parent 63dbdb64a5
commit 5792efba39
3 changed files with 9 additions and 8 deletions

View File

@@ -2,7 +2,7 @@
name = "alktunnels"
version = "0.1.0"
edition = "2021"
rust-version = "1.85"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
description = "Arbitrary tunnel protocol: bidirectional TCP, UDP, and unix-socket tunnels over alkcall channels. Producer/consumer protocol crate."
repository = "https://git.alk.dev/alkdev/alktunnels"
@@ -19,7 +19,7 @@ default = []
local = ["tokio/net"]
[dependencies]
alkcall = "0.7.0"
alkcall = "0.7.1"
tokio = { version = "1", default-features = false, features = ["rt", "sync", "io-util", "macros", "time"] }
bytes = "1"
futures = "0.3"

View File

@@ -496,7 +496,7 @@ async fn reverse_concurrent_same_resource_no_handoff_race() {
let (accepted_end, local_end) = tokio::io::duplex(64 * 1024);
let session = session.pump_against(accepted_end).await;
let (mut l_read, mut l_write) = tokio::io::split(local_end);
let msg = format!("racer-{i}-{}", channel_id);
let msg = format!("racer-{i}-{channel_id}");
l_write.write_all(msg.as_bytes()).await.expect("write");
l_write.flush().await.expect("flush");
let mut buf = vec![0u8; msg.len()];

View File

@@ -263,11 +263,12 @@ pub async fn wire_with(
Some(Arc::new(|_input: serde_json::Value, _auth| {
Box::pin(async {
tokio::time::sleep(std::time::Duration::from_secs(3600)).await;
unreachable!("hanging establisher must be timed out, not resolve")
as Result<
alkcall::channels::operations::Establishment,
alkcall::channels::operations::EstablishmentError,
>
Err(
alkcall::channels::operations::EstablishmentError::HandlerError {
message: "hanging establisher resolved; must be timed out"
.to_string(),
},
)
})
})),
alktunnels::producer::make_tunnel_pump_handler(),