2min Devops

Go 1.27 brengt generic methods voor eigen type parameters

Go 1.27 brengt generic methods voor eigen type parameters

Google heeft Go 1.27 uitgebracht. De release voegt generic methods toe aan de taal, voor het bepalen van eigen type parameters. Ook de geheugenallocatie in de runtime kreeg een opknapbeurt.

De nieuwe versie is te downloaden via de officiële downloadpagina van het project. Go 1.27 raakt vrijwel alle onderdelen van het ecosysteem: de taalspecificatie, de toolchain en de runtime.

De opvallendste wijziging is de ondersteuning voor generic methods. Een method mag voortaan eigen type parameters declareren, in plaats van beperkt te blijven tot de type parameters van de receiver.

Daarnaast mag een key in een struct literal nu elke geldige field selector zijn. Velden in geneste of embedded structs zijn daardoor direct te initialiseren. Ook is function type inference veralgemeniseerd naar alle assignment contexts. Generieke functies werken nu zonder expliciete type-argumenten in composite literals, type conversions en channel sends.

Runtime en tooling

De runtime maakt gebruik van size-specialized memory allocation. Daarmee dalen de allocatiekosten voor kleine objecten onder de 80 bytes met maximaal 30 procent. Voor programma’s die veel alloceren komt dat neer op circa 1 procent betere prestaties. Het goroutineleak-profiel in runtime/pprof is nu algemeen beschikbaar en spoort permanent geblokkeerde goroutines automatisch op.

Aan de toolkant krijgt go fix nieuwe modernizers: atomictypes, embedlit, slicesbackward en unsafefuncs. go doc ondersteunt voortaan queries met versienummer, zoals go doc example.com/pkg@v1.2.3. En go mod tidy voegt meerdere require-blokken in go.mod samen tot de standaardstructuur van twee blokken.

Tip: Google brengt Go 1.18 Beta met generic code uit