Go limbajul de programare versiunea 1.14

Introdus lansarea limbajului de programare Du-te 1.14, 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.14:

  • Noul sistem de module din comanda „go” este declarat gata pentru utilizare generală, activat implicit și recomandat pentru gestionarea dependențelor în loc de GOPATH. Noul sistem de module oferă suport integrat pentru versiunea, capabilități de livrare a pachetelor și management îmbunătățit al dependenței. Cu module, dezvoltatorii nu mai sunt legați de lucrul în cadrul unui arbore GOPATH, pot defini în mod explicit dependențe versiuni și pot crea versiuni repetabile.
  • Adăugat suport pentru încorporarea interfețelor cu un set de metode care se suprapun. Metodele dintr-o interfață încorporată pot avea acum aceleași nume și semnături ca și metodele din interfețele existente. Metodele declarate explicit rămân unice ca înainte.
  • Performanța expresiei „amânare” a fost îmbunătățită, făcând-o aproape la fel de rapidă ca apelarea directă a unei funcții amânate, permițând execuția funcției amânate în cod sensibil la performanță.
  • Este furnizată preempțiunea asincronă a coroutinelor (goroutine) - buclele care nu conțin apeluri de funcții pot duce acum la blocarea programatorului sau pot întârzia începerea colectării gunoiului.
  • Eficiența sistemului de alocare a paginilor de memorie a fost îmbunătățită și acum există mult mai puține dispute de blocare în configurațiile cu valori mari GOMAXPROCS. Rezultatul este o latență redusă și un randament crescut, distribuind simultan în mod intensiv blocuri mari de memorie.
  • Blocarea a fost optimizată și numărul de comutări de context a fost redus la rularea temporizatoarelor interne utilizate în timp. După, funcțiile time.Tick, net.Conn.SetDeadline.
  • În comanda go, indicatorul „-mod=vendor” este activat în mod implicit dacă există un director de furnizor în rădăcină, destinat să furnizeze dependențe externe legate de un anumit furnizor. S-a adăugat un semnal separat „-mod=mod” pentru a încărca modulele din memoria cache a modulelor, mai degrabă decât din directorul „furnizor”. Dacă fișierul go.mod este doar pentru citire, indicatorul „-mod=readonly” este setat în mod implicit dacă nu există un director „furnizor” de top. S-a adăugat flag „-modfile=file” pentru a specifica un fișier go.mod alternativ în locul celui din directorul rădăcină al modulului.
  • S-a adăugat variabila de mediu GOINSECURE, când este setată, comanda go nu necesită utilizarea HTTPS și omite verificarea certificatelor la încărcarea directă a modulelor.
  • Compilatorul a adăugat indicatorul „-d=checkptr”, activat implicit, pentru a verifica codul pentru conformitatea cu regulile de utilizare în siguranță a unsafe.Pointer.
  • Un pachet nou este inclus în livrare hash/maphash cu funcții hash non-criptografice pentru a crea tabele hash pentru secvențe sau șiruri de octeți arbitrare.
  • S-a adăugat suport experimental pentru platforma RISC-V pe 64 de biți pe Linux.
  • S-a adăugat suport pentru FreeBSD pe sisteme ARM pe 64 de biți.

Sursa: opennet.ru

Adauga un comentariu