go-1-26
SKILL.md
Go 1.26 Release Features
Quick reference for Go 1.26 new features, API changes, and migration notes.
Language Changes
new() Accepts Expressions
// Before: needed helper function or temp variable
v := 42
ptr := &v
// Go 1.26: direct expression in new()
ptr := new(42)
Age: new(yearsSince(born)) // useful for optional pointer fields
Self-Referential Generic Types
type Adder[A Adder[A]] interface {
Add(A) A
}
func algo[A Adder[A]](x, y A) A {
return x.Add(y)
}
Runtime
Green Tea GC (Default)
- 10-40% reduction in GC overhead for real-world programs
- +10% on newer amd64 CPUs (Ice Lake+, Zen 4+) via vector instructions
- Disable:
GOEXPERIMENT=nogreenteagc(removal expected Go 1.27)
Heap Base Address Randomization
- 64-bit platforms randomize heap base at startup (security)
- Disable:
GOEXPERIMENT=norandomizedheapbase64
Faster cgo (~30% overhead reduction)
Goroutine Leak Profile (Experimental)
- Enable:
GOEXPERIMENT=goroutineleakprofile - New
goroutineleakprofile type inruntime/pprof - HTTP endpoint:
/debug/pprof/goroutineleak - GC-based detection of goroutines blocked on unreachable primitives
Tools
go fix Revamped
- Complete overhaul with modernizers framework
- Source-level inliner with
//go:fix inlinedirectives - Built on Go analysis framework
go mod init Defaults
- Now defaults to
go 1.(N-1).0(e.g., Go 1.26 createsgo 1.25.0) - Override with
go get go@version
Pprof
- Web UI
-httpflag now defaults to flame graph view
Compiler & Linker
- Stack allocation: Slice backing store on stack in more situations
- windows/arm64: Internal linking mode for cgo (
-ldflags=-linkmode=internal) cmd/docremoved (usego doc)
New Standard Library Packages
crypto/hpke
Hybrid Public Key Encryption (RFC 9180) with post-quantum hybrid KEM support.
simd/archsimd (Experimental)
// Enable: GOEXPERIMENT=simd
// amd64 only: 128/256/512-bit vector types
var a, b archsimd.Int8x16
result := a.Add(b)
runtime/secret (Experimental)
Secure erasure of cryptographic temporaries. Enable: GOEXPERIMENT=runtimesecret. amd64/arm64 Linux only.
Key Standard Library Changes
errors
// New generic, type-safe, faster version of As
var target *MyError
if err, ok := errors.AsType[*MyError](err); ok {
// use err directly - no need for As + target variable
}
io
ReadAll()~2x faster, ~50% less memory allocation, returns minimal-sized slice
reflect (Iterators)
for i, f := range reflect.TypeFor[MyStruct]().Fields() {
fmt.Println(f.Name)
}
for i, m := range reflect.TypeFor[MyInterface]().Methods() {
fmt.Println(m.Name)
}
// Also: Type.Ins(), Type.Outs(), Value.Fields(), Value.Methods()
log/slog
// New multi-handler
h := slog.NewMultiHandler(jsonHandler, textHandler)
logger := slog.New(h)
bytes
// New Peek method - read without advancing
data := buf.Peek(10)
net
// New typed Dial methods with context
d := &net.Dialer{}
conn, err := d.DialTCP(ctx, "tcp", addr)
conn, err := d.DialUDP(ctx, "udp", addr)
conn, err := d.DialIP(ctx, "ip4:icmp", addr)
conn, err := d.DialUnix(ctx, "unix", addr)
net/http
ServeMuxtrailing slash redirects: now 307 (was 301)- New
HTTP2Config.StrictMaxConcurrentRequests - New
Transport.NewClientConn() httptest.Server.Client()redirectsexample.comto test server
net/url
Parse()rejects malformedhttp://::1/(usehttp://[::1]/)- Restore:
GODEBUG=urlstrictcolons=0
os
- New
Process.WithHandle()(pidfd on Linux 5.4+, Handle on Windows) OpenFileaccepts Windows-specific flags
testing
// New ArtifactDir for test output files
dir := t.ArtifactDir()
os.WriteFile(filepath.Join(dir, "debug.log"), data, 0644)
runtime/metrics
/sched/goroutines(by state),/sched/threads:threads,/sched/goroutines-created:goroutines
fmt
Errorf("x")allocates less (matcheserrors.New("x"))
image/jpeg
- Encoder/decoder replaced with faster, more accurate implementations
- Breaking: bit-for-bit output may differ
Crypto Changes
Post-Quantum TLS (Default)
SecP256r1MLKEM768andSecP384r1MLKEM1024enabled by default- Disable:
GODEBUG=tlssecpmlkem=0orConfig.CurvePreferences
Random Parameter Changes
Many crypto functions now ignore the random parameter and always use secure randomness:
crypto/dsa.GenerateKeycrypto/ecdh.Curve.GenerateKeycrypto/ecdsa.GenerateKey,SignASN1,Signcrypto/rand.Primecrypto/rsa.GenerateKey,EncryptPKCS1v15
Testing: use testing/cryptotest.SetGlobalRandom. Restore: GODEBUG=cryptocustomrand=1.
Deprecations
crypto/rsa: PKCS #1 v1.5 functions (EncryptPKCS1v15,DecryptPKCS1v15)crypto/ecdsa:PublicKey/PrivateKeybig.Intfieldsnet/http/httputil:ReverseProxy.Director(useRewrite)
GODEBUG Removals in Go 1.27
These GODEBUG settings are deprecated and will be removed:
tlsunsafeekm,tlsrsakex,tls10server,tls3desx509keypairleaf,gotypesalias,asynctimerchan
Port Changes
- macOS: Last release for macOS 12 Monterey (Go 1.27 requires 13+)
- windows/arm (32-bit): Removed
- linux/riscv64: Race detector now supported
- WebAssembly: Significantly reduced memory for heaps <16 MiB
- linux/ppc64: Last release for ELFv1 ABI
Bootstrap
- Requires Go 1.24.6+ to build
- Go 1.28 will require Go 1.26+
Weekly Installs
1
Repository
luoling8192/go-…26-skillFirst Seen
Mar 12, 2026
Security Audits
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1