Go limbajul de programare versiunea 1.16

Este prezentată lansarea limbajului de programare Go 1.16, 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 precum ușurința de scriere a codului , viteza de dezvoltare și protecția împotriva erorilor. Codul proiectului este distribuit sub licența BSD.

Sintaxa lui Go se bazează pe elemente 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 autonome care rulează nativ fără a utiliza o mașină virtuală (profilarea, modulele de depanare și alte subsisteme de detectare a problemelor de rulare sunt integrate ca componente de rulare), ceea ce permite performanțe comparabile cu programele 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.

Caracteristici cheie noi introduse în Go 1.16:

  • S-a adăugat pachetul de încorporare, care oferă instrumente pentru încorporarea fișierelor și directoarelor arbitrare în program. O nouă directivă „//go:embed” este furnizată pentru a specifica fișierele care urmează să fie încorporate în momentul compilării. De exemplu, specificarea „//go:embed test.txt” în comentariul de cod și apoi declararea variabilei „var f embed.FS” va duce la încorporarea fișierului test.txt și la posibilitatea de a-l accesa prin „ f” descriptor. În mod similar, puteți încorpora fișiere cu resurse sau valori individuale de un anumit tip necesare pentru lucru, de exemplu, pentru a obține variabila șir „s” din fișierul version.txt, puteți specifica: import _ „embed ” //go:embed version.txt var s string print(e)
  • Noul sistem de module cu suport integrat pentru versionare este acum necesar în mod implicit, înlocuind instrumentele de gestionare a dependențelor bazate pe GOPATH. Variabila de mediu GO111MODULE este acum setată implicit pe „on”, iar modul modul este utilizat indiferent de prezența unui fișier go.mod în directorul de lucru sau în directorul părinte. În noul mod, comenzile de compilare precum „go build” și „go test” nu modifică conținutul fișierelor go.mod și go.sum, iar comanda „go install” procesează argumente specifice versiunii („go install example.com/cmd@v1.0.0”). Pentru a reveni la vechiul comportament, schimbați GO111MODULE în „auto”. Se observă că 96% dintre dezvoltatori au trecut deja la noul sistem de module.
  • Linkerul a fost optimizat. Pentru proiectele mari, aspectul este acum cu 20-25% mai rapid și necesită cu 5-15% mai puțină memorie.
  • Compilatorul a adăugat suport pentru extinderea inline a funcțiilor cu definiții abreviate ale buclelor „for”, valori ale metodei și constructe „comutator de tip”.
  • S-a adăugat suport pentru sistemele Apple echipate cu noul cip Apple M1 ARM. S-au adăugat porturi netbsd/arm64 și openbsd/mips64 cu suport pentru NetBSD pe ARM pe 64 de biți și OpenBSD pe sisteme MIPS64. S-a adăugat suport pentru cgo și modul „-buildmode=pie” la portul linux/riscv64.
  • Suportul pentru modul de compilare x87 a fost întrerupt (GO386=387). Suportul pentru procesoarele SSE2 fără instrucțiuni este acum disponibil prin modul software „GO386=softfloat”.

În plus, putem observa începutul testării versiunii beta a limbajului Dart 2.12, în care modul sigur pentru utilizarea valorii „Null” (siguranță nulă) a fost stabilizat, ceea ce va ajuta la evitarea blocărilor cauzate de încercările de a utiliza variabile ale căror valoarea este nedefinită și setată la „Null”. Modul implică faptul că variabilelor nu pot avea valori nule decât dacă li se atribuie în mod explicit valoarea nulă. Modul respectă cu strictețe tipurile de variabile, ceea ce permite compilatorului să aplice optimizări suplimentare. Conformitatea tipului este verificată în momentul compilării, de exemplu, dacă încercați să atribuiți valoarea „Null” unei variabile cu un tip care nu implică o stare nedefinită, cum ar fi „int”, va fi afișată o eroare.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster