Avage programmeerimiskeele versioon 1.13

Tutvustatakse programmeerimiskeele väljalase Mine 1.13, mida arendab Google kogukonna osalusel hübriidlahendusena, mis ühendab kompileeritud keelte suure jõudluse skriptikeelte eelistega, nagu koodi kirjutamise lihtsus, arenduskiirus ja veakaitse. Projekti kood jaotatud BSD litsentsi alusel.

Go süntaks põhineb C-keele tuttavatel elementidel, millel on mõned laenud Pythoni keelest. Keel on üsna sisutihe, kuid koodi on lihtne lugeda ja mõista. Go kood kompileeritakse eraldiseisvateks binaarseteks käivitatavateks failideks, mis töötavad natiivselt ilma virtuaalmasinat kasutamata (profileerimine, silumine ja muud käitusaegsete probleemide tuvastamise alamsüsteemid on integreeritud käitusaegsed komponendid), mis võimaldab saavutada C-programmidega võrreldavat jõudlust.

Projekt on algselt välja töötatud, pidades silmas mitme lõimega programmeerimist ja tõhusat töötamist mitmetuumalistes süsteemides, sealhulgas operaatoritaseme vahendite pakkumist paralleelarvutuse korraldamiseks ja paralleelselt täidetavate meetodite vahel. Keel pakub ka sisseehitatud kaitset ülejaotatud mäluplokkide eest ja annab võimaluse kasutada prügikogujat.

Kõik uuendusedkasutusele Go 1.13 versioonis:

  • Krüpto/tls-paketil on vaikimisi lubatud protokolli tugi TLS 1.3. Lisatud uus pakett "crypto/ed25519", mis toetab Ed25519 digitaalallkirju;
  • Lisatud on uute numbriliste literaalsete eesliidete tugi kahendarvu (nt 0b101), kaheksandarvu (0o377), imaginaarse (2.71828i) ja kuueteistkümnendsüsteemi ujukoma (0x1p-1021) määratlemiseks ning võimalus kasutada numbrite visuaalseks eraldamiseks märki "_". suurel hulgal (1_000_000);
  • Ainult märgita loendurite kasutamise piirang vahetusoperatsioonides on eemaldatud, mis väldib tarbetuid teisendusi uint-tüüpi enne operaatorite “‹‹” ja “››” kasutamist;
  • Lisatud on Illumos platvormi tugi (GOOS=illumos). Tagatud on ühilduvus platvormiga Android 10. FreeBSD (11.2) ja macOS (10.11 “El Capitan”) miinimumversioonide nõudeid on tõstetud.
  • Jätkub uue moodulsüsteemi arendamine, mida saab kasutada alternatiivina GOPATH-ile. Vastupidiselt varem välja kuulutatud plaanidele versioonis Go 1.13 ei ole see süsteem vaikimisi lubatud ja nõuab aktiveerimist muutuja GO111MODULE=on kaudu või konteksti kasutamist, milles mooduleid rakendatakse automaatselt. Uuel moodulsüsteemil on integreeritud versioonitugi, pakettide kohaletoimetamise võimalused ja täiustatud sõltuvushaldus. Moodulitega ei ole arendajad enam seotud GOPATH-puuga töötamisega, nad saavad selgelt määratleda versioonipõhised sõltuvused ja luua korratavaid järge.

    Erinevalt eelmistest väljalasetest töötab uue süsteemi automaatne rakendamine nüüd, kui faili go.mod on käsu go käivitamisel praeguses töökataloogis või ülemkataloogis, sealhulgas siis, kui see on kataloogis GOPATH/src. Lisatud on uued keskkonnamuutujad: GOPRIVATE, mis määrab avalikult ligipääsetavate moodulite teed ja GOSUMDB, mis määrab kontrollsummade andmebaasi juurdepääsu parameetrid moodulitele, mida pole failis go.sum loetletud;

  • Käsk "go" laadib vaikimisi mooduleid ja kontrollib nende terviklikkust, kasutades Google'i hallatavat mooduli peegel- ja kontrollsummade andmebaasi (proxy.golang.org, sum.golang.org ja index.golang.org);
  • Ainult binaarpakettide tugi on lõpetatud, paketi koostamine režiimis "//go:binary-only-pacage" põhjustab nüüd tõrke;
  • Käsule "go get" lisati tugi "@patch" järelliitele, mis näitab, et moodul tuleks värskendada uusimale hooldusväljaandele, kuid ilma praegust suuremat või kõrvalversiooni muutmata;
  • Lähtejuhtimissüsteemidest moodulite hankimisel teostab käsk "go" nüüd versioonistringi täiendava kontrolli, püüdes pseudoversioonide numbreid vastendada hoidlast pärit metaandmetega;
  • Lisatud tugi vea kontroll (error wrapping) ümbriste loomise kaudu, mis võimaldavad kasutada standardseid veakäsitlejaid. Näiteks, viga "e" saab meetodi abil ümber keerata vea "w". Pakkige lahti, tagastab "w". Programmis on saadaval nii vead "e" kui ka "w" ja otsused tehakse vea "w" põhjal, kuid "e" annab "w"-le lisakonteksti või tõlgendab seda erinevalt;
  • Käitusaja komponentide jõudlust on optimeeritud (täheldatud on kiiruse tõusu kuni 30%) ja rakendatud on agressiivsem mälu taastamine operatsioonisüsteemi (varem tagastati mälu viie või enama minuti pärast, nüüd aga kohe pärast kuhja suuruse vähendamist).

Allikas: opennet.ru

Lisa kommentaar