Important
This release enables you to read and write the connection-level context across goroutines!
🚀 Features
- feat: add SafeContext()/SetSafeContext() for concurrency-safe user-defined context (#760)
🛩 Enhancements
- opt: use sync.Once to ensure listener opens only once (#739)
- Optimize next highest power of two calculation (#737)
- opt: use net/url for validating network addresses (#728)
🐛 Bugfixes
- fix: downgrade x/sync and x/sys to versions compatible with Go 1.20 (#758)
- bug: switch to
socket.Dupineventloop.enrollto enableclose-on-exec(#745) - bug: set
FD_CLOEXECflag when enrolling a client FD (#743) - bug: fix Unix address parsing absolute path (#731)
- bug: make Conn.Write/Writev return the non-retryable error if any (#715)
📚 Documentation
- docs: update inaccurate comments on Conn.Next/Peek (#718)
🗃 Misc
- ci: bump golangci-lint to v2.12.2 to fix Go 1.26 toolchain panic (#761)
- chore: bump up Go modules dad475e
- ci: bump up Go version to 1.26 (#755)
- pkg/ring/ring_buffer: remove the unused field "bs" (#736)
- test: add more tests for bad network addresses (#729)
- chore: fix typos and improve comments (#724)
Full Changelog: v2.9.0...v2.10.0
Thanks to all these contributors: @Copilot, @dxasu, @gunli, @panjf2000 and copilot-swe-agent[bot] for making this release possible.