Vrijgave van de Go-programmeertaal 1.16

De release van de programmeertaal Go 1.16 wordt gepresenteerd, die door Google wordt ontwikkeld met deelname van de gemeenschap als een hybride oplossing die de hoge prestaties van gecompileerde talen combineert met dergelijke voordelen van scripttalen als het gemak van het schrijven van code , snelheid van ontwikkeling en foutbescherming. De projectcode wordt gedistribueerd onder de BSD-licentie.

De syntaxis van Go is gebaseerd op bekende elementen van de C-taal, met enkele ontleningen aan de Python-taal. De taal is vrij beknopt, maar de code is gemakkelijk te lezen en te begrijpen. Go-code wordt gecompileerd in zelfstandige binaire uitvoerbare bestanden die native worden uitgevoerd zonder gebruik te maken van een virtuele machine (profilering, foutopsporingsmodules en andere subsystemen voor het detecteren van runtime-problemen zijn geïntegreerd als runtime-componenten), wat prestaties mogelijk maakt die vergelijkbaar zijn met die van C-programma's.

Het project is in eerste instantie ontwikkeld met het oog op multi-threaded programmering en efficiënte werking op multi-core systemen, inclusief het bieden van middelen op operatorniveau voor het organiseren van parallel computergebruik en interactie tussen parallel uitgevoerde methoden. De taal biedt ook ingebouwde bescherming tegen overmatig toegewezen geheugenblokken en biedt de mogelijkheid om een ​​garbage collector te gebruiken.

Belangrijkste nieuwe functies geïntroduceerd in Go 1.16:

  • Het embed-pakket toegevoegd, dat hulpmiddelen biedt voor het insluiten van willekeurige bestanden en mappen in het programma. Er is een nieuwe "//go:embed"-richtlijn beschikbaar om te specificeren welke bestanden tijdens het compileren moeten worden ingesloten. Als u bijvoorbeeld “//go:embed test.txt” specificeert in het codecommentaar en vervolgens de variabele “var f embed.FS” declareert, zal dit leiden tot het insluiten van het test.txt-bestand en de mogelijkheid om er toegang toe te krijgen via de “ f”-beschrijving. Op een vergelijkbare manier kunt u bestanden insluiten met bronnen of individuele waarden van een bepaald type die nodig zijn voor het werk, om bijvoorbeeld de tekenreeksvariabele “s” uit het bestand versie.txt te verkrijgen, kunt u opgeven: import _ “embed //go:embed versie.txt var s string print(s)
  • Standaard is nu het nieuwe modulesysteem met geïntegreerde versiebeheerondersteuning vereist, ter vervanging van het op GOPATH gebaseerde afhankelijkheidsbeheer. De omgevingsvariabele GO111MODULE is nu standaard ingesteld op "on" en de modulemodus wordt gebruikt ongeacht de aanwezigheid van een go.mod-bestand in de werk- of bovenliggende map. In de nieuwe modus veranderen build-opdrachten zoals "go build" en "go test" de inhoud van go.mod en go.sum niet, en verwerkt de opdracht "go install" versieargumenten ("go install example.com/[e-mail beveiligd]"). Om het oude gedrag terug te krijgen, wijzigt u GO111MODULE in “auto”. Opgemerkt wordt dat 96% van de ontwikkelaars al is overgestapt op het nieuwe modulesysteem.
  • De linker is geoptimaliseerd. Voor grote projecten is de lay-out nu 20-25% sneller en vereist 5-15% minder geheugen.
  • De compiler heeft ondersteuning toegevoegd voor inline-uitbreiding van functies met verkorte definities van "for"-lussen, methodewaarden en 'type switch'-constructies.
  • Ondersteuning toegevoegd voor Apple-systemen die zijn uitgerust met de nieuwe Apple M1 ARM-chip. Netbsd/arm64- en openbsd/mips64-poorten toegevoegd met ondersteuning voor NetBSD op 64-bit ARM en OpenBSD op MIPS64-systemen. Ondersteuning toegevoegd voor cgo en de “-buildmode=pie”-modus aan de linux/riscv64-poort.
  • Ondersteuning voor de x87-compilatiemodus is stopgezet (GO386=387). Ondersteuning voor SSE2-instructieloze processors is nu beschikbaar via de softwaremodus "GO386=softfloat".

Daarnaast kunnen we de start noteren van het testen van de bètaversie van de Dart 2.12-taal, waarin de veilige modus ‘Null’ is gestabiliseerd, wat crashes zal helpen voorkomen die worden veroorzaakt door pogingen om variabelen te gebruiken waarvan de waarde niet is gedefinieerd en is ingesteld op ‘Null’. ”. De modus houdt in dat variabelen geen nulwaarden kunnen hebben, tenzij ze expliciet de waarde null krijgen toegewezen. De modus respecteert strikt de typen variabelen, waardoor de compiler aanvullende optimalisaties kan toepassen. De naleving van het type wordt gecontroleerd tijdens het compileren. Als u bijvoorbeeld de waarde “Null” probeert toe te wijzen aan een variabele met een type dat geen ongedefinieerde status impliceert, zoals “int”, wordt er een foutmelding weergegeven.

Bron: opennet.ru

Voeg een reactie