Google har gitt ut en forhåndsvisning av den nye versjonen av programmeringsspråket Go. Versjon 1.18 legger til funksjonalitet for 'generisk' programmering med såkalte 'parameteriserte' typer.
Med deres egne ord er det den viktigste og største endringen i programmeringsspråket siden utgivelsen av Go versjon 1. Tanken bak generikk er at den nå tillater funksjonalitet for å representere funksjoner og datastrukturer ved å modifisere typene. Dette utelukker "generaliteten" som er tillatt ved å definere en grensesnitttype som en måte å abstrahere de faktiske dataene som bringes til en funksjon.
Google indikerer at Go-utviklere bør innse at funksjonaliteten utvilsomt vil føre til nye feil. De bør derfor nærme seg disse "generika" med forsiktighet.
Annen funksjonalitet i Go 1.18 Beta
I tillegg til funksjonaliteten ovenfor, har den nye forhåndsvisningen også innebygd støtte for å skrive fuzzing-baserte tester. Disse testene kan automatisk finne innganger som får programmer til å krasje eller returnere ugyldige svar. Go 1.18 Beta tilbyr også en ny "Go workspace-modus". Dette lar programmerere jobbe med flere Go-moduler samtidig. Dette er spesielt nyttig for store prosjekter, ifølge Google.
Videre legger versjon 1.18 Beta til funksjonalitet med en utvidet go-versjon -m-kommando. Denne kommandoen lagrer nå detaljer som kompilatorflagg. Et program kan nå spørre etter sine egne byggedetaljer med kommandoen debug.ReadBuildInfo.
Også mer registerbasert ringekonvensjon, tilgjengelig siden Go 1.17, er lagt til i forhåndsvisningen. Der denne funksjonaliteten i forrige versjon kun var egnet for å øke hastigheten på Go-koden på x86- og x64-systemer, er den nå også egnet for ARM64- og PPC64-baserte systemer. Dette skal gi opptil 20 prosent mer fart.