The Wire · Showcase
CRYPTO/TLS TEST HARNESS GETS TEETH, COMPILER SHEDS DEADWEIGHT
By RepoJournal · Filed · About Go
Go's TLS test suite now actually catches errors it was silently dropping, while the compiler trims fat and JSON encoding ditches generics that were creating more problems than they solved.
The crypto/tls test infrastructure got a critical fix overnight [1]. Before, recorded TLS handshake tests would swallow both OpenSSL and client/server errors, replay transcripts that included partial failures, then ignore those same errors on playback—defeating the entire point of regression testing. Adding -naccept 1 to s_server arguments now forces clean exits after single connections, finally surfacing real errors. In parallel, the compiler shed unnecessary deadcode [2] as cleanup continues, and encoding/json ditched its generic implementations [3] after discovering the underlying utf8 package couldn't support them without allocations—a lesson in when generics create more friction than they eliminate. FreeBSD+race test isolation [4] and TLS handshake regeneration [5] address platform-specific flakiness. Across the ecosystem, vulndb locked toolchain requirements [6], gopls fixed a parameter type alias renaming bug [7], and ACME OrderError now includes actual problem details instead of burying diagnostics [9]. The ARM64 SVE store instruction generation [10] keeps instruction operand ordering consistent. Scattered flakiness in gopls [8] continues to demand attention, but the core improvements here strengthen the testing and diagnostics foundations everyone depends on.
Action items
- → Pull latest golang/go after crypto/tls fixes land — your TLS tests now actually work golang/go [plan]
- → Review your ACME integration error handling — OrderError.Error() is now actually useful golang/crypto [monitor]
- → Check if you're vendoring encoding/json internals — generic cleanup may affect you golang/go [plan]
References
- [1] crypto/tls: fix error handling in recorded test connections golang/go
- [2] cmd/compile: remove deadcode golang/go
- [3] encoding/json/internal/jsonwire: remove generic implementations golang/go
- [4] runtime: disable CgoCallbackX15 test on freebsd+race golang/go
- [5] crypto/tls: clean up and regenerate server recorded test handshakes golang/go
- [6] go.mod: make go1.26.2 toolchain requirement explicit golang/vulndb
- [7] go/analysis/passes/inline: fix bug renaming param type aliases golang/tools
- [8] gopls/integration/misc: Test61208 flaky golang/tools
- [9] acme: include Problem in OrderError.Error golang/crypto
- [10] arm64/instgen: make addr the last op in SVE stores golang/arch
FAQ
- What changed in Go on May 2, 2026?
- Go's TLS test suite now actually catches errors it was silently dropping, while the compiler trims fat and JSON encoding ditches generics that were creating more problems than they solved.
- What should Go teams do about it?
- Pull latest golang/go after crypto/tls fixes land — your TLS tests now actually work • Review your ACME integration error handling — OrderError.Error() is now actually useful • Check if you're vendoring encoding/json internals — generic cleanup may affect you
- Which Go repositories shipped on May 2, 2026?
- golang/go, golang/vulndb, golang/tools, golang/crypto, golang/arch