Izdaja programskega jezika Go 1.14

Predložil izdaja programskega jezika Pojdi 1.14, ki ga Google razvija s sodelovanjem skupnosti kot hibridno rešitev, ki združuje visoko zmogljivost prevedenih jezikov s prednostmi skriptnih jezikov, kot so enostavnost pisanja kode, hitrost razvoja in zaščita pred napakami. Koda projekta distributer 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 navideznega stroja (profiliranje, odpravljanje napak in drugi podsistemi za odkrivanje težav med izvajanjem so integrirani kot komponente izvajalnega okolja), ki omogoča doseganje zmogljivosti, primerljive 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.

Glavni inovacijepredstavljeno v izdaji Go 1.14:

  • Nov sistem modulov v ukazu "go" je pripravljen za splošno uporabo, privzeto omogočen in priporočen za upravljanje odvisnosti namesto GOPATH. Nov sistem modulov vključuje integrirano podporo za urejanje različic, zmožnosti dostave paketov in izboljšano upravljanje odvisnosti. Z moduli razvijalci niso več vezani na delo znotraj drevesa GOPATH, lahko izrecno definirajo različice odvisnosti in ustvarijo ponovljive gradnje.
  • Dodano podpora za vdelavo vmesnikov s prekrivajočim se nizom metod. Metode iz vgrajenega vmesnika imajo zdaj lahko enaka imena in podpise kot metode v obstoječih vmesnikih. Izrecno deklarirane metode ostajajo edinstvene kot prej.
  • Zmogljivost izraza "defer" je bila izboljšana, tako da je skoraj tako hiter kot neposreden klic odložene funkcije, kar omogoča odloženo izvajanje funkcije v kodi, ki je občutljiva na zmogljivost.
  • Zagotovljena je asinhrona prednost soprogramov (goroutines) – zanke, ki ne vsebujejo funkcijskih klicev, lahko zdaj potencialno povzročijo zastoj razporejevalnika ali odložijo začetek zbiranja smeti.
  • Učinkovitost sistema za dodeljevanje pomnilniških strani je bila izboljšana in zdaj je v konfiguracijah z velikimi vrednostmi GOMAXPROCS znatno manj sporov glede zaklepanja. Rezultat je zmanjšana zakasnitev in povečana prepustnost ob hkratni intenzivni distribuciji velikih blokov pomnilnika.
  • Zaklepanje je bilo optimizirano in število preklopov konteksta je bilo zmanjšano pri izvajanju notranjih časovnikov, ki se uporabljajo v funkcijah time.After, time.Tick, net.Conn.SetDeadline.
  • V ukazu go je zastavica »-mod=vendor« privzeto omogočena, če je v korenu imenik prodajalca, namenjen dostavi zunanjih odvisnosti, vezanih na določenega prodajalca. Dodana ločena zastavica »-mod=mod« za nalaganje modulov iz predpomnilnika modulov namesto iz imenika »vendor«. Če je datoteka go.mod samo za branje, je zastavica »-mod=readonly« privzeto nastavljena, če ni zgornjega imenika »prodajalca«. Dodana zastavica »-modfile=file« za določitev alternativne datoteke go.mod namesto tiste v korenskem imeniku modula.
  • Dodana spremenljivka okolja GOINSECURE, ko je nastavljena, ukaz go ne zahteva uporabe HTTPS in preskoči preverjanje potrdila pri neposrednem nalaganju modulov.
  • Prevajalnik je dodal zastavico »-d=checkptr«, ki je privzeto omogočena, da preveri skladnost kode s pravili za varno uporabo unsafe.Pointer.
  • Nov paket je vključen v dostavo hash/maphash z nekriptografskimi zgoščevalnimi funkcijami za ustvarjanje zgoščevalnih tabel za poljubna zaporedja bajtov ali nize.
  • Dodana eksperimentalna podpora za 64-bitno platformo RISC-V v sistemu Linux.
  • Dodana podpora za FreeBSD v 64-bitnih sistemih ARM.

Vir: opennet.ru

Dodaj komentar