Skip to content

Release v1.0.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 19:24
· 4 commits to main since this release

Highlights

  • First stable release. The exported API of pkg/grpctunnel is now covered by semantic-versioning compatibility guarantees: no breaking changes without a major version bump, enforced in CI by the API-compatibility guard. Functionally identical to v0.2.0 plus the robustness suite below.

Stability statement

  • Supported public API: pkg/grpctunnel (server bridge, client dialing, hardening options, lifecycle controls, tooling helpers) and pkg/wasm/dialer (browser dial primitives).
  • pkg/bridge remains deprecated; it is frozen but not removed.
  • Every release gate is green: lint, race + coverage (≥90%), fuzz seed corpus, goroutine-leak regression, 32 MiB streaming soak, Playwright browser e2e, gosec, govulncheck, CodeQL, API governance, and benchmark trend gates.

Added

  • Leak and robustness regression suite: goroutine-leak tests over repeated connect/RPC/disconnect cycles (handler mode, native mode, and rejected-upgrade paths), abuse-guard slot-accounting verification, read-limit breach enforcement, 32 MiB streaming soak tests through both transports, and sustained-throughput benchmarks (~615 MB/s handler / ~835 MB/s native on 64 KB chunks, loopback).
  • Connection-lifecycle documentation for long-lived, high-volume streams (video/file transfer): chunking guidance, end-to-end backpressure, keepalive interaction with active streams, and resumption semantics.

Changed

  • CI: fuzz seed corpus now runs deterministically via -run '^Fuzz' instead of timed -fuzztime fuzzing, which intermittently failed at the fuzztime boundary with the Go fuzz engine's "context deadline exceeded" worker-shutdown race on loaded runners.
  • CI: the Playwright driver is installed from npm (playwright-core@1.60.0 + PLAYWRIGHT_DRIVER_PATH) — the playwright.azureedge.net driver CDN was retired and 404s for every driver version, and playwright-go v0.6100.0 is unusable (its tag declares the old mxschmitt module path).
  • Cleaned residual machine-generated parse* naming from documentation code samples (docs/core/README.md, GETTING_STARTED_ADVANCED.md).