Izdaja programskega jezika Go 1.16

Predstavljena je izdaja programskega jezika Go 1.16, ki ga Google razvija s sodelovanjem skupnosti kot hibridno rešitev, ki združuje visoko zmogljivost prevedenih jezikov s prednostmi skriptnih jezikov, kot je enostavnost pisanja kode. , hitrost razvoja in zaščita pred napakami. Koda projekta se distribuira pod licenco BSD.

Sintaksa programa Go temelji na znanih elementih jezika C z nekaterimi izposojami iz jezika Python. Jezik je precej jedrnat, vendar je koda lahko berljiva in razumljiva. Koda Go je prevedena v samostojne binarne izvedljive datoteke, ki se izvajajo izvorno brez uporabe virtualnega stroja (moduli za profiliranje, odpravljanje napak in drugi podsistemi za odkrivanje težav med izvajanjem so integrirani kot komponente izvajalnega okolja), kar omogoča zmogljivost, primerljivo s programi C.

Projekt je bil prvotno razvit z mislijo na večnitno programiranje in učinkovito delovanje na večjedrnih sistemih, vključno z zagotavljanjem sredstev na ravni operaterja za organiziranje vzporednega računalništva in interakcije med vzporedno izvedenimi metodami. Jezik ponuja tudi vgrajeno zaščito pred preveč dodeljenimi bloki pomnilnika in omogoča uporabo zbiralnika smeti.

Ključne nove funkcije, predstavljene v Go 1.16:

  • Dodan paket embed, ki ponuja orodja za vdelavo poljubnih datotek in imenikov v program. Nova direktiva "//go:embed" je na voljo za določanje datotek, ki bodo vdelane v času prevajanja. Če na primer navedete »//go:embed test.txt« v komentarju kode in nato deklarirate spremenljivko »var f embed.FS«, bo prišlo do vdelave datoteke test.txt in možnosti dostopa do nje prek » f” deskriptor. Na podoben način lahko vdelate datoteke z viri ali posameznimi vrednostmi določene vrste, potrebne za delo, na primer, da pridobite spremenljivko niza "s" iz datoteke version.txt, lahko podate: import _ "embed ” //go:embed version.txt var s string print (s)
  • Privzeto je zdaj potreben nov sistem modulov z integrirano podporo za urejanje različic, ki nadomešča upravljanje odvisnosti, ki temelji na GOPATH. Spremenljivka okolja GO111MODULE je zdaj privzeto nastavljena na "on" in način modulov se uporablja ne glede na prisotnost datoteke go.mod v delovnem ali nadrejenem imeniku. V novem načinu ukazi za gradnjo, kot sta "go build" in "go test", ne spremenijo vsebine go.mod in go.sum, ukaz "go install" pa obdeluje argumente različice ("go install example.com/[e-pošta zaščitena]"). Če želite vrniti staro vedenje, spremenite GO111MODULE v »samodejno«. Ugotovljeno je, da je 96% razvijalcev že prešlo na nov sistem modulov.
  • Povezovalnik je bil optimiziran. Za velike projekte je postavitev zdaj 20-25 % hitrejša in zahteva 5-15 % manj pomnilnika.
  • Prevajalnik je dodal podporo za vgrajeno razširitev funkcij s skrajšanimi definicijami zank "for", vrednosti metod in konstruktov "stikala tipa".
  • Dodana podpora za sisteme Apple, opremljene z novim čipom Apple M1 ARM. Dodana vrata netbsd/arm64 in openbsd/mips64 s podporo za NetBSD v 64-bitnih sistemih ARM in OpenBSD v sistemih MIPS64. Dodana podpora za cgo in način »-buildmode=pie« v vrata linux/riscv64.
  • Podpora za način prevajanja x87 je bila ukinjena (GO386=387). Podpora za procesorje SSE2 brez navodil je zdaj na voljo prek programskega načina "GO386=softfloat".

Poleg tega lahko opazimo začetek testiranja beta izdaje jezika Dart 2.12, v katerem je stabiliziran varni način »Null«, ki bo pomagal preprečiti zrušitve, ki jih povzročajo poskusi uporabe spremenljivk, katerih vrednost je nedefinirana in nastavljena na »Null ”. Način pomeni, da spremenljivke ne morejo imeti ničelnih vrednosti, razen če jim je izrecno dodeljena ničelna vrednost. Način strogo upošteva vrste spremenljivk, kar prevajalniku omogoča uporabo dodatnih optimizacij. Skladnost s tipom se preveri med prevajanjem; če na primer poskusite dodeliti vrednost »Null« spremenljivki s tipom, ki ne pomeni nedefiniranega stanja, kot je »int«, se bo prikazala napaka.

Vir: opennet.ru

Dodaj komentar