Go limbajul de programare versiunea 1.13

Introdus lansarea limbajului de programare Du-te 1.13, care este dezvoltat de Google cu participarea comunității ca o soluție hibridă care combină performanța ridicată a limbajelor compilate cu avantajele limbajelor de scripting, cum ar fi ușurința de scriere a codului, viteza de dezvoltare, și protecție împotriva erorilor. Cod proiect distribuit de sub licența BSD.

Sintaxa lui Go se bazează pe elementele familiare ale limbajului C cu unele împrumuturi din limbajul Python. Limbajul este destul de concis, dar codul este ușor de citit și de înțeles. Codul Go este compilat în fișiere executabile binare de sine stătătoare care rulează nativ fără a utiliza o mașină virtuală (profilarea, depanarea și alte subsisteme de detectare a problemelor în timpul rulării sunt integrate ca componentele runtime), care vă permite să obțineți performanțe comparabile cu programele în limbajul C.

Proiectul este dezvoltat inițial având în vedere programarea multi-threaded și operarea eficientă pe sisteme multi-core, inclusiv furnizarea de mijloace implementate la nivel de operator pentru organizarea calculului paralel și a interacțiunii între metodele executate în paralel. Limbajul oferă, de asemenea, protecție încorporată împotriva depășirilor blocurilor de memorie alocate și oferă posibilitatea de a utiliza colectorul de gunoi.

Principalul inovații, introdus în versiunea Go 1.13:

  • Pachetul crypto/tls are suport pentru protocol activat în mod implicit TLS 1.3. S-a adăugat un nou pachet „crypto/ed25519” cu suport pentru semnăturile digitale Ed25519;
  • S-a adăugat suport pentru noile prefixe numerice literale pentru a defini numerele binare (de exemplu, 0b101), octale (0o377), imaginare (2.71828i) și virgulă mobilă hexazecimală (0x1p-1021) și capacitatea de a folosi caracterul „_” pentru a separa vizual cifrele în număr mare (1_000_000);
  • A fost eliminată restricția privind utilizarea numai a contoarelor nesemnate în operațiunile de schimbare, ceea ce evită conversiile inutile la tipul uint înainte de a utiliza operatorii „‹‹” și „››”;
  • S-a adăugat suport pentru platforma Illumos (GOOS=illumos). Compatibilitatea cu platforma Android 10 a fost asigurată. Au fost crescute cerințele pentru versiunile minime de FreeBSD (11.2) și macOS (10.11 „El Capitan”).
  • Dezvoltarea continuă a noului sistem de module, care poate fi folosit ca alternativă la GOPATH. Spre deosebire de planurile anunțate anterior în Go 1.13, acest sistem nu este activat implicit și necesită activarea prin variabila GO111MODULE=on sau utilizarea unui context în care modulele sunt aplicate automat. Noul sistem de module oferă suport integrat pentru versiuni, capabilități de livrare a pachetelor și management îmbunătățit al dependenței. Cu modulele, dezvoltatorii nu mai sunt legați de lucrul în arborele GOPATH, pot defini în mod explicit dependențe versiuni și pot crea versiuni repetabile.

    Spre deosebire de versiunile anterioare, aplicarea automată a noului sistem funcționează acum când un fișier go.mod este prezent în directorul de lucru curent sau directorul părinte atunci când rulează comanda go, inclusiv atunci când se află în directorul GOPATH/src. Au fost adăugate noi variabile de mediu: GOPRIVATE, care definește căile modulelor accesibile public, și GOSUMDB, care specifică parametrii de acces la baza de date a sumei de control pentru modulele care nu sunt listate în fișierul go.sum;

  • Comanda „go” încarcă implicit modulele și le verifică integritatea utilizând baza de date în oglindă a modulelor și a sumei de control menținută de Google (proxy.golang.org, sum.golang.org și index.golang.org);
  • Suportul numai pentru pachetele binare a fost întrerupt; construirea unui pachet în modul „//go:binary-only-package” are ca rezultat o eroare;
  • S-a adăugat suport pentru sufixul „@patch” la comanda „go get”, indicând faptul că modulul ar trebui să fie actualizat la cea mai recentă versiune de întreținere, dar fără a schimba versiunea majoră sau minoră curentă;
  • La preluarea modulelor din sistemele de control al versiunilor, comanda „go” efectuează acum o verificare suplimentară a șirului de versiuni, încercând să potriviți numerele de pseudoversiune cu metadatele din depozit;
  • Sprijin adăugat verificarea erorilor (încheierea erorilor) prin crearea de wrapper-uri care permit utilizarea unor handlere standard de erori. De exemplu, eroare „e” poate fi înglobat în jurul erorii „w” prin furnizarea unei metode Desfaceți, returnând „w”. Ambele erori „e” și „w” sunt disponibile în program și deciziile sunt luate pe baza erorii „w”, dar „e” oferă context suplimentar pentru „w” sau îl interpretează diferit;
  • Performanța componentelor runtime a fost optimizată (a fost observată o creștere a vitezei de până la 30%) și a fost implementată o revenire mai agresivă a memoriei către sistemul de operare (anterior, memoria era returnată după cinci sau mai multe minute, dar acum imediat după reducerea dimensiunii grămezilor).

Sursa: opennet.ru

Adauga un comentariu