Google heeft een preview uitgebracht van de nieuwe versie van programmeertaal Go. Versie 1.18 voegt functionaliteit toe voor ‘generic’-programmeren met zogenoemde ‘parameterized’ types.

Naar eigen zeggen betreft het de belangrijkste en grootste wijziging van de programmeertaal sinds de release van Go versie 1. Het idee achter generics is dat het nu functionaliteit voor het vertegenwoordigen van functies en datastructuren mogelijk maakt door de types aan te passen. Hierbij wordt de ‘algemeenheid’ uitgesloten die is toegestaan door een interface type te definiëren als een manier voor het abstraheren van de actuele gegevens die naar een functie worden gebracht.

Google geeft aan dat Go-ontwikkelaars zich moeten beseffen dat de functionaliteit ongetwijfeld tot nieuwe bugs gaat leiden. Zij moeten deze ‘generics’ dan ook voorzichtig benaderen.

Overige functionaliteit in Go 1.18 Beta

Naast bovengenoemde functionaliteit, heeft de nieuwe preview ook ingebouwde ondersteuning voor het schrijven van ‘fuzzing-based’ tests. Deze tests kunnen dat automatisch inputs vinden die voor het crashen van programma’s zorgen of ongeldige antwoorden terugsturen. Ook beidt Go 1.18 Beta een nieuwe ‘Go workspace mode’. Hiermee kunnen programmeurs met meerdere Go modules tegelijkertijd werken. Dit is volgens Google vooral handig voor grote projecten.

Verder voegt versie 1.18 Beta functionaliteit toe met een uitgebreide go version -m command. Dit commando slaat nu details als compiler flags op. Een programma kan nu zijn eigen build-details bevragen met het commando debug.ReadBuildInfo.

Ook is in de preview meer register-based calling convention, beschikbaar sinds Go 1.17, toegevoegd. Waar in de vorige versie deze functionaliteit nog alleen geschikt was voor het versnellen van Go code op x86- en x64-systemen, is die nu ook geschikt voor op ARM64 en PPC64 gebaseerde systemen. Dit moet tot 20 procent meer snelheid bieden.