Go programozási nyelv 1.14 kiadás

Által benyújtott programozási nyelv kiadása Menjen az 1.14, 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.14 kiadásban:

  • Az új modulrendszer a "go" parancsban általános használatra készen van nyilvánítva, alapértelmezés szerint engedélyezve van, és a GOPATH helyett a függőségek kezelésére ajánlott. Az új modulrendszer integrált verziókezelési támogatást, csomagküldő eszközöket é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.
  • Hozzáadva támogatja az interfészek beillesztését átfedő metóduskészlettel. A beépített interfész metódusai mostantól ugyanazokkal a nevekkel és aláírásokkal rendelkezhetnek, mint a már meglévő interfészek metódusai. Az explicit módon deklarált metódusok egyediek maradnak, mint korábban.
  • Javult a "defer" kifejezés teljesítménye, amelynek használata ma már majdnem olyan gyors, mint egy késleltetett függvény közvetlen hívása, ami lehetővé teszi a késleltetett függvényindítás használatát teljesítményérzékeny kódban.
  • A korutinok (gorutine) aszinkron elővétele biztosított – a függvényhívásokat nem tartalmazó hurkok jelenleg nem vezethetnek az ütemező holtpontjához, és nem késleltethetik a szemétgyűjtés megkezdését.
  • Javult a memóriaoldal-kiosztási rendszer hatékonysága, lényegesen kevesebb zárkonfliktus a nagy GOMAXPROCS értékekkel rendelkező konfigurációkban. Ennek eredményeként a várakozási idő csökkent, és az átviteli sebesség nőtt a nagy memóriablokkok párhuzamos intenzív kiosztásával.
  • A zárolásokat optimalizálták, és a kontextuskapcsolók számát csökkentették a time.After, time.Tick, net.Conn.SetDeadline függvényekben használt belső időzítők futtatásakor.
  • A go parancsban a "-mod=vendor" jelző alapértelmezés szerint engedélyezve van, ha a gyökérben van egy szállítói könyvtár, amely egy adott szállítóhoz kötött külső függőségek ellátására szolgál. Egy külön "-mod=mod" jelző hozzáadva a modulok betöltéséhez a modul gyorsítótárából, nem pedig a "szállító" könyvtárból. Ha a go.mod fájl csak olvasható, a "-mod=readonly" jelző alapértelmezés szerint rendelkezésre áll, ha nincs "szállító" felső könyvtár. A "-modfile=file" jelző hozzáadva egy alternatív go.mod fájl megadásához a modul gyökérkönyvtárában lévő fájl helyett.
  • Hozzáadott GOINSECURE környezeti változó, amely beállítja a go parancsot, hogy ne igényeljen HTTPS-t, és kihagyja a tanúsítvány ellenőrzését a modulok közvetlen betöltésekor.
  • Az alapértelmezés szerint engedélyezett "-d=checkptr" jelző bekerült a fordítóba, hogy ellenőrizze, hogy a kód megfelel-e az unsafe.Pointer biztonságos használatára vonatkozó szabályoknak.
  • Új csomagot tartalmaz hash/maphash nem kriptográfiai hash függvényekkel, hogy tetszőleges bájtsorozatokhoz vagy karakterláncokhoz hash-táblázatokat hozzon létre.
  • Kísérleti támogatás hozzáadva a 64 bites RISC-V-hez Linuxon.
  • Hozzáadott támogatás a FreeBSD-hez 64 bites ARM rendszereken.

Forrás: opennet.ru

Hozzászólás