Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f56b44589c | ||
|
|
9ed3e8c83d |
No files matched your search
@@ -179,9 +179,9 @@ implementation agents.
|
||||
`Identity`, `IdentityProvider`, `AccessControl`,
|
||||
`OwnershipProvider`, `HandlerError`, `StreamError` come from
|
||||
`alkcall::core`. Do not vendor copies into this crate. alkcall is
|
||||
v0.8.x — breaking changes are expected at this major-zero stage;
|
||||
v0.10.x — breaking changes are expected at this major-zero stage;
|
||||
this is an early consumer, so we find and fix issues upstream
|
||||
rather than working around them. Pin `alkcall = "0.8.0"` and bump
|
||||
rather than working around them. Pin `alkcall = "0.10.0"` and bump
|
||||
deliberately. The establishment surface (alkcall ADR-049 +
|
||||
amendments) is load-bearing for this crate: SOCKS5 session opens
|
||||
use `register_openable_with_establisher` so a refused/auth-failed
|
||||
@@ -312,7 +312,7 @@ dependency-graph failure is expected.
|
||||
producer/consumer protocol crate on alkcall channels; the backend
|
||||
inversion point, wasm-clean default crate, and feature-gated local
|
||||
backend precedents.
|
||||
- **alkcall** — `/workspace/@alkdev/alkcall` (v0.8.0, crates.io). The
|
||||
- **alkcall** — `/workspace/@alkdev/alkcall` (v0.9.x, crates.io). The
|
||||
substrate: call protocol + channels multiplexing. This crate
|
||||
consumes `alkcall::core` types and the channels
|
||||
`ChannelCore`/`ChannelClient`/`register_openable_with_establisher`
|
||||
|
||||
+72
-1
@@ -6,6 +6,76 @@ this crate adheres to [Semantic Versioning](https://semver.org/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.3.0] - 2026-10-19
|
||||
|
||||
The dependency-major release: the alkcall substrate bumped 0.9.0 →
|
||||
0.10.0 (the gateway ownership-seam release) and the alktunnels sibling
|
||||
bumped 0.3.0 → 0.4.0 (its dependency-major ride on alkcall 0.10.0). No
|
||||
alksocks API change, no wire change; zero code contact with the
|
||||
0.10.0 breaking surface (compile + suite green unchanged), which is
|
||||
why this is a minor bump rather than a patch: the semver-incompatible
|
||||
dependency bumps plus this crate's public re-exports of alkcall types
|
||||
(`SocksOpenError::Open`/`open_ref` carry `ChannelOpenError`) make it
|
||||
semver-visible to downstream consumers (matching the alktunnels
|
||||
0.3.0 → 0.4.0 ride).
|
||||
|
||||
### Changed
|
||||
|
||||
- **alkcall 0.9.0 → 0.10.0** (crates.io). The gateway
|
||||
ownership-seam release (review 012): `GatewayDispatch` gains
|
||||
`with_ownership_provider` / `with_static_ownership_fallback`, and
|
||||
the previously-silent static fallback becomes loud — an unwired
|
||||
spine refuses (an error envelope, `FORBIDDEN`, pre-dispatch) an op
|
||||
whose spec carries `access_control.resource_type`. None of it is on
|
||||
this crate's paths: alksocks does not use the gateway module —
|
||||
SOCKS5 opens serve via `ChannelCore::register_openable`/
|
||||
`register_openable_with_establisher` registry dispatch on the native
|
||||
wire, which 0.10.0 leaves untouched. All of this crate's alkcall
|
||||
contact points (`ChannelClient::open_channel*`,
|
||||
`ChannelOpenError`, `Establishment::default()`,
|
||||
`register_openable*`, `pump_bidi`, the `core` types) are unchanged
|
||||
between 0.9.0 and 0.10.0. 145 default / 171 all-features tests pass;
|
||||
wasm-clean verified.
|
||||
- **alktunnels 0.3.0 → 0.4.0** (the dependency-major ride on alkcall
|
||||
0.10.0). No alktunnels API/wire change; the composed providers see
|
||||
none of it.
|
||||
- **fuzz/shared harness pin** (the only bump contact): the harness
|
||||
declares its own `alkcall` pin (it constructs `ChannelOpenError`
|
||||
values for the invariant functions), so the two pins must stay in
|
||||
lockstep — bumped 0.9.0 → 0.10.0 with the substrate (a drifting pin
|
||||
produces a duplicate-type compile failure, not silent drift).
|
||||
|
||||
## [0.2.0] - 2026-10-14
|
||||
|
||||
The dependency-major release: the alkcall substrate bumped 0.8.1 →
|
||||
0.9.0 (the stub-sweep release) and the alktunnels sibling bumped
|
||||
0.2.1 → 0.3.0. No alksocks API change, no wire change; no code
|
||||
contact with the 0.9.0 breaking surface at all (compile + suite green
|
||||
unchanged), which is why this is a minor bump rather than a patch:
|
||||
the semver-incompatible dependency bumps plus this crate's public
|
||||
re-exports of alkcall types make it semver-visible to downstream
|
||||
consumers (matching the alktunnels 0.2.1 → 0.3.0 ride).
|
||||
|
||||
### Changed
|
||||
|
||||
- **alkcall 0.8.1 → 0.9.0** (crates.io). The stub-sweep release: the
|
||||
marked-pub open contract (S-01), `channel/control` (S-02),
|
||||
`channel/resources/subscribe` (S-03), and `op/register`
|
||||
forward-through (S-04) replace the four always-failing stubs. None
|
||||
of the four stubs were on this crate's paths (no marked-pub
|
||||
registration, no control-handle subscription, no resource
|
||||
enumerator use, no generic `op/register` announcements). The 0.9.0
|
||||
breaking list (`ManagerError::InvalidAdopt` additive,
|
||||
`RelayError::PubTypedOpen` removal, the
|
||||
`register_imported`/`register_imported_all` return change,
|
||||
`Establishment` dropping its `Debug` derive) is untouched by this
|
||||
crate's API use — `Establishment::default()` is the only
|
||||
`Establishment` contact, in the session gate. 145 default / 171
|
||||
all-features tests pass; wasm-clean verified.
|
||||
- **alktunnels 0.2.1 → 0.3.0** (the dependency-major ride on alkcall
|
||||
0.9.0). No alktunnels API/wire change; the composed providers see
|
||||
none of it.
|
||||
|
||||
## [0.1.0] - 2026-09-27
|
||||
|
||||
The initial release: SOCKS5 (RFC 1928) as a produced resource on
|
||||
@@ -111,5 +181,6 @@ campaigns clean, no crate bugs.
|
||||
[`AssociateSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.AssociateSession.html
|
||||
[`BindSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.BindSession.html
|
||||
|
||||
[Unreleased]: https://git.alk.dev/alkdev/alksocks/compare/v0.1.0...HEAD
|
||||
[Unreleased]: https://git.alk.dev/alkdev/alksocks/compare/v0.2.0...HEAD
|
||||
[0.2.0]: https://git.alk.dev/alkdev/alksocks/compare/v0.1.0...v0.2.0
|
||||
[0.1.0]: https://git.alk.dev/alkdev/alksocks/releases/tag/v0.1.0
|
||||
+11
-9
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "alksocks"
|
||||
version = "0.1.0"
|
||||
version = "0.3.0"
|
||||
edition = "2021"
|
||||
rust-version = "1.88"
|
||||
license = "MIT OR Apache-2.0"
|
||||
@@ -28,10 +28,12 @@ composed = ["dep:alktunnels"]
|
||||
|
||||
[dependencies]
|
||||
# The substrate (convention 11): pinned, bump deliberately, never
|
||||
# transitively. 0.8.1: the duplicate-adopt/open fix (the alkcall 0.8.1
|
||||
# fuzz finding — the consumer sessions' open/adopt paths are exposed to
|
||||
# the replayed-open-op scenario its changelog names).
|
||||
alkcall = "0.8.1"
|
||||
# transitively. 0.10.0: the gateway ownership-seam release (review 012,
|
||||
# `GatewayDispatch::with_ownership_provider` + the loud unwired-spine
|
||||
# default) — none of it on this crate's paths; the gateway module isn't
|
||||
# a feature this crate enables and registry dispatch on the native wire
|
||||
# is untouched.
|
||||
alkcall = "0.10.0"
|
||||
tokio = { version = "1", default-features = false, features = ["rt", "sync", "io-util", "macros", "time"] }
|
||||
# The fork's declared logging seam (rfc1928.md: upstream `log` calls
|
||||
# were dropped or re-pointed here); no source file references it yet —
|
||||
@@ -46,9 +48,9 @@ futures = { version = "0.3", default-features = false, features = ["std"] }
|
||||
# The sibling crate (the composed egress's direct-op vehicle — ADR-008/
|
||||
# ADR-009): rides `composed` alone. Pinned; bump deliberately
|
||||
# (convention 11's deliberate-bump rule applies to siblings too).
|
||||
# 0.2.1: the fuzzing graduation (its wave-1/wave-2 targets + the
|
||||
# alkcall 0.8.1 bump), bug-fix release, no API/wire change.
|
||||
alktunnels = { version = "0.2.1", optional = true }
|
||||
# 0.4.0: the dependency-major (the alkcall 0.10.0 bump), bug-fix ride,
|
||||
# no alktunnels API/wire change.
|
||||
alktunnels = { version = "0.4.0", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tokio = { version = "1", features = ["full", "test-util", "macros"] }
|
||||
@@ -56,4 +58,4 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||
# The composed suite's topology (the alktunnels direct-op producer) —
|
||||
# dev-only: the test binary gates itself on the `composed` feature
|
||||
# (`#![cfg(feature = "composed")]`), the dev-dep keeps it compiling.
|
||||
alktunnels = "0.2.1"
|
||||
alktunnels = "0.4.0"
|
||||
@@ -226,6 +226,26 @@ and the RFC 1928 handshake state machine. Wire-stable surface: the
|
||||
`alk/socks5` ALPN, the `channels/socks5/sub` open op with `{}` params,
|
||||
and the two scope constants — all pinned by ADRs 001–014.
|
||||
|
||||
0.2.0 rides the alkcall bump 0.8.1 → 0.9.0 (the stub-sweep release —
|
||||
the four registered-but-always-failing stubs became real
|
||||
implementations; none were on this crate's paths) and the alktunnels
|
||||
bump 0.2.1 → 0.3.0. No alksocks API change, no wire change, zero code
|
||||
contact with the 0.9.0 breaking surface; minor rather than patch
|
||||
contact with the 0.9.0 breaking surface; minor rather than patch
|
||||
because the semver-incompatible dependency bumps + this crate's
|
||||
alkcall type re-exports make it semver-visible downstream.
|
||||
|
||||
0.3.0 rides the alkcall bump 0.9.0 → 0.10.0 (the gateway
|
||||
ownership-seam release — `GatewayDispatch` ownership-provider
|
||||
threading and the loud unwired-spine default; the gateway module
|
||||
isn't on this crate's paths, registry dispatch on the native wire is
|
||||
untouched) and the alktunnels bump 0.3.0 → 0.4.0 (the dependency-major
|
||||
ride on alkcall 0.10.0). No alksocks API change, no wire change, zero
|
||||
code contact with the 0.10.0 breaking surface (the only contact is the
|
||||
fuzz/shared harness's own alkcall pin — a mechanical lockstep bump);
|
||||
minor rather than patch for the same semver-visible-dependency reason
|
||||
as 0.2.0.
|
||||
|
||||
## Verification
|
||||
|
||||
```bash
|
||||
|
||||
@@ -120,7 +120,7 @@ protocol layer; crate-level vocabulary is producer/consumer.
|
||||
|
||||
```
|
||||
alksocks (default — wasm-clean)
|
||||
├── alkcall 0.8.1 (core types: Connection, ProtocolHandler, BiStream,
|
||||
├── alkcall 0.10.0 (core types: Connection, ProtocolHandler, BiStream,
|
||||
│ AuthContext, Identity, AccessControl, OwnershipProvider;
|
||||
│ channels: ChannelCore/ChannelClient,
|
||||
│ register_openable_with_establisher, pump_bidi,
|
||||
@@ -135,7 +135,7 @@ alksocks (local feature) — non-wasm by design
|
||||
the first-party local backends + front doors
|
||||
|
||||
alksocks (composed feature)
|
||||
└── adds: alktunnels 0.2.1 (the direct op egress; the bind-first
|
||||
└── adds: alktunnels 0.4.0 (the direct op egress; the bind-first
|
||||
listen accept; ADR-008's composed providers) — its default
|
||||
crate is wasm-clean; the composed providers use only the
|
||||
ungated channels surface (verify with the wasm check)
|
||||
@@ -156,7 +156,7 @@ differential-testing behavioral reference.
|
||||
|---------|----------|------|
|
||||
| *(default)* | the RFC 1928 core (`src/rfc1928/`, ADR-013 — codecs, typestate), wire codec, open-op spec, the three seams' traits/types, producer + consumer session types — protocol only; zero kernel-net code, wasm-clean by construction | yes |
|
||||
| `local` | the crate's first-party local backends: TCP dial, UDP egress socket, BIND `TcpListener` accept, the front doors (consumer + producer local shapes); brings `tokio/net` + `socket2` into the graph | no (build error on wasm, the alktty posture) |
|
||||
| `composed` | the composed providers over alktunnels 0.2.1: direct-op egress (lazy destination→tunnel table), bind-first listen accept — adds the alktunnels dep | yes (alktunnels' default crate is wasm-clean; the composed providers use only its ungated channels surface — verify with the wasm check at implementation) |
|
||||
| `composed` | the composed providers over alktunnels 0.4.0: direct-op egress (lazy destination→tunnel table), bind-first listen accept — adds the alktunnels dep | yes (alktunnels' default crate is wasm-clean; the composed providers use only its ungated channels surface — verify with the wasm check at implementation) |
|
||||
|
||||
## Module Map
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
alksocks = { path = "../.." }
|
||||
alkcall = "0.8.1"
|
||||
alkcall = "0.10.0"
|
||||
serde_json = "1"
|
||||
bytes = "1"
|
||||
tokio = { version = "1", features = ["rt", "io-util", "macros"], default-features = false }
|
||||
|
||||
Reference in new issue
Block a user