Vrijgave van de Go-programmeertaal 1.15

Geïntroduceerd vrijgave van programmeertaal Ga 1.15, dat door Google met medewerking van de gemeenschap wordt ontwikkeld als een hybride oplossing die de hoge prestaties van gecompileerde talen combineert met de voordelen van scripttalen zoals het gemak van het schrijven van code, de snelheid van ontwikkeling en foutbescherming. Projectcode gedistribueerd door onder 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, foutopsporing en andere subsystemen voor het detecteren van runtime-problemen zijn geïntegreerd als runtime-componenten), waarmee u prestaties kunt behalen die vergelijkbaar zijn met 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.

De belangrijkste innovatiesgeïntroduceerd in de Go 1.15-release:

  • Het werk van de linker is aanzienlijk verbeterd, zowel wat betreft het verhogen van de werkingssnelheid en het verminderen van het geheugenverbruik, als in de richting van het vereenvoudigen van codeonderhoud. Bij tests op besturingssystemen die het uitvoerbare bestandsformaat ELF gebruiken (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), werd een typische reeks grote Go-applicaties 20% sneller gebouwd en werd het geheugenverbruik met gemiddeld 30% verminderd. Verhoogde productiviteit werd mogelijk gemaakt door over te schakelen naar een nieuw objectbestandsformaat en door interne fasen te herwerken om het niveau van parallellisatie van het werk te verhogen. De native linker wordt nu standaard gebruikt op linux/amd64- en linux/arm64-systemen in "-buildmode=pie", waarvoor niet langer het gebruik van een C-linker vereist is.
  • Tijdens runtime is de distributie van kleine objecten op systemen met een groot aantal CPU-kernen aanzienlijk verbeterd en is de latentie verminderd. Bij storingen worden waarden met numerieke en stringtypen weergegeven in plaats van het adres. Bij het verzenden van SIGSEGV-, SIGBUS- en SIGFPE-signalen naar een Go-applicatie, bij afwezigheid van een os/signal.Notify-handler, wordt de applicatie afgesloten met een stacktrace-uitvoer (voorheen was het gedrag onvoorspelbaar).
  • De compiler is geoptimaliseerd om de grootte van gegenereerde uitvoerbare bestanden met gemiddeld 5% te verkleinen door de opname van bepaalde metadata voor de garbage collector te stoppen en een agressievere opschoning van ongebruikte metadata.
  • De vlag "-spectre" is aan de compiler en assembler toegevoegd om bescherming tegen Spectre-klasse-aanvallen mogelijk te maken (voor de meeste programma's is dit niet vereist; het inschakelen van de optie kan alleen gerechtvaardigd zijn voor enkele zeer specifieke gevallen).
  • In X.509-certificaten is het veld CommonName verouderd, dat niet langer als hostnaam wordt behandeld als het veld Alternatieve namen voor onderwerpen ontbreekt.
  • Het "go"-commando in de GOPROXY-omgevingsvariabele kan nu meerdere proxy's weergeven, gescheiden door een komma of "|". Als de eerste proxy in de lijst een fout retourneert (404 of 410), wordt er geprobeerd contact op te nemen via de tweede proxy, enz.
  • Het vet-hulpprogramma heeft een waarschuwing toegevoegd over pogingen om string(x) te converteren als "x" een ander geheel getal is dan rune of byte.
  • De vlag "-gnu" is toegevoegd aan het objdump-hulpprogramma om het demonteren van de syntaxis van de GNU-assembler te ondersteunen.
  • Nieuw pakket toegevoegd tijd/tzdata, waarmee u een database met tijdzonegegevens in het programma kunt integreren.
  • Uit bronteksten en documentatie VERWIJDERD de zinnen whitelist/blacklist en master/slave, die nu zijn vervangen door "allowlist", "blocklist", "process", "pty", "proc" en "control".
  • Er zijn een groot deel van de kleine verbeteringen aangebracht in de standaardbibliotheek.
  • Ondersteuning toegevoegd voor OpenBSD 6.7 in de GOARCH=arm en GOARCH=arm64 modi (voorheen werden alleen GOARCH=386 en GOARCH=amd64 ondersteund).
  • De ontwikkeling van het 64-bit RISC-V-platform (GOOS=linux, GOARCH=riscv64) ging door.
  • Voor 32-bit x86-systemen zal de volgende release de minimale systeemvereisten verhogen - alleen processors met SSE2 zullen nog steeds worden ondersteund. Om in de GOARCH=386-modus te bouwen heb je minimaal een Intel Pentium 4 (uitgebracht in 2000) of een AMD Opteron/Athlon 64 (uitgebracht in 2003) nodig.

Bron: opennet.ru

Voeg een reactie