Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e3d7f6f3f2 | ||
|
|
56d0556240 | ||
|
|
0170897bbb |
No files matched your search
@@ -320,9 +320,11 @@ release and after touching `src/wire.rs`, `src/negotiation.rs`,
|
||||
`BiStream`, `BidiStreamSource`, `AuthContext`, `Identity`,
|
||||
`IdentityProvider`, `AccessControl`, `OwnershipProvider`,
|
||||
`OwnershipStore`, `InMemoryOwnershipStore`, `HandlerError`,
|
||||
`StreamError`) come from `alkcall::core`. alkcall is v0.8.x —
|
||||
breaking changes are expected at this major-zero stage; this is the
|
||||
first real consumer, so we find and fix issues upstream rather than
|
||||
working around them. Pin `alkcall = "0.8.1"` (0.8.1 fixes the
|
||||
duplicate adopt/open channel-state destruction found by alkcall's
|
||||
fuzz campaign) and bump deliberately.
|
||||
`StreamError`) come from `alkcall::core`. alkcall is v0.10.x —
|
||||
breaking changes are expected at this major-zero stage; this is the
|
||||
first real consumer, so we find and fix issues upstream rather than
|
||||
working around them. Pin `alkcall = "0.10.1"` (0.10.1 is the
|
||||
adoption-window ordering fix: the `adopt_channel` install→drain
|
||||
window is atomic, so a routed chunk can no longer jump ahead of
|
||||
parked early arrivals or get parked forever past the drain — and bump
|
||||
deliberately.
|
||||
@@ -4,6 +4,99 @@ All notable changes to this crate are documented here. The format is
|
||||
based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
|
||||
this crate adheres to [Semantic Versioning](https://semver.org/).
|
||||
|
||||
## [0.8.1] - 2026-10-22
|
||||
|
||||
The alkcall 0.10.1 adoption: a dependency bump only — no source change
|
||||
in alktty. alkcall 0.10.1 is the adoption-window ordering fix (review
|
||||
013, routed from alkgit's wave-2 gate): a chunk routed by the demux
|
||||
inside the `adopt_channel` install→drain window could be delivered
|
||||
ahead of earlier-parked early arrivals (inverting the channel's
|
||||
byte-stream order) and a related chunk could sit parked forever past
|
||||
the drain. alktty adopts channels only as a consumer-side client
|
||||
(`TtySession::open_via_channels`, which opens and then adopts the
|
||||
session channel), so the fix applies to every channels-path session
|
||||
under multi-process load — the reassembled chunk stream now preserves
|
||||
wire-arrival order through the adoption window. The surface of the fix
|
||||
is private to alkcall (`ChannelState` and the `install_locked` path):
|
||||
no API, wire-format, or documented-cap change; the behavior only
|
||||
strengthens. The direct-ALPN path does not touch the adopt machinery
|
||||
at all.
|
||||
|
||||
### Changed
|
||||
|
||||
- **`alkcall` requirement updated to `0.10.1`; lockfile bumped from
|
||||
0.10.0 to 0.10.1.** Version-requirement-only (0.10.1 is inside the
|
||||
`0.10` caret family; alkcall 0.10.1 changed no type alktty touches
|
||||
— the fix surface is private). alktty's public signatures reference
|
||||
alkcall types, so downstream crates composing alktty with the fixed
|
||||
alkcall pick this patch bump up on their next `cargo update`.
|
||||
|
||||
## [0.8.0] - 2026-10-19
|
||||
|
||||
The alkcall 0.10.0 adoption: a dependency bump only — no source change
|
||||
in alktty. alkcall 0.10.0 is the gateway ownership seam release
|
||||
(`GatewayDispatch::with_ownership_provider`, the declared
|
||||
static-fallback opt-in, and the loud unwired-spine default). All of it
|
||||
touches surfacing alktty never uses: alktty consults the
|
||||
`OwnershipProvider` seam directly on its own paths (the direct-ALPN
|
||||
scope gate and the channels establisher), not through the gateway
|
||||
dispatch spine, and the wire surface and `OperationContext` shape are
|
||||
unchanged. The wire format, the direct-ALPN path, the `TtyBackend`
|
||||
trait, and alktty's public API surface are unchanged.
|
||||
|
||||
### Changed
|
||||
|
||||
- **BREAKING (ecosystem-coordination) — `alkcall` bumped to 0.10.0.**
|
||||
alkcall 0.10.0 changed no type that alktty touches: the seam alktty
|
||||
exercises (`ChannelCore`/`register_openable_with_establisher`/
|
||||
`OpenEstablisher`/`OpenHandler`/`Establishment`, `ChannelClient`,
|
||||
`OwnershipProvider`/`OwnershipStore`/`InMemoryOwnershipStore`) is
|
||||
shape-identical to 0.9.0 — the loud unwired-spine default applies
|
||||
only to `resource_type`-gated ops served through `GatewayDispatch`,
|
||||
which alktty never registers against. alktty's public signatures
|
||||
reference alkcall types, so downstream crates must now unify on
|
||||
alkcall 0.10.0. Minor bump per the 0.x ecosystem-coordination rule
|
||||
(raising the minimum requirement is breaking — hence 0.8.0, not a
|
||||
patch release).
|
||||
- **`alkcall` requirement updated to `0.10.0`; lockfile bumped from
|
||||
0.9.0 to 0.10.0.** Verification counts are unchanged from the 0.7.0
|
||||
baseline (113 default / 137 all-features) — the adoption required no
|
||||
source change in alktty.
|
||||
|
||||
## [0.7.0] - 2026-10-14
|
||||
|
||||
The alkcall 0.9.0 adoption: a dependency bump only — no source change
|
||||
in alktty. alkcall 0.9.0 is the stub-sweep release (the marked-pub open
|
||||
contract, `channel/control`, `channel/resources/subscribe`, and
|
||||
`op/register` forward-through are real implementations). All of
|
||||
alkcall's semver-relevant changes (`ManagerError::InvalidAdopt`, the
|
||||
`RelayError::PubTypedOpen` removal, the `register_imported`
|
||||
`Result` return, `Establishment` losing `Debug`, the new
|
||||
`register_openable*` refusal of `Pub`-typed specs) touch surfacing
|
||||
alktty never uses — alktty's open op is `Sub`-typed and it only
|
||||
constructs `Establishment` (whose `new` is unchanged). The wire format,
|
||||
the direct-ALPN path, the `TtyBackend` trait, and alktty's public API
|
||||
surface are unchanged.
|
||||
|
||||
### Changed
|
||||
|
||||
- **BREAKING (ecosystem-coordination) — `alkcall` bumped to 0.9.0.**
|
||||
alkcall 0.9.0 changed no type that alktty touches: the open-op
|
||||
machinery alktty registers through (`ChannelCore`/
|
||||
`register_openable_with_establisher`/`OpenEstablisher`/`OpenHandler`
|
||||
/`Establishment`/`ChannelPlan`, `ChannelClient::open_channel`,
|
||||
`ChannelOpenError::CallFailed`) is shape-identical to 0.8.1 — the
|
||||
four stub implementations are net-new surfaces on ops alktty does
|
||||
not exercise, the established-wrapper refusal of `Pub`-typed specs
|
||||
does not apply to alktty's `Sub`-typed open op, and the removed
|
||||
`RelayError::PubTypedOpen` was never referenced. alktty's public
|
||||
signatures reference alkcall types, so downstream crates must now
|
||||
unify on alkcall 0.9.0. Minor bump per the 0.x
|
||||
ecosystem-coordination rule (raising the minimum requirement is
|
||||
breaking — hence 0.7.0, not a patch release).
|
||||
- **`alkcall` requirement updated to `0.9.0`; lockfile bumped from
|
||||
0.8.1 to 0.9.0.**
|
||||
|
||||
## [0.6.0] - 2026-09-28
|
||||
|
||||
The fuzzing adoption: a cargo-fuzz workspace over the four wire-facing
|
||||
@@ -405,6 +498,9 @@ alknet mono-repo.
|
||||
the client→backend pump is aborted at session end instead of
|
||||
lingering until the client disconnects.
|
||||
|
||||
[0.8.1]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.8.1
|
||||
[0.8.0]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.8.0
|
||||
[0.7.0]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.7.0
|
||||
[0.6.0]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.6.0
|
||||
[0.5.0]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.5.0
|
||||
[0.4.1]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.4.1
|
||||
|
||||
Generated
+3
-3
@@ -27,9 +27,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alkcall"
|
||||
version = "0.8.1"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf6af1e4af1460480849adf959c972d65deeafc36f4101064ced1ce6d1adfd5b"
|
||||
checksum = "690d747f42baf385dc22cd120f79d43cf1ea239bc426675e0e1e225b57fc031a"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes",
|
||||
@@ -48,7 +48,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alktty"
|
||||
version = "0.6.0"
|
||||
version = "0.8.1"
|
||||
dependencies = [
|
||||
"alkcall",
|
||||
"async-trait",
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "alktty"
|
||||
version = "0.6.0"
|
||||
version = "0.8.1"
|
||||
edition = "2021"
|
||||
rust-version = "1.88"
|
||||
license = "MIT OR Apache-2.0"
|
||||
@@ -29,7 +29,7 @@ default = []
|
||||
local = ["dep:portable-pty", "dep:tokio-util", "tokio/process", "tokio/rt-multi-thread"]
|
||||
|
||||
[dependencies]
|
||||
alkcall = "0.8.1"
|
||||
alkcall = "0.10.1"
|
||||
# Minimal, wasm-clean tokio features. `local` adds `process` +
|
||||
# `rt-multi-thread` (non-wasm). Do NOT use `features = ["full"]` — it
|
||||
# pulls in `signal`/`fs`/`net` which break `wasm32-unknown-unknown`.
|
||||
|
||||
Generated
+3
-3
@@ -27,9 +27,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alkcall"
|
||||
version = "0.8.1"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf6af1e4af1460480849adf959c972d65deeafc36f4101064ced1ce6d1adfd5b"
|
||||
checksum = "690d747f42baf385dc22cd120f79d43cf1ea239bc426675e0e1e225b57fc031a"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes",
|
||||
@@ -48,7 +48,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alktty"
|
||||
version = "0.5.0"
|
||||
version = "0.8.1"
|
||||
dependencies = [
|
||||
"alkcall",
|
||||
"async-trait",
|
||||
|
||||
+3
-1
@@ -588,7 +588,9 @@ mod tests {
|
||||
json!({ "carriage": "raw", "backend": "mock", "cmd": ["true"] }),
|
||||
)
|
||||
.await;
|
||||
assert!(result.is_ok(), "valid params establish, got {result:?}");
|
||||
if let Err(e) = result {
|
||||
panic!("valid params establish, got {e:?}");
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
Reference in new issue
Block a user