Google's programmeertaal Go (Golang) heeft zijn nieuwste versie, Go 1.19, uitgebracht. Deze versie verbetert de ondersteuning van generieke code, introduceert een verbeterd geheugenmodel en biedt een aantal andere functies. Deze update richt zich op het verfijnen van de onlangs toegevoegde generics, die voor het eerst werden geïntroduceerd in Go 1.18, en het optimaliseren van de prestaties van generieke code tot 20 procent.
Verbeteringen in Go 1.19
Met de release van Go 1.19 op 2 augustus concentreert de ontwikkeling van generieke ondersteuning zich op het aanpakken van subtiele problemen en hoekgevallen die door de gemeenschap zijn gemeld, samen met prestatieverbeteringen. De introductie van generics in de taal was een langverwachte functie die werd toegevoegd aan Go 1.18, dat in maart werd uitgebracht.
Het Go geheugenmodel is bijgewerkt om expliciet het gedrag van het sync/atomic pakket te definiëren, dat laag-niveau atomaire geheugenprimitieven biedt voor het implementeren van synchronisatie-algoritmen. De formele definitie van de happens-before relatie is vernieuwd om aan te sluiten bij de geheugenmodellen die gebruikt worden door C, C++, Java, JavaScript, Rust en Swift. Deze update heeft geen invloed op bestaande programma's.
Als onderdeel van de upgrade van het geheugenmodel zijn nieuwe types geïntroduceerd in het sync/atomic pakket, waaronder atomic.int64 en atomic.Pointer(T), waardoor het handiger is om atomische waarden te gebruiken. Go 1.19 kan nu worden gedownload van go.dev voor Windows, macOS en Linux.
Extra functies in Go 1.19
Naast de verbeteringen aan generics en het nieuwe geheugenmodel, heeft Go 1.19 nog andere functies geïntroduceerd:
- Een zachte geheugenlimiet toegevoegd aan de garbage collector, die helpt bij het optimaliseren van Go-programma's die draaien in containers met specifieke geheugentoewijzingen.
- Prestatie- en implementatieverbeteringen, zoals dynamische dimensionering van coroutinestapels om het kopiëren van stapels te verminderen, automatisch gebruik van extra bestandsdescriptors op de meeste Unix-systemen, sprongtabellen voor grote switch-statements op x86-64 en ARM64, en ondersteuning voor debugger-injected functie-aanroepen op ARM64.
- Een kleine correctie op type parameters in methode declaraties zonder bestaande programma's te beïnvloeden.
- Doc commentaar ondersteunt nu links, lijsten en heading syntax, waardoor de samenstelling van doc commentaar duidelijker wordt, vooral voor pakketten met uitgebreide API's.
- Om veiligheidsredenen staat het os/exec pakket niet langer relatieve paden toe in PATH lookups.
- Een nieuwe bouwbeperking, unix, wordt geïntroduceerd, waaraan wordt voldaan als het beoogde OS werkt op een Unix-achtig systeem.
Naarmate het gebruik van no-code en low-code platforms als AppMaster toeneemt, is het essentieel voor ontwikkelaars om op de hoogte te blijven van de nieuwste ontwikkelingen in populaire programmeertalen als Go. De integratie van Go met AppMaster kan de ontwikkeling van back-end applicaties versnellen en biedt een betere schaalbaarheid en kosteneffectiviteit. Go 1.19 brengt aanzienlijke verbeteringen om de prestaties, veiligheid en ervaring van ontwikkelaars te verbeteren, en versterkt zijn positie als essentieel hulpmiddel voor moderne softwareontwikkeling.