Go programmeringsspråk version 1.16

Utgivningen av programmeringsspråket Go 1.16 presenteras, som utvecklas av Google med deltagande av communityn som en hybridlösning som kombinerar den höga prestandan hos kompilerade språk med sådana fördelar med skriptspråk som att det är lätt att skriva kod , utvecklingshastighet och felskydd. Projektkoden distribueras under BSD-licensen.

Gos syntax är baserad på välbekanta delar av C-språket med några lån från Python-språket. Språket är ganska kortfattat, men koden är lätt att läsa och förstå. Go-koden kompileras till fristående binära körbara filer som körs inbyggt utan att använda en virtuell maskin (profilering, felsökningsmoduler och andra delsystem för upptäckt av runtimeproblem är integrerade som runtime-komponenter), vilket möjliggör prestanda jämförbar med C-program.

Projektet är initialt utvecklat med sikte på flertrådad programmering och effektiv drift på flerkärniga system, inklusive tillhandahållande av medel implementerade på operatörsnivå för att organisera parallell beräkning och interaktion mellan parallellt exekverade metoder. Språket ger också inbyggt skydd mot överskridningar av tilldelade minnesblock och ger möjlighet att använda sopsamlaren.

Nya nyckelfunktioner introducerade i Go 1.16:

  • Lade till embed-paketet, som tillhandahåller verktyg för att bädda in godtyckliga filer och kataloger i programmet. Ett nytt "//go:embed"-direktiv tillhandahålls för att specificera filer som ska bäddas in vid kompileringstillfället. Att till exempel specificera "//go:embed test.txt" i kodkommentaren och sedan deklarera variabeln "var f embed.FS" kommer att leda till inbäddning av filen test.txt och möjligheten att komma åt den via " f”-beskrivning. På liknande sätt kan du bädda in filer med resurser eller individuella värden av en viss typ som krävs för arbete, till exempel för att få strängvariabeln "s" från version.txt-filen, kan du ange: import _ "embed ” //go:embed version.txt var s string print (s)
  • Som standard krävs nu det nya modulsystemet med integrerat versionsstöd, som ersätter GOPATH-baserad beroendehantering. Miljövariabeln GO111MODULE är nu inställd på "på" som standard och modulläge används oavsett närvaron av en go.mod-fil i arbets- eller överordnad katalog. I det nya läget ändrar inte byggkommandon som "go build" och "go test" innehållet i go.mod och go.sum, och kommandot "go install" bearbetar versionsargument ("go install example.com/[e-postskyddad]"). För att återställa det gamla beteendet, ändra GO111MODULE till "auto". Det noteras att 96% av utvecklarna redan har bytt till det nya modulsystemet.
  • Länken har optimerats. För stora projekt är layouten nu 20-25 % snabbare och kräver 5-15 % mindre minne.
  • Kompilatorn har lagt till stöd för inline-expansion av funktioner med förkortade definitioner av "för"-slingor, metodvärden och "typswitch"-konstruktioner.
  • Tillagt stöd för Apple-system utrustade med det nya Apple M1 ARM-chippet. Lade till netbsd/arm64- och openbsd/mips64-portar med stöd för NetBSD på 64-bitars ARM och OpenBSD på MIPS64-system. Lade till stöd för cgo och läget "-buildmode=pie" till linux/riscv64-porten.
  • Stöd för x87-kompileringsläge har upphört (GO386=387). Stöd för SSE2-instruktionslösa processorer är nu tillgängligt via mjukvaruläget "GO386=softfloat".

Dessutom kan vi notera början på att testa betaversionen av Dart 2.12-språket, där det säkra läget för att använda "Null"-värdet (nullsäkerhet) har stabiliserats, vilket kommer att hjälpa till att undvika krascher orsakade av försök att använda variabler vars värdet är odefinierat och satt till "Null". Läget innebär att variabler inte kan ha nullvärden om de inte uttryckligen tilldelas värdet null. Läget respekterar strikt variabeltyper, vilket gör att kompilatorn kan tillämpa ytterligare optimeringar. Typöverensstämmelse kontrolleras vid kompilering, till exempel, om du försöker tilldela värdet "Null" till en variabel med en typ som inte innebär odefinierat tillstånd, såsom "int", kommer ett fel att visas.

Källa: opennet.ru

Lägg en kommentar