Google har släppt en förhandsvisning av den nya versionen av programmeringsspråket Go. Version 1.18 lägger till funktionalitet för 'generisk' programmering med så kallade 'parameteriserade' typer.
Med deras egna ord är det den viktigaste och största förändringen av programmeringsspråket sedan lanseringen av Go version 1. Tanken bakom generics är att den nu tillåter funktionalitet för att representera funktioner och datastrukturer genom att modifiera typerna. Detta utesluter den "allmänhet" som tillåts genom att definiera en gränssnittstyp som ett sätt att abstrahera de faktiska data som förs till en funktion.
Google indikerar att Go-utvecklare borde inse att funktionaliteten utan tvekan kommer att leda till nya buggar. De bör därför närma sig dessa "generika" med försiktighet.
Andra funktioner i Go 1.18 Beta
Utöver ovanstående funktionalitet har den nya förhandsvisningen även inbyggt stöd för att skriva fuzzing-baserade tester. Dessa tester kan automatiskt hitta indata som gör att program kraschar eller returnerar ogiltiga svar. Go 1.18 Beta erbjuder också ett nytt "Go workspace-läge". Detta gör att programmerare kan arbeta med flera Go-moduler samtidigt. Detta är särskilt användbart för stora projekt, enligt Google.
Dessutom lägger version 1.18 Beta till funktionalitet med ett utökat go version -m kommando. Detta kommando lagrar nu detaljer som kompilatorflaggor. Ett program kan nu fråga sina egna byggdetaljer med kommandot debug.ReadBuildInfo.
Dessutom har fler registerbaserade samtalskonventioner, tillgängliga sedan Go 1.17, lagts till i förhandsvisningen. Där denna funktionalitet i den tidigare versionen endast var lämplig för att snabba upp Go-koden på x86- och x64-system, är den nu även lämplig för ARM64- och PPC64-baserade system. Detta bör ge upp till 20 procent högre hastighet.