Skip to main content

Snakeway v0.10.0

Highlights

Observability

  • OpenTelemetry support fleshed out
  • Request tracing with span context propagation
  • Async telemetry initialization

Configuration overhaul (snakeway-conf)

  • Deferred upstream DNS resolution to connection time instead of startup
  • ACME directories now require pre-provisioning (no auto-creation)
  • Reworked device config loading, validation, and lowering
  • Eliminated duplicate validation

WASM device API

  • on_stream_request_body hook added with BodyChunk/BodyResult types
  • wit-bindgen upgraded, WIT bindings updated

Everything else

Repository restructuring

  • Moved source code into a crates/ workspace layout: snakeway, snakeway-conf, snakeway-core, snakeway-wit, snakeway-tests
  • Moved integration tests from tests/integration/ to crates/snakeway-tests/
  • Adopted workspace-level package metadata in Cargo.toml

Core library buildout (snakeway-core)

  • All business logic extracted/moved into snakeway-core
  • New runtime state management, server module, and types
  • Device pipeline rework: device trait extracted, explicit re-exports, WASM device improvements
  • Identity device added
  • Device path scoping (devices can now be scoped to specific URL paths)
  • ServiceId optimized from String to Arc<str>
  • Hotpath profiling instrumentation added
  • CL.TE smuggling check moved to early_request_filter
  • Removed redundant header lowercasing (HTTP library already canonicalizes)

Testing and CI

  • Fleshed out integration test suite with HTTP replay tests (raw .http fixture files over TCP)
  • Refactored ConfigBuilder for integration tests
  • Added Criterion microbenchmarks in snakeway-core/benches/ with a public bench_api module
  • Added sccache to CI, test count badges, coverage badges
  • Multi-platform build/release workflow (x86_64 + aarch64 musl)
  • Nextest configuration added

Dependency upgrades

  • wasmtime/wasi 42 -> 43, wit-bindgen 0.50 -> 0.56
  • criterion 0.5 -> 0.8, rand 0.9 -> 0.10, sha2 0.10 -> 0.11
  • tokio 1.48 -> 1.52, reqwest -> 0.13, tokio-tungstenite -> 0.29

Packaging and distribution

  • Dockerfile added
  • .dockerignore added
  • Packaging/distribution infrastructure (Phase 6)

Documentation and tooling

  • CLAUDE.md and 8 skill files added
  • Docusaurus docs resynced, versioning enabled
  • Justfile significantly expanded (+343 lines), decomposed into modular recipes
  • LLM_DISCLOSURE.md added
  • Public API renamed (run_cli -> run)