Go 1.25 nie zmienia składni. Zmienia zachowanie w produkcji.
Wydanie z sierpnia 2025 idzie utartą ścieżką Go: kompatybilność zostaje, a większość zysków siedzi w runtime, toolchainie i bibliotece standardowej. Jeśli wołasz Go w Kubernetesie albo piszesz testy współbieżne, te zmiany poczujesz szybciej niż na changelogu.
Container aware GOMAXPROCS
Wcześniej Go domyślnie brało liczbę logicznych CPU hosta. W podałe z limitem 2 CPU na 32 rdzeniowym nodzie potrafiło to rozjechać scheduling i zużycie.
W 1.25 runtime patrzy na limity cgroup i dostosowuje GOMAXPROCS. Mniej niespodzianek przy horizontal pod autoscaling, mniej ręcznego ustawiania env w każdym Deploymentcie. Nadal możesz nadpisać wartość, gdy mierzysz coś nietypowego.
testing/synctest bez eksperymentu
Paczka do testowania współbieżności wyszła z trybu eksperymentalnego. Jeśli pisałeś flaky testy z time.Sleep „na wszelki wypadek”, synctest daje kontrolowane środowisko bez czekania na prawdziwy zegar.
func TestWorker(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
// logika z goroutines i kanałami
// bez losowych sleepów „żeby zdążyło”
})
}
Dla serwisów z workerami, fan-outem i timeoutami to oszczędza godziny debugowania CI.
Eksperymenty: json/v2 i Green Tea GC
Go 1.25 trzyma je za GOEXPERIMENT, więc nie włączaj ich ślepo na produkcji pierwszego dnia.
GOEXPERIMENT=jsonv2 daje nowe API wokół JSON z lepszą wydajnością i bardziej przewidywalnym marshalingiem. Warto odpalić na stagingu przy serwisach, które żyją z dużych payloadów.
GOEXPERIMENT=greenteagc celuje w GC przy dużej liczbie małych obiektów. Jeśli macie serwis cache’ujący dużo małych struktur, zmierzcie p50/p99 pauz przed i po.
Tooling i binarki
DWARF 5 zmniejsza debug info i przyspiesza linkowanie dużych binarek. go build -asan domyślnie szuka leaków po stronie C, co przy cgo bywa niewygodne, ale łapie realne problemy wcześniej. Przy czystym Go zwykle nie zauważysz różnicy.
Czy aktualizować z 1.24
Tak, jeśli:
- deployujesz do kontenerów z CPU limits,
- macie flaky testy współbieżne,
- chcecie krótszy feedback z toolchaina na dużych monorepo.
Poczekaj z eksperymentami JSON i GC, dopóki nie macie benchmarków na własnym ruchu. Bump z 1.24 do 1.25 bywa spokojny, bo język prawie się nie ruszył, a runtime lepiej rozumie kontenery.