Google heeft een preview uitgebracht van de nieuwe versie van programmeertaal Go. Versie 1.18 voegt functionaliteit toe voor 'generieke' programmering met zogenaamde 'geparametriseerde' typen.
In hun eigen woorden is het de belangrijkste en grootste wijziging aan de programmeertaal sinds de release van Go versie 1. Het idee achter generieke geneesmiddelen is dat het nu functionaliteit mogelijk maakt voor het weergeven van functies en datastructuren door de typen te wijzigen. Dit sluit de 'algemeenheid' uit die wordt toegestaan door een interfacetype te definiëren als een manier om de feitelijke gegevens die naar een functie worden gebracht te abstraheren.
Google geeft aan dat Go-ontwikkelaars zich moeten realiseren dat de functionaliteit ongetwijfeld tot nieuwe bugs zal leiden. Ze moeten deze 'generics' dan ook voorzichtig benaderen.
Andere functionaliteit in Go 1.18 Beta
Naast de bovenstaande functionaliteit heeft de nieuwe preview ook ingebouwde ondersteuning voor het schrijven van op fuzzing gebaseerde tests. Deze tests kunnen automatisch ingangen vinden die ervoor zorgen dat programma's vastlopen of ongeldige antwoorden retourneren. Go 1.18 Beta biedt ook een nieuwe 'Go-werkruimtemodus'. Hierdoor kunnen programmeurs tegelijkertijd met meerdere Go-modules werken. Dit is vooral handig voor grote projecten, aldus Google.
Verder voegt versie 1.18 Beta functionaliteit toe met een uitgebreide go-versie -m-opdracht. Deze opdracht slaat nu details op als compilervlaggen. Een programma kan nu zijn eigen builddetails opvragen met het commando debug.ReadBuildInfo.
Ook is er meer op register gebaseerde belconventies toegevoegd, beschikbaar sinds Go 1.17, in de preview. Waar deze functionaliteit in de vorige versie alleen geschikt was voor het versnellen van Go-code op x86- en x64-systemen, is deze nu ook geschikt voor op ARM64 en PPC64 gebaseerde systemen. Dit zou tot 20 procent meer snelheid moeten opleveren.