alkcall 0.8.0 lands both graduation upstream asks (review 008): - U-2: the establisher → reply projection (ADR-049 amendment 3, Establishment::with_reply_field + open_channel_with_reply) — the bind-first 'bound' carrier - U-1: flavor-form open-op ids in discovery (ADR-047 amendment 3) — the direct/forwarded ops reconstruct their marker through discovery plus the bonus: in-tree ChannelRelay + HubLegTemplate (ADR-051) — the hub re-produce machinery is upstream now; 'bound' flows end-to-end per-hop truthful, realizing ADR-008 §6's sentence. OQ-TN-12 resolves upstream (the composition helper a hub proxy needed is alkcall's ChannelRelay); spec docs note the asks landed. No alktunnels API or wire change in this bump — the graduation implementation (tasks/tunnels) follows. Verification: cargo test 71 passed (91 all-features), clippy --all-targets -D warnings, fmt --check, wasm32-unknown-unknown check + clippy clean
3.8 KiB
3.8 KiB
Changelog
All notable changes to this crate are documented here. The format is based on Keep a Changelog, and this crate adheres to Semantic Versioning.
Unreleased
Spec work for the graduation (ADRs 007/008 — the direct op, listen
metadata + the forwarded op) is committed and pinned; implementation
is decomposed in tasks/tunnels/ and lands in the next release. The
dependency bump below is the only behavior-affecting change so far
(no wire or API change at this level yet).
Changed
- alkcall 0.7.1 → 0.8.0 (crates.io). The two upstream asks the
graduation ADRs depend on landed (alkcall review 008): the
establisher → reply projection (
Establishment::with_reply_field, ADR-049 amendment 3 — the bind-firstboundcarrier) and flavor-form open-op ids in discovery (ADR-047 amendment 3 —channels/tunnel/direct-shaped ops reconstruct theirchannel_openmarker through discovery, so hub relay wraps them as channels, not plain forwarding stubs). Plus the bonus:ChannelRelay+HubLegTemplate(ADR-051) — the hub re-produce machinery the graduation's re-produce story assumed would be assembly-layer is now in-tree, withboundflowing end-to-end per-hop-truthful (ADR-051 §6, ADR-008 §6's sentence realized). No alktunnels API or wire change in this bump; 71/91 tests pass, wasm-clean verified.
0.1.0 - 2026-09-10
The initial release: the v1 tunnel protocol implementation over alkcall 0.7.x channels, spec-complete (Phase 1) and implementation- complete (Phase 2, review 001 findings remediated).
Added
- Wire surface (one-way-door stable from this release): the
channels/tunnel/subopen op on thealk/tunnelALPN; params{resource, substrate}(deny_unknown_fields; ADR-001); thetunnel:openscope gate (ADR-006). - Data-plane codec (ADR-003): raw pass-through for stream
substrates (
tcp,unix); mandatory[len: u16 BE]boundary- preserving framing forudp(len = 0a legal empty datagram, never EOF; oversize rejected at frame time; truncation fails loud — OQ-TN-13). The BAST contract:docs/architecture/bast.md. - Producer half (ADR-004):
ResourceRegistry,tunnel_establisher(dial shape) andlisten_establisher(the-Rfar-side accept shape) over alkcall's establishment surface (ADR-049),make_tunnel_pump_handler(thepump_biditwo-pump contract, alkcall ADR-050), and theregister_tunnel_openable/register_tunnel_listen_openableregistration helpers. - Consumer half (ADR-005):
TunnelSession—open(forward) /adopt(reverse), substrate-shaped data planes (stream_halves,take_halves,send_datagram/recv_datagram), pump ownership (pump_against), teardown ownership (close/join/Drop);open_reverse_channelfor the hub-call path. localfeature (non-wasm):dial_tcp,bind_tcp+TcpListenerHalvesaccept loop,connect_udpwrapped in the FRAMEDUdpHalfadapter (the codec composes at the substrate boundary — review 001 U-1),dial_unix, and the all-substratelocal_dialclosure. Stdio intentionally out of scope (alktty's pipe mode owns process stdio — OQ-TN-14).- Identity seam (alkcall 0.7.0 CF-005/CF-006): payload-token >
ServingConfig.identity> transport identity precedence proven end-to-end; the per-call opener identity reaches the establisher. - Test suite: 71 tests default / 91 with
local, including the review 001 gates (real-socket UDP framing probes, theAcceptQueuelost-wakeup regression, the identity-precedence matrix). Wasm-clean default crate verified (wasm32-unknown-unknowncheck + clippy).