vydanie programovacieho jazyka , ktorý je vyvíjaný spoločnosťou Google za účasti komunity ako hybridné riešenie, ktoré kombinuje vysoký výkon kompilovaných jazykov s výhodami skriptovacích jazykov, ako je jednoduchosť písania kódu, rýchlosť vývoja a ochrana pred chybami. Kód projektu pod licenciou BSD.
Syntax Go je založená na známych prvkoch jazyka C s niektorými výpožičkami z jazyka Python. Jazyk je pomerne stručný, ale kód je ľahko čitateľný a zrozumiteľný. Go kód je zostavený do samostatných binárnych spustiteľných súborov, ktoré bežia natívne bez použitia virtuálneho stroja (profilovanie, ladenie a ďalšie podsystémy na detekciu problémov pri behu sú integrované ako ), čo umožňuje dosiahnuť výkon porovnateľný s programami C.
Projekt je pôvodne vyvinutý s ohľadom na viacvláknové programovanie a efektívnu prevádzku na viacjadrových systémoch, vrátane poskytovania prostriedkov na úrovni operátora na organizáciu paralelných výpočtov a interakciu medzi paralelne vykonávanými metódami. Jazyk tiež poskytuje vstavanú ochranu pred nadmerne alokovanými pamäťovými blokmi a poskytuje možnosť používať zberač odpadu.
Hlavné predstavené vo vydaní Go 1.14:
- Nový modulový systém v príkaze "go" je vyhlásený za pripravený na všeobecné použitie, štandardne povolený a odporúčaný na správu závislostí namiesto GOPATH. Nový modulový systém obsahuje integrovanú podporu verzií, možnosti doručovania balíkov a vylepšenú správu závislostí. S modulmi už vývojári nie sú viazaní na prácu v rámci stromu GOPATH, môžu explicitne definovať závislosti verzií a vytvárať opakovateľné zostavy.
- podpora pre vkladanie rozhraní s prekrývajúcim sa súborom metód. Metódy zo vstavaného rozhrania môžu mať teraz rovnaké názvy a podpisy ako metódy v existujúcich rozhraniach. Explicitne deklarované metódy zostávajú jedinečné ako predtým.
- Výkon výrazu „odložiť“ bol vylepšený, takže je takmer taký rýchly ako priame volanie odloženej funkcie, čo umožňuje vykonanie odloženej funkcie v kóde citlivom na výkon.
- Poskytuje sa asynchrónna preempcia coroutines (goroutines) – slučky, ktoré neobsahujú volania funkcií, môžu teraz potenciálne viesť k zablokovaniu plánovača alebo oneskoreniu začiatku zbierania odpadu.
- Efektívnosť systému prideľovania pamäťových stránok sa zlepšila a v konfiguráciách s veľkými hodnotami GOMAXPROCS je teraz podstatne menej sporov o zámky. Výsledkom je znížená latencia a zvýšená priepustnosť pri súčasnej intenzívnej distribúcii veľkých blokov pamäte.
- Zamykanie bolo optimalizované a počet kontextových prepínačov bol znížený pri spustení interných časovačov používaných vo funkciách time.After, time.Tick, net.Conn.SetDeadline.
- V príkaze go je príznak „-mod=vendor“ štandardne povolený, ak v koreňovom adresári existuje adresár dodávateľa určený na doručovanie externých závislostí viazaných na konkrétneho dodávateľa. Pridaný samostatný príznak "-mod=mod" na načítanie modulov z vyrovnávacej pamäte modulov namiesto z adresára "vendor". Ak je súbor go.mod len na čítanie, príznak „-mod=len na čítanie“ je štandardne nastavený, ak neexistuje žiadny horný adresár „vendor“. Pridaný príznak "-modfile=file" na určenie alternatívneho súboru go.mod namiesto súboru v koreňovom adresári modulu.
- Pridaná premenná prostredia GOINSECURE, keď je nastavená, príkaz go nevyžaduje použitie HTTPS a preskakuje kontrolu certifikátu pri priamom načítaní modulov.
- Kompilátor pridal príznak „-d=checkptr“, ktorý je štandardne povolený, na kontrolu súladu kódu s pravidlami pre bezpečné používanie unsafe.Pointer.
- Súčasťou dodávky je nový balík s nekryptografickými hašovacími funkciami na vytváranie hašovacích tabuliek pre ľubovoľné bajtové sekvencie alebo reťazce.
- Pridaná experimentálna podpora pre 64-bitovú platformu RISC-V v Linux.
- Pridaná podpora pre FreeBSD na 64-bitových systémoch ARM.
Zdroj: opennet.ru
