Releases: Dicklesworthstone/asupersync
Release list
asupersync v0.3.9
asupersync v0.3.9
Correctness + hardening release (successor to v0.3.6; 0.3.7/0.3.8 were internal version-only steps).
Correctness (fresh-eyes bug sweep, each with a regression test)
- time: sleeps/timeouts beyond the ~7-day timer-wheel horizon no longer complete early — the clamped wheel fire is now tracked (
registered_partial+TimerDriverApi::max_timer_duration) and re-armed, while legitimate fires (including across driver migration / fallback) still complete authoritatively. - combinator/bulkhead:
try_acquireis no longer starved indefinitely by an abandonedenqueue— it drains only timed-out entries before the fast path (nowthreaded throughtry_acquire/call/call_weighted). - http/1 client: a withheld
Expect: 100-continuerequest body no longer returns the connection to the keep-alive pool in an indeterminate framing state (body_withheldforces a drop, matching hyper). - scheduler:
CancelProtocolValidatorno longer leaks one state-machine entry per task/region/obligation ever created (unbounded growth) — retirement paths now remove them. - channel/watch
send_modifylost-update; stream Merge >64-pending 100%-CPU busy-poll; runtime blocking_pool ARM Dekker SeqCst fences; io_uring rearm-failure dropping a completion batch. - database/mysql stops advertising
CLIENT_MULTI_RESULTS(silent wrong-result on reuse); kafkacommit_offsetsmoved off the executor. - observability: coherent single-snapshot Prometheus histogram export (fixes
+Inf != _counttorn read); TLA export keys entities on(index, generation).
Performance (non-atp hotspots)
BytesMut::advancezero-alloc front-offset bump; the h1/grpc/h2 discard-only decode paths now use it (-5.8% http1/parse).- stream
Mergecooperative-park (eliminates the >64-pending busy spin).
All changes landed on main with per-fix regression tests; library suite + clippy -D warnings (pedantic + nursery) green.
v0.3.6
First tagged release since v0.3.4 (v0.3.5 was a crates.io-only version marker with no git tag). Published across the workspace to crates.io: asupersync, asupersync-macros, franken-kernel, franken-evidence, franken-decision — all v0.3.6.
Headline changes since 0.3.5
Runtime
block_onon thecurrent_threadruntime now drives ambient timers and parks to the next deadline, so sub-250ms timeouts after the first timer are no longer floored to the ~250ms idle-poll cap (fixes #52).
ATP / QUIC transport
- ACK SACK-range window widened 32→96.
- Handshake loss recovery: retain client Finished flight; server re-offers on early 1-RTT evidence.
- Control-stream un-starvation under paced bulk (stall-PTO backoff, threshold requeue, control-priority flush).
- Sender-generate telemetry un-confounded (pacer sleeps timed separately).
Toolchain / API
- Pinned
nightly-2026-07-05; adopted thefetch_update→try_updaterename. - API surface (breaking vs pre-0.3.5 consumers):
Cx::for_testingremoved in favor ofCx::current/Cx::with_current;LockErrorgainedTimedOut(Time).
Full landed-capability detail is in CHANGELOG.md (Unreleased → 0.3.6 section).
v0.3.4
Asupersync v0.3.4 — corrects a broken 0.3.3 and is the recommended release.
Why 0.3.4 (0.3.3 is yanked)
asupersync 0.3.3 shipped a compile regression in src/atp/policy/scope.rs ((start, end).into() where &[u8] was expected), so the crate failed to build for any downstream enabling tls (E0277). 0.3.3 is yanked from crates.io. 0.3.4 fixes the digest call and is verified to compile as a dependency with test-internals + tls-native-roots.
[dependencies]
asupersync = "0.3.4"All workspace crates are published at 0.3.4 (asupersync, asupersync-macros, asupersync-conformance, asupersync-browser-core, asupersync-tokio-compat, franken-kernel, franken-evidence, franken-decision, frankenlab).
Binaries
asupersync-v0.3.4-linux-amd64.tar.gz— Linux x86_64 (gnu)asupersync-v0.3.4-windows-amd64.zip— Windows x86_64SHA256SUMS.txt
v0.3.3
asupersync 0.3.3 on crates.io is yanked: it fails to compile for downstream consumers that enable tls features (E0277 in src/atp/policy/scope.rs). Use 0.3.4, which fixes this.
v0.3.1
asupersync v0.3.1
Patch release carrying the output of a deep-dive post-v0.3.0 test-suite hardening pass: 25 real production-code bugs fixed (most of them pre-existing, surfaced by the recently-expanded metamorphic test suite), plus a large batch of test-harness drift fixes that unblock cargo test --workspace --lib.
Production bugs fixed (highest severity → lowest)
Concurrency correctness:
src/runtime/reactor/epoll.rs— SIGABRTIO Safety violation: owned file descriptor already closedunder parallel tests. Test was closing a raw fd thatOwnedFdstill claimed; concurrent allocations could grab the freed number and get their fds silently closed by the test's subsequentdup2. Replaced withdup2that keeps the fd number continuously-valid. Also added earlyEBADFrejection forraw_fd < 0and anorphanedtombstone set for idempotentderegisterafterEBADF/ENOENT.src/observability/runtime_integration.rs— parking_lot RwLock self-deadlock.if let Some(x) = self.task_traces.write().remove(&id) { ... self.task_traces.read() ... }extended the write guard's lifetime into theif letbody where the subsequent.read()deadlocked on the same non-reentrant lock.src/runtime/epoch_gc.rs— epoch reclamation left safe items stranded behind unsafe ones.try_advance_and_cleanup/force_advance_and_cleanuppassednew_epoch - 1as the safe boundary instead ofnew_epoch, so items tagged with the just-retired epoch were never reclaimed.src/runtime/epoch_tracking.rs—GlobalEpochCounter::try_advancehad "simplified: always try to advance" stubbed in place of the rate limiting the docstring promised. Restored CAS-based rate limiting.DeferredCleanupQueue::execute_safe_cleanupsused<=instead of strict<on the safe-epoch comparison — violated the pinning invariant.
HTTP protocol correctness / security:
src/http/h1/codec.rs— missing bare-CR scan (RFC 9112 §2.2 request-smuggling vector) and no printable-ASCII validation on the request target (raw NUL, DEL, non-ASCII accepted). Both closed.src/http/h3_native.rs— RFC 9297 DATAGRAM frame decode treated a truncated payload as a streaming short-read instead of peer misbehavior. Alsocan_send_early_datausedsaturating_addand silently returnedtruefor over-budget 0-RTT sends.
WebSocket protocol:
src/net/websocket/handshake.rs::selected_protocolviolated RFC 6455 §4.2.2 by iterating the server's list rather than the client's offered order, and silently returnedNoneinstead ofProtocolMismatchwhen client offers did not match a non-empty supported set.
Observability:
src/observability/diagnostics.rs::find_leaked_obligationsflagged obligations held by Completed tasks as leaks (false positives). Now skips Completed holders.src/observability/obligation_tracker.rs—>→>=on age-threshold soleak_age_threshold = Duration::ZEROactually performs the documented "immediate leak detection".
Channel / combinator:
src/channel/atomicity_test.rs::CancellationInjector::should_cancel— bit-shift bug:(state >> 16) as f64 / u32::MAX as f64produced values up to 2^48, sorandom < probabilitywas almost never true. Masked to u32.src/channel/broadcast.rs— ring-buffer overrun when sender burst > capacity. Now interleaves drain with send.src/combinator/bulkhead.rs— utilization boundary off-by-one (documented "at 80% or above" used strict>).
Cancel / progress-certificate:
src/cancel/progress_certificate.rs—EvidenceEntry.boundis contractually a probability but production wrote step magnitudes into it. Downstream verifiers generating false "bound not tight" alerts. Fixed all 7 construction sites to emit probabilities.
RaptorQ:
src/raptorq/systematic.rs—checked_add(padding_delta).expect(...)panicked at theu32::MAXESI boundary. RFC 6330 requires wrapping.src/raptorq/linalg.rs— Gaussian solvers preferentially reportedInconsistentwhen bothSingularandInconsistentwere present, obscuring correct failure classification.src/raptorq/decoder.rs::inactivate_and_solve_with_proof— recorded inactivations into the elimination trace AFTER fallible validation, so fail-closed paths left the trace empty.
Plus misc: obligation::saga::compensation MR reframing, lab::oracle::* count/threshold contracts, fs::uring unused import, three_lane.rs missing let mut.
Known remaining failures
~85 tests in runtime::scheduler, plan::fixtures, service::retry, supervision, and misc modules continue to fail. These are tracked for a follow-up release; none block library consumers that don't touch those specific surfaces.
Verification
cargo check --workspace --all-targetson ts2 via rch: clean.cargo test --workspace --lib: 14,257 pass, 86 fail, 0 SIGABRT (v0.3.0 was 9,350 pass, 110 fail, SIGABRT abort).
crates.io (all v0.3.1)
asupersync · asupersync-macros · asupersync-conformance · asupersync-browser-core · asupersync-tokio-compat · franken-kernel · franken-evidence · franken-decision · frankenlab
Binaries (local DSR fallback — GH Actions was still throttled)
asupersync-v0.3.1-linux-amd64.tar.gz— Linux x86_64 (cli feature)asupersync-v0.3.1-windows-amd64.zip— Windows x86_64 (native MSVC)SHA256SUMS.txt— digests
darwin/arm64 missing again — the Mac build host could not reach crates.io during the build (same network issue as v0.3.0). Will be added when the Mac host is back online.
See CHANGELOG.md for the full release entry.
v0.3.0
asupersync v0.3.0
Six-week multi-agent development sweep landing hundreds of metamorphic relations, golden snapshots, fuzz targets, and conformance fixtures, plus a coordinated dependency refresh and a large compile-and-test hygiene pass.
crates.io publishes (all v0.3.0)
asupersyncasupersync-macrosasupersync-conformanceasupersync-browser-coreasupersync-tokio-compatfranken-kernelfranken-evidencefranken-decisionfrankenlab
Dependency wave
sha1 0.10→0.11, sha2 0.10→0.11, hmac 0.12→0.13 (coordinated digest-0.11 bump), hashbrown 0.15→0.17, rusqlite 0.38→0.39, lz4_flex 0.12→0.13, signal-hook 0.3→0.4, rayon 1.11→1.12, plus wide semver-compatible refresh via cargo update.
Concurrency bugs fixed
src/observability/runtime_integration.rs: parking_lot RwLock self-deadlock inon_task_cancel_completed/on_region_closed— write guard's lifetime extended intoif letblock where a read-lock was reacquired. Fixed by extracting the removal to aletbinding.src/service/discover.rs: DNS Condvar coalesce gainedwaiters: AtomicUsize+waiter_count()observability so tests can wait for a follower to park before releasing the leader. 5 previously-racy tests rewired.src/runtime/scheduler/three_lane.rs: one-line test-onlylet mut schedulerfix.
See CHANGELOG.md for the full entry.
Binaries (local DSR fallback — GH Actions was throttled)
asupersync-v0.3.0-linux-amd64.tar.gz— Linux x86_64 (cargo build --release --bin asupersync --features cli)asupersync-v0.3.0-windows-amd64.zip— Windows x86_64 (native MSVC build)SHA256SUMS.txt— digests for both
darwin/arm64 is missing — the Mac build host could not reach crates.io during the build (network connectivity issue). Will be added in a follow-up release.
v0.2.9
v0.2.8
Asupersync v0.2.8
Massive release: 956 commits since v0.2.7 spanning 410 bug fixes, 222 features, and comprehensive audit coverage across 500+ files.
Highlights
Runtime & Scheduler
- Fixed ThreeLaneLocalWaker priority inversion for cancelled local tasks
- Actual cancel masking in
commit_section(was previously a no-op) - Reactor chaos stats aggregation and auto-advance for lab-reactor events
- Spurious wake injection with per-task deduplication
RaptorQ (RFC 6330)
- Validated ObjectParams block-layout metadata drift detection
- Infinity-safe decode threshold calculations
- Pre-calibration e-process evidence protection
- Source payload hash in decode proofs for replay verification
- GF(256) SIMD threshold fix and c==1 addmul fast path
- SparseRow duplicate/out-of-range canonicalization
Networking & HTTP
- HTTP/1.1 Expect: 100-continue early handling with codec preview
- HEAD response body suppression per RFC 9110
- WebSocket cancellation-triggered close handshake timeout
- DNS resolver fail-closed on custom nameservers
- MySQL IPv6 bracket support and connect timeout
Channels & Sync
- FlushGuard RAII prevents message loss in FaultSender
- Watch channel
borrow_and_updateatomic TOCTOU fix - Reference-counted gRPC HealthReporters
Correctness & Safety
- Double-panic guards across all Drop-based leak detectors
- Obligation ledger
abort_by_idfor drain paths and reset safety - Kafka consumer partition validation and duplicate detection
- Generation-based stale DNS resolution protection
- Snapshot trailing bytes rejection
- Distributed region quorum-loss close on last replica
Testing & Observability
- Structured logging schema enforcement (rch-backed repro commands)
- Phase marker validation for E2E test logs
- Comprehensive audit coverage: 500+ files, ~65 bugs found and fixed
Platforms
| Platform | Architecture | File |
|---|---|---|
| Linux | x86_64 | asupersync-0.2.8-linux-amd64.tar.gz |
| macOS | Apple Silicon (arm64) | asupersync-0.2.8-darwin-arm64.tar.gz |
| Windows | x86_64 | asupersync-0.2.8-windows-amd64.tar.gz |
Checksums (SHA-256)
See SHA256SUMS.txt for verification.
Install
# Linux
curl -sSL https://github.com/Dicklesworthstone/asupersync/releases/download/v0.2.8/asupersync-0.2.8-linux-amd64.tar.gz | tar xz
sudo mv asupersync-linux-amd64 /usr/local/bin/asupersync
# macOS (Apple Silicon)
curl -sSL https://github.com/Dicklesworthstone/asupersync/releases/download/v0.2.8/asupersync-0.2.8-darwin-arm64.tar.gz | tar xz
sudo mv asupersync-darwin-arm64 /usr/local/bin/asupersyncv0.2.5
Release v0.2.5\n\n- workspace crate versions aligned to 0.2.5\n- release train prepared for crates.io publication with license-file metadata (MIT + OpenAI/Anthropic rider)\n