Highlights
- Fixed an H2MUX server lifecycle race that could panic with
Header called after Handler finishedwhen an upstream close raced a late response write/flush. - Updated the build toolchain to Go 1.27.0.
- Improved cold H2MUX session readiness by requiring an HTTP/2 PING acknowledgement before publishing a client session.
Fork fixes
- Made H2MUX stream close wait for active writes and reject writes after handler shutdown.
- Aligned sing-mux padding lengths with the canonical 256–767 byte range.
- Fixed SMUX v1 receive head-of-line stalls with balanced per-stream buffering and bounded one-frame ingress credit.
- Hardened Mihomo startup/reconnect interoperability using its post-up readiness contract.
Upstream changes
- Merged the current upstream Xray-core changes and dependency updates, including
golang.org/x/netv0.58.0.
Compatibility notes
- No configuration migration is required.
- The padding reader remains compatible with valid non-canonical peer padding lengths and contents.
- Built with Go 1.27.0 for the release workflow.
Validation
- Unit, race, checkptr, SMUX/H2MUX/VLESS interoperability, reconnect stress, RemnaNode integration, and Linux/amd64 build checks were exercised.
- The functional and stress suites passed. The pre-release performance comparison reported a VLESS median regression of 15–19% against its 10% policy threshold; this release was explicitly authorized despite that performance-only gate.