Go programovací jazyk verze 1.16

Představuje se vydání programovacího jazyka Go 1.16, který je vyvíjen společností Google za účasti komunity jako hybridní řešení, které kombinuje vysoký výkon kompilovaných jazyků s takovými výhodami skriptovacích jazyků, jako je snadnost psaní kódu, rychlý vývoj a ochrana proti chybám. Kód projektu je distribuován 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 kompilová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 v jazyce 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.

Klíčové inovace představené ve verzi Go 1.16:

  • Byl přidán balíček embed, který poskytuje nástroje pro vkládání libovolných souborů a adresářů do programu. K dispozici je nová direktiva "//go:embed", která specifikuje soubory, které se mají vložit při kompilaci. Například zadání komentáře "//go:embed test.txt" v kódu a deklarace proměnné "var f embed.FS" jako následného povede k vložení souboru test.txt a možnosti přístup k němu přes deskriptor "f". Podobně můžete vkládat soubory se zdroji nebo jednotlivými hodnotami určitého typu nezbytnými pro práci, například pro získání řetězcové proměnné "s" ze souboru version.txt můžete zadat: import _ "embed" // go:embed version.txt var s řetězec tisk (y)
  • Výchozí nyní vyžaduje použití nového modulového systému s integrovanou podporou verzování, který nahrazuje správu závislostí založenou na GOPATH. Proměnná prostředí GO111MODULE je nyní standardně nastavena na „on“ a režim modulů se používá bez ohledu na přítomnost souboru go.mod v pracovním nebo nadřazeném adresáři. V novém režimu příkazy sestavení jako „go build“ a „go test“ nemění obsah go.mod a go.sum, zatímco „go install“ zpracovává argumenty specifikované verzí („go install example.com/[chráněno e-mailem]"). Chcete-li vrátit staré chování, změňte GO111MODULE na "auto". Je třeba poznamenat, že 96 % vývojářů již přešlo na nový modulový systém.
  • Linker byl optimalizován. U velkých projektů je nyní propojení o 20–25 % rychlejší a vyžaduje o 5–15 % méně paměti.
  • Kompilátor přidává podporu pro inline expanzi funkcí se zkrácenou definicí cyklů „for“, hodnot metod a konstrukcí „přepínač typu“.
  • Přidána podpora pro systémy Apple vybavené novým čipem Apple M1 ARM. Přidány porty netbsd/arm64 a openbsd/mips64 s podporou NetBSD na 64bitovém ARM a OpenBSD na systémech MIPS64. Do portu linux/riscv64 byla přidána podpora pro cgo a režim "-buildmode=pie".
  • Podpora režimu kompilace x87 byla zrušena (GO386=387). Podpora procesorů bez instrukcí SSE2 je nyní dostupná prostřednictvím programového režimu „GO386=softfloat“.

Dále můžeme zaznamenat zahájení testování beta verze jazyka Dart 2.12, ve kterém byl stabilizován nulový bezpečnostní režim, který zabrání pádům způsobeným pokusy o použití proměnných, jejichž hodnota není definována a nastavena na Null. Režim znamená, že proměnné nemohou mít nedefinované hodnoty, pokud nejsou explicitně nastaveny na null. Režim přísně zohledňuje typy proměnných, což umožňuje kompilátoru aplikovat další optimalizace. Shoda typu se kontroluje při kompilaci, například pokud se pokusíte přiřadit hodnotu "Null" proměnné s typem, který neimplikuje neurčitý stav, jako je "int", zobrazí se chyba.

Zdroj: opennet.ru

Přidat komentář