Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db051dd068 | ||
|
|
b548a47449 |
No files matched your search
@@ -181,7 +181,7 @@ implementation agents.
|
|||||||
`alkcall::core`. Do not vendor copies into this crate. alkcall is
|
`alkcall::core`. Do not vendor copies into this crate. alkcall is
|
||||||
v0.10.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
|
this is an early consumer, so we find and fix issues upstream
|
||||||
rather than working around them. Pin `alkcall = "0.10.0"` and bump
|
rather than working around them. Pin `alkcall = "0.10.1"` and bump
|
||||||
deliberately. The establishment surface (alkcall ADR-049 +
|
deliberately. The establishment surface (alkcall ADR-049 +
|
||||||
amendments) is load-bearing for this crate: SOCKS5 session opens
|
amendments) is load-bearing for this crate: SOCKS5 session opens
|
||||||
use `register_openable_with_establisher` so a refused/auth-failed
|
use `register_openable_with_establisher` so a refused/auth-failed
|
||||||
@@ -279,6 +279,16 @@ cargo clippy --target wasm32-unknown-unknown -- -D warnings
|
|||||||
cargo publish --dry-run --allow-dirty # before a release
|
cargo publish --dry-run --allow-dirty # before a release
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Release steps (after the version bump + verification)
|
||||||
|
|
||||||
|
1. Commit the release (bump + CHANGELOG/README/AGENTS pins).
|
||||||
|
2. Tag it: `git tag -a vX.Y.Z -m "release: vX.Y.Z — <the tag>"`
|
||||||
|
— **annotated**, always (v0.1.0/v0.2.0 are lightweight; annotated
|
||||||
|
since the v0.3.0 release, 2026-10-19).
|
||||||
|
3. `git push origin main && git push origin vX.Y.Z`.
|
||||||
|
4. `cargo publish` (no `--allow-dirty` once the tree is clean).
|
||||||
|
5. Confirm with `cargo search` / `cargo info`.
|
||||||
|
|
||||||
The corpus replay is the fuzz gate (the alkcall §7.9 posture): it
|
The corpus replay is the fuzz gate (the alkcall §7.9 posture): it
|
||||||
replays every committed seed through the same invariant functions the
|
replays every committed seed through the same invariant functions the
|
||||||
fuzz targets run, on stable, without nightly. Campaigns (nightly,
|
fuzz targets run, on stable, without nightly. Campaigns (nightly,
|
||||||
|
|||||||
+40
-1
@@ -6,6 +6,43 @@ this crate adheres to [Semantic Versioning](https://semver.org/).
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.3.1] - 2026-10-22
|
||||||
|
|
||||||
|
The dependency-patch release: the alkcall substrate bumped 0.10.0 →
|
||||||
|
0.10.1 (the adoption-window ordering fix) and the alktunnels sibling
|
||||||
|
bumped 0.4.0 → 0.4.1 (its dependency-patch ride). No alksocks API
|
||||||
|
change, no wire change; the fix surface is private upstream, so there
|
||||||
|
is no change on this crate's paths. Patch rather than minor: both
|
||||||
|
dependency bumps are semver-compatible (0.10.x → 0.10.1, 0.4.x →
|
||||||
|
0.4.1), matching the alktunnels 0.4.0 → 0.4.1 ride.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- **alkcall 0.10.0 → 0.10.1** (crates.io). The adoption-window
|
||||||
|
ordering fix (review 013, routed from alkgit's wave-2 gate): a
|
||||||
|
chunk routed by the channels demux inside the `adopt_channel`
|
||||||
|
install→drain window was delivered ahead of earlier-parked early
|
||||||
|
arrivals, inverting the channel's byte-stream order (observed
|
||||||
|
downstream as pkt-line desync in alkgit under multi-process load),
|
||||||
|
and a related loss variant (a chunk parked after the drain had
|
||||||
|
removed the queue, parked forever) is closed. The install and its
|
||||||
|
park-drain are one atomic section; no await runs inside it. Relevant
|
||||||
|
in principle to this crate's reverse-path adopt flow (the
|
||||||
|
bind-first establisher surfaces channels through the same adopt
|
||||||
|
path), though no change in this crate's own surfaces was needed —
|
||||||
|
the fix surface is private (`ChannelState`), the behavior only
|
||||||
|
strengthens. No API, wire-format, or documented-cap behavior change
|
||||||
|
upstream.
|
||||||
|
- **alktunnels 0.4.0 → 0.4.1** (the dependency-patch ride on alkcall
|
||||||
|
0.10.1). No alktunnels API/wire change; the composed providers see
|
||||||
|
none of it.
|
||||||
|
- **fuzz/shared harness pin** (the only file-level contacts are the
|
||||||
|
`Cargo.toml`s/`Cargo.lock` — plus the doc pins): 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.10.0 → 0.10.1 with the substrate (a drifting pin produces a
|
||||||
|
duplicate-type compile failure, not silent drift).
|
||||||
|
|
||||||
## [0.3.0] - 2026-10-19
|
## [0.3.0] - 2026-10-19
|
||||||
|
|
||||||
The dependency-major release: the alkcall substrate bumped 0.9.0 →
|
The dependency-major release: the alkcall substrate bumped 0.9.0 →
|
||||||
@@ -181,6 +218,8 @@ campaigns clean, no crate bugs.
|
|||||||
[`AssociateSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.AssociateSession.html
|
[`AssociateSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.AssociateSession.html
|
||||||
[`BindSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.BindSession.html
|
[`BindSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.BindSession.html
|
||||||
|
|
||||||
[Unreleased]: https://git.alk.dev/alkdev/alksocks/compare/v0.2.0...HEAD
|
[Unreleased]: https://git.alk.dev/alkdev/alksocks/compare/v0.3.0...HEAD
|
||||||
|
[0.3.1]: https://git.alk.dev/alkdev/alksocks/compare/v0.3.0...v0.3.1
|
||||||
|
[0.3.0]: https://git.alk.dev/alkdev/alksocks/compare/v0.2.0...v0.3.0
|
||||||
[0.2.0]: https://git.alk.dev/alkdev/alksocks/compare/v0.1.0...v0.2.0
|
[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
|
[0.1.0]: https://git.alk.dev/alkdev/alksocks/releases/tag/v0.1.0
|
||||||
+11
-11
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "alksocks"
|
name = "alksocks"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.88"
|
rust-version = "1.88"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
@@ -28,12 +28,12 @@ composed = ["dep:alktunnels"]
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# The substrate (convention 11): pinned, bump deliberately, never
|
# The substrate (convention 11): pinned, bump deliberately, never
|
||||||
# transitively. 0.10.0: the gateway ownership-seam release (review 012,
|
# transitively. 0.10.1: the adoption-window ordering fix (review 013,
|
||||||
# `GatewayDispatch::with_ownership_provider` + the loud unwired-spine
|
# routed from alkgit's wave-2 gate) — install+park-drain is one atomic
|
||||||
# default) — none of it on this crate's paths; the gateway module isn't
|
# section in the channels demux; the fix surface is private upstream, so
|
||||||
# a feature this crate enables and registry dispatch on the native wire
|
# no change on this crate's paths (relevant in principle to the
|
||||||
# is untouched.
|
# bind-first adopt flow; the behavior only strengthens).
|
||||||
alkcall = "0.10.0"
|
alkcall = "0.10.1"
|
||||||
tokio = { version = "1", default-features = false, features = ["rt", "sync", "io-util", "macros", "time"] }
|
tokio = { version = "1", default-features = false, features = ["rt", "sync", "io-util", "macros", "time"] }
|
||||||
# The fork's declared logging seam (rfc1928.md: upstream `log` calls
|
# The fork's declared logging seam (rfc1928.md: upstream `log` calls
|
||||||
# were dropped or re-pointed here); no source file references it yet —
|
# were dropped or re-pointed here); no source file references it yet —
|
||||||
@@ -48,9 +48,9 @@ futures = { version = "0.3", default-features = false, features = ["std"] }
|
|||||||
# The sibling crate (the composed egress's direct-op vehicle — ADR-008/
|
# The sibling crate (the composed egress's direct-op vehicle — ADR-008/
|
||||||
# ADR-009): rides `composed` alone. Pinned; bump deliberately
|
# ADR-009): rides `composed` alone. Pinned; bump deliberately
|
||||||
# (convention 11's deliberate-bump rule applies to siblings too).
|
# (convention 11's deliberate-bump rule applies to siblings too).
|
||||||
# 0.4.0: the dependency-major (the alkcall 0.10.0 bump), bug-fix ride,
|
# 0.4.1: the dependency-patch ride on alkcall 0.10.1, no alktunnels
|
||||||
# no alktunnels API/wire change.
|
# API/wire change.
|
||||||
alktunnels = { version = "0.4.0", optional = true }
|
alktunnels = { version = "0.4.1", optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tokio = { version = "1", features = ["full", "test-util", "macros"] }
|
tokio = { version = "1", features = ["full", "test-util", "macros"] }
|
||||||
@@ -58,4 +58,4 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|||||||
# The composed suite's topology (the alktunnels direct-op producer) —
|
# The composed suite's topology (the alktunnels direct-op producer) —
|
||||||
# dev-only: the test binary gates itself on the `composed` feature
|
# dev-only: the test binary gates itself on the `composed` feature
|
||||||
# (`#![cfg(feature = "composed")]`), the dev-dep keeps it compiling.
|
# (`#![cfg(feature = "composed")]`), the dev-dep keeps it compiling.
|
||||||
alktunnels = "0.4.0"
|
alktunnels = "0.4.1"
|
||||||
@@ -246,6 +246,15 @@ fuzz/shared harness's own alkcall pin — a mechanical lockstep bump);
|
|||||||
minor rather than patch for the same semver-visible-dependency reason
|
minor rather than patch for the same semver-visible-dependency reason
|
||||||
as 0.2.0.
|
as 0.2.0.
|
||||||
|
|
||||||
|
0.3.1 rides the alkcall bump 0.10.0 → 0.10.1 (the
|
||||||
|
adoption-window ordering fix — a chunk routed inside the demux's
|
||||||
|
install→drain window could be delivered ahead of earlier-parked
|
||||||
|
early arrivals, inverting byte-stream order; relevant in principle
|
||||||
|
to the bind-first adopt flow) and the alktunnels bump 0.4.0 → 0.4.1
|
||||||
|
(its dependency-patch ride). The fix surface is private upstream, so
|
||||||
|
there is no change on this crate's paths; patch rather than minor
|
||||||
|
because both dependency bumps are semver-compatible.
|
||||||
|
|
||||||
## Verification
|
## Verification
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ protocol layer; crate-level vocabulary is producer/consumer.
|
|||||||
|
|
||||||
```
|
```
|
||||||
alksocks (default — wasm-clean)
|
alksocks (default — wasm-clean)
|
||||||
├── alkcall 0.10.0 (core types: Connection, ProtocolHandler, BiStream,
|
├── alkcall 0.10.1 (core types: Connection, ProtocolHandler, BiStream,
|
||||||
│ AuthContext, Identity, AccessControl, OwnershipProvider;
|
│ AuthContext, Identity, AccessControl, OwnershipProvider;
|
||||||
│ channels: ChannelCore/ChannelClient,
|
│ channels: ChannelCore/ChannelClient,
|
||||||
│ register_openable_with_establisher, pump_bidi,
|
│ register_openable_with_establisher, pump_bidi,
|
||||||
@@ -135,7 +135,7 @@ alksocks (local feature) — non-wasm by design
|
|||||||
the first-party local backends + front doors
|
the first-party local backends + front doors
|
||||||
|
|
||||||
alksocks (composed feature)
|
alksocks (composed feature)
|
||||||
└── adds: alktunnels 0.4.0 (the direct op egress; the bind-first
|
└── adds: alktunnels 0.4.1 (the direct op egress; the bind-first
|
||||||
listen accept; ADR-008's composed providers) — its default
|
listen accept; ADR-008's composed providers) — its default
|
||||||
crate is wasm-clean; the composed providers use only the
|
crate is wasm-clean; the composed providers use only the
|
||||||
ungated channels surface (verify with the wasm check)
|
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 |
|
| *(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) |
|
| `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.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) |
|
| `composed` | the composed providers over alktunnels 0.4.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) |
|
||||||
|
|
||||||
## Module Map
|
## Module Map
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
alksocks = { path = "../.." }
|
alksocks = { path = "../.." }
|
||||||
alkcall = "0.10.0"
|
alkcall = "0.10.1"
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
bytes = "1"
|
bytes = "1"
|
||||||
tokio = { version = "1", features = ["rt", "io-util", "macros"], default-features = false }
|
tokio = { version = "1", features = ["rt", "io-util", "macros"], default-features = false }
|
||||||
|
|||||||
Reference in new issue
Block a user