Go programovací jazyk verze 1.14

Předložené vydání programovacího jazyka Přejděte na 1.14, který je vyvíjen společností Google za účasti komunity jako hybridní řešení, které kombinuje vysoký výkon kompilovaných jazyků s výhodami skriptovacích jazyků, jako je snadné psaní kódu, rychlost vývoje a ochrana proti chybám. Kód projektu distribuovány pod licencí BSD.

Syntaxe Go je založena na známých prvcích jazyka C s některými výpůjčkami z jazyka Python. Jazyk je poměrně stručný, ale kód je snadno čitelný a srozumitelný. Go kód je zkompilován do samostatných binárních spustitelných souborů, které běží nativně bez použití virtuálního stroje (profilování, ladění a další subsystémy pro detekci problémů za běhu jsou integrovány jako runtime komponenty), což umožňuje dosáhnout výkonu srovnatelného s programy C.

Projekt je zpočátku vyvíjen s ohledem na vícevláknové programování a efektivní provoz na vícejádrových systémech, včetně poskytování prostředků implementovaných na úrovni operátora pro organizaci paralelních výpočtů a interakci mezi paralelně prováděnými metodami. Jazyk také poskytuje vestavěnou ochranu proti přetečení alokovaných paměťových bloků a poskytuje možnost používat garbage collector.

hlavní inovacepředstaveno ve verzi Go 1.14:

  • Nový modulový systém v příkazu "go" je deklarován jako připravený k obecnému použití, ve výchozím nastavení povolen a doporučen pro správu závislostí místo GOPATH. Nový modulový systém obsahuje integrovanou podporu verzování, možnosti doručování balíčků a vylepšenou správu závislostí. S moduly již vývojáři nejsou vázáni na práci v rámci stromu GOPATH, mohou explicitně definovat verzované závislosti a vytvářet opakovatelné sestavení.
  • Přidal podpora pro vkládání rozhraní s překrývající se sadou metod. Metody z vestavěného rozhraní nyní mohou mít stejná jména a signatury jako metody ve stávajících rozhraních. Explicitně deklarované metody zůstávají jedinečné jako dříve.
  • Výkon výrazu "odložit" byl vylepšen, takže je téměř stejně rychlý jako přímé volání odložené funkce, což umožňuje provedení odložené funkce v kódu citlivém na výkon.
  • Je poskytována asynchronní preempce coroutines (goroutines) – smyčky, které neobsahují volání funkcí, mohou nyní potenciálně vést k uváznutí plánovače nebo zpozdit začátek shromažďování odpadků.
  • Účinnost systému přidělování stránek paměti byla vylepšena a v konfiguracích s velkými hodnotami GOMAXPROCS je nyní podstatně méně sporů o zámek. Výsledkem je snížená latence a zvýšená propustnost při současné intenzivní distribuci velkých bloků paměti.
  • Zamykání bylo optimalizováno a počet kontextových přepínačů byl snížen při spouštění interních časovačů používaných ve funkcích time.After, time.Tick, net.Conn.SetDeadline.
  • V příkazu go je příznak „-mod=vendor“ standardně povolen, pokud je v kořenovém adresáři adresář dodavatele určený pro doručování externích závislostí vázaných na konkrétního dodavatele. Přidán samostatný příznak "-mod=mod" pro načítání modulů z mezipaměti modulů, nikoli z adresáře "vendor". Pokud je soubor go.mod pouze pro čtení, je standardně nastaven příznak „-mod=readonly“, pokud neexistuje žádný hlavní adresář „vendor“. Přidán příznak "-modfile=soubor" pro určení alternativního souboru go.mod namísto souboru v kořenovém adresáři modulu.
  • Přidána proměnná prostředí GOINSECURE, když je nastavena, příkaz go nevyžaduje použití HTTPS a při přímém načítání modulů přeskočí kontrolu certifikátu.
  • Kompilátor přidal ve výchozím nastavení povolený příznak „-d=checkptr“ pro kontrolu souladu kódu s pravidly pro bezpečné použití unsafe.Pointer.
  • Součástí dodávky je nové balení hash/maphash s nekryptografickými hašovacími funkcemi k vytvoření hašovacích tabulek pro libovolné bajtové sekvence nebo řetězce.
  • Přidána experimentální podpora pro 64bitovou platformu RISC-V na Linuxu.
  • Přidána podpora pro FreeBSD na 64bitových systémech ARM.

Zdroj: opennet.ru

Přidat komentář