Go programmeringsspråk version 1.14

Introducerad programspråk release Gå 1.14, som utvecklats av Google med deltagande av communityn som en hybridlösning som kombinerar den höga prestandan hos kompilerade språk med fördelarna med skriptspråk, såsom enkel kod att skriva, utvecklingshastighet, och felskydd. Projektkod levererad av under BSD-licensen.

Syntaxen för Go är baserad på de välbekanta elementen i 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-kod kompileras till fristående binära körbara filer som körs inbyggt utan att använda en virtuell maskin (profilering, felsökning och andra delsystem för upptäckt av run-time problem är integrerade som körtidskomponenter), vilket gör att du kan uppnå prestanda som är jämförbar med program på C-språket.

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.

Den huvudsakliga innovationer, introducerad i Go 1.14-versionen:

  • Det nya modulsystemet i "go"-kommandot förklaras redo för allmän användning, aktiverat som standard och rekommenderas för beroendehantering istället för GOPATH. Det nya modulsystemet har integrerat versionsstöd, verktyg för paketleverans och förbättrad beroendehantering. Med moduler är utvecklare inte längre bundna till att arbeta inom ett GOPATH-träd, de kan uttryckligen definiera versionsberoenden och skapa repeterbara builds.
  • Lagt till stöd för inlining av gränssnitt med en överlappande uppsättning metoder. Metoder från ett inbyggt gränssnitt kan nu ha samma namn och samma signatur som metoder i redan befintliga gränssnitt. Explicit deklarerade metoder förblir unika som tidigare.
  • Prestandan för uttrycket "defer" har förbättrats, vars användning nu är nästan lika snabb som det direkta anropet av en uppskjuten funktion, vilket tillåter användning av fördröjd funktionsstart i prestationskänslig kod.
  • Asynkron preemption av coroutines (goroutine) tillhandahålls - slingor som inte innehåller funktionsanrop kan nu potentiellt inte leda till ett dödläge för schemaläggaren eller försena starten av sophämtning.
  • Effektiviteten hos minnessidaallokeringssystemet har förbättrats, med betydligt färre låskonflikter i konfigurationer med stora GOMAXPROCS-värden. Som ett resultat har latensen minskat och genomströmningen har ökat med parallell intensiv distribution av stora minnesblock.
  • Lås har optimerats och antalet kontextväxlar har reducerats när man kör interna timers som används under tiden.After, time.Tick, net.Conn.SetDeadline.
  • I go-kommandot är flaggan "-mod=vendor" aktiverad som standard om det finns en leverantörskatalog i roten, som är avsedd för att tillhandahålla externa beroenden kopplade till en viss leverantör. Lade till en separat "-mod=mod"-flagga för att ladda moduler från modulcachen istället för från katalogen "leverantör". Om go.mod-filen är skrivskyddad tillhandahålls flaggan "-mod=readonly" som standard om det inte finns någon "leverantörs" toppkatalog. Lade till flaggan "-modfile=fil" för att ange en alternativ go.mod-fil istället för den i modulens rotkatalog.
  • Lade till miljövariabeln GOINSECURE så att när det är inställt kräver go-kommandot inte användning av HTTPS och hoppar över certifikatverifiering när moduler laddas direkt.
  • Flaggan "-d=checkptr" aktiverad som standard har lagts till i kompilatorn för att kontrollera att koden överensstämmer med reglerna för säker användning av unsafe.Pointer.
  • Nytt paket ingår hash/maphash med icke-kryptografiska hashfunktioner för att skapa hashtabeller för godtyckliga bytesekvenser eller strängar.
  • Lade till experimentellt stöd för 64-bitars RISC-V på Linux.
  • Tillagt stöd för FreeBSD på 64-bitars ARM-system.

Källa: opennet.ru

Lägg en kommentar