Skip to content

v26.8.12

Choose a tag to compare

@Jolymmiles Jolymmiles released this 10 Aug 09:53
· 3 commits to main since this release

Highlights

  • Added opt-in H2MUX support with "protocol": "h2mux" for outbound sing-mux carriers and automatic inbound H2MUX detection.
  • Added opt-in TCP Brutal bandwidth negotiation through brutal-opts, shared by SMUX and H2MUX.
  • Published Linux-only release assets, with unpacked executables alongside ZIP archives and digest files.
  • Supersedes v26.8.11 with restored Linux/386 Brutal build compatibility.

Fork fixes

  • Implemented H2MUX on the existing authenticated carrier using HTTP/2 prior knowledge and one CONNECT exchange per logical stream.
  • Added bounded H2MUX stream lifecycle, cancellation, replay, TCP, UDP, padding, and carrier teardown handling.
  • Added strict Brutal rate parsing, bounded negotiation diagnostics, physical-connection publication, and Linux socket ABI checks.
  • Routed the Brutal socket option through Go's architecture-aware Linux wrapper, including the 386 socketcall ABI.

Upstream changes

  • Synchronized with upstream main through commit bc6e966a.
  • Updated github.com/cloudflare/circl to 1.6.5 and docker/login-action to 4.6.0.

Compatibility notes

  • Empty or omitted smux.protocol still selects SMUX; YAMUX remains unsupported.
  • Brutal is disabled unless explicitly enabled. Both configured rates must be at least 65,536 bytes per second.
  • Brutal runtime use requires the Linux brutal TCP congestion-control module. Negotiation or socket setup failure rejects the carrier instead of silently falling back.

Validation

  • Passed unit tests for common/singmux, common/mux, app/proxyman/outbound, and infra/conf.
  • Passed race tests for common/singmux and common/mux.
  • Passed all 40 H2MUX real-process interoperability scenarios across Xray, sing-box, Mihomo, VLESS, Trojan, TCP, UDP, and padding on/off.
  • Built all 15 Linux release targets locally, including Linux/386 and MIPS hard-float/soft-float variants.
  • Built static stripped Linux/386 and Linux/amd64 release executables.