Go programozási nyelv 1.13 kiadás

Által benyújtott programozási nyelv kiadása Menjen az 1.13, amelyet a Google a közösség részvételével fejlesztett ki hibrid megoldásként, amely egyesíti a lefordított nyelvek nagy teljesítményét a szkriptnyelvek előnyeivel, mint például a kódírás egyszerűsége, a fejlesztés sebessége, és hibavédelem. Projekt kód forgalmazza a BSD licenc alatt.

A Go szintaxisa a C nyelv ismerős elemein alapul, néhány kölcsönzés a Python nyelvből. A nyelvezet meglehetősen tömör, de a kód könnyen olvasható és érthető. A Go kódot önálló bináris futtatható fájlokba fordítják, amelyek natív módon futnak virtuális gép használata nélkül (a profilozási, hibakeresési és egyéb futásidejű problémaészlelő alrendszerek integrálva vannak futásidejű összetevők), amely lehetővé teszi a C nyelvű programokhoz hasonló teljesítmény elérését.

A projektet kezdetben a többszálú programozás és a többmagos rendszerek hatékony működésének szem előtt tartásával fejlesztették ki, beleértve a kezelői szinten megvalósított eszközök biztosítását a párhuzamos számítás és a párhuzamosan végrehajtott módszerek közötti interakció megszervezéséhez. A nyelv emellett beépített védelmet nyújt a lefoglalt memóriablokkok túllépése ellen, és lehetőséget biztosít a szemétgyűjtő használatára.

A főbb innovációk, bevezetve a Go 1.13 kiadásban:

  • A crypto/tls csomag alapértelmezés szerint engedélyezve van a protokolltámogatással TLS 1.3. Új „crypto/ed25519” csomag hozzáadva az Ed25519 digitális aláírások támogatásával;
  • Új numerikus literális előtagok támogatása bináris számok (pl. 0b101), oktális (0o377), imaginárius (2.71828i) és hexadecimális lebegőpontos (0x1p-1021) meghatározásához, valamint a „_” karakter használatának lehetősége a számjegyek vizuális elkülönítésére nagy számban (1_000_000);
  • Eltávolítottuk az előjel nélküli számlálók használatára vonatkozó korlátozást a műszakos műveletekben, így elkerülhető az uint típusra való szükségtelen konvertálás a „‹‹” és „››” operátorok használata előtt;
  • Támogatás hozzáadva az Illumos platformhoz (GOOS=illumos). Az Android 10 platformmal való kompatibilitás biztosított, a FreeBSD (11.2) és a macOS (10.11 „El Capitan”) minimális verzióival szemben támasztott követelmények megemelkedtek.
  • Az új modulrendszer továbbfejlesztése, amely a GOPATH alternatívájaként használható. A Go 1.13-ban korábban bejelentett tervekkel ellentétben ez a rendszer alapértelmezés szerint nincs engedélyezve, és aktiválni kell a GO111MODULE=on változón keresztül, vagy olyan környezetet kell használni, amelyben a modulok automatikusan alkalmazásra kerülnek. Az új modulrendszer integrált verziókezelési támogatást, csomagkézbesítési képességeket és továbbfejlesztett függőségkezelést kínál. A modulok segítségével a fejlesztők többé nem kötődnek a GOPATH-fán belüli munkához, kifejezetten definiálhatnak verziófüggő függőségeket, és megismételhető buildeket hozhatnak létre.

    A korábbi kiadásoktól eltérően az új rendszer automatikus alkalmazása most akkor működik, ha a go.mod fájl az aktuális munkakönyvtárban vagy a szülőkönyvtárban található a go parancs futtatásakor, beleértve azt is, ha az a GOPATH/src könyvtárban van. Új környezeti változók kerültek hozzáadásra: a GOPRIVATE, amely a nyilvánosan elérhető modulok elérési útját határozza meg, és a GOSUMDB, amely a go.sum fájlban nem szereplő modulok ellenőrzőösszeg adatbázisához való hozzáférési paramétereket adja meg;

  • A "go" parancs alapértelmezés szerint betölti a modulokat, és ellenőrzi azok integritását a Google által karbantartott modultükör és ellenőrzőösszeg adatbázis (proxy.golang.org, sum.golang.org és index.golang.org) segítségével;
  • A csak bináris csomagok támogatása megszűnt, a csomag „//go:binary-only-package” módban történő összeállítása most hibát eredményez;
  • Támogatás hozzáadva a "@patch" utótaghoz a "go get" parancshoz, jelezve, hogy a modult frissíteni kell a legújabb karbantartási kiadásra, de az aktuális fő- vagy mellékverzió módosítása nélkül;
  • Amikor modulokat kér le a forrásvezérlő rendszerekről, a "go" parancs most további ellenőrzést hajt végre a verziókarakterláncon, és megpróbálja egyeztetni a pszeudoverziószámokat a lerakatból származó metaadatokkal;
  • Hozzáadott támogatás hibavizsgálat (hibacsomagolás) olyan burkolók létrehozásával, amelyek lehetővé teszik a szabványos hibakezelők használatát. Például, hiba Az "e" egy metódus megadásával a "w" hiba köré tekerhető Kibont, „w”-t adja vissza. Mind az "e" és a "w" hiba elérhető a programban, és a döntések a "w" hiba alapján születnek, de az "e" további kontextust biztosít a "w"-hez, vagy másképp értelmezi;
  • A futásidejű komponensek teljesítményét optimalizálták (akár 30%-os sebességnövekedést is észleltek), és agresszívebb memóriavisszaadást valósítottak meg az operációs rendszerbe (korábban öt vagy több perc után visszakerült a memória, most azonnal a kupacméret csökkentése után).

Forrás: opennet.ru

Hozzászólás