Avage programmeerimiskeele versioon 1.14

Tutvustatakse programmeerimiskeele väljalase Mine 1.14, 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.14 versioonis:

  • Käsu "go" uus moodulsüsteem on kuulutatud üldiseks kasutamiseks valmis, vaikimisi lubatud ja soovitatav GOPATH-i asemel sõltuvuse haldamiseks. 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 selgesõnaliselt määratleda versioonipõhised sõltuvused ja luua korratavaid järge.
  • Lisatud kattuvate meetodite komplektiga liideste manustamise tugi. Sisseehitatud liidese meetoditel võivad nüüd olla samad nimed ja allkirjad kui olemasolevate liideste meetoditel. Selgelt deklareeritud meetodid jäävad unikaalseteks nagu varem.
  • Avaldise "defer" jõudlust on täiustatud, muutes selle peaaegu sama kiireks kui edasilükatud funktsiooni otsekutsumine, võimaldades funktsiooni edasilükkamist jõudlustundlikus koodis.
  • Korutiinide (gorutiinide) asünkroonne ennetamine on ette nähtud – tsüklid, mis ei sisalda funktsioonikutseid, võivad nüüd potentsiaalselt viia planeerija ummikseisu või lükata prügikorjamise algust edasi.
  • Mälulehtede eraldamise süsteemi tõhusust on täiustatud ja suurte GOMAXPROCS-väärtustega konfiguratsioonides on nüüd oluliselt vähem lukustusvaidlusi. Tulemuseks on vähenenud latentsusaeg ja suurenenud läbilaskevõime, jaotades samal ajal intensiivselt suuri mäluplokke.
  • Funktsioonides time.After, time.Tick, net.Conn.SetDeadline kasutatud sisemiste taimerite käitamisel on lukustamist optimeeritud ja kontekstilülitite arvu vähendatud.
  • Käsus go on lipp "-mod=vendor" vaikimisi lubatud, kui juurkataloogis on hankija kataloog, mis on ette nähtud konkreetse tarnijaga seotud väliste sõltuvuste edastamiseks. Lisatud eraldi lipp "-mod=mod", et laadida mooduleid pigem mooduli vahemälust kui "müüja" kataloogist. Kui fail go.mod on kirjutuskaitstud, määratakse vaikimisi lipp „-mod=readonly”, kui puudub ülemine tarnija kataloog. Lisatud lipp "-modfile=file", et määrata mooduli juurkataloogis oleva faili asemel alternatiivne go.mod-fail.
  • Lisatud keskkonnamuutuja GOINSECURE, kui see on määratud, ei nõua käsk go HTTPS-i kasutamist ja jätab moodulite otse laadimisel sertifikaadi kontrollimise vahele.
  • Kompilaator on lisanud lipu "-d=checkptr", mis on vaikimisi lubatud, et kontrollida koodi vastavust unsafe.Pointer ohutu kasutamise reeglitele.
  • Uus pakett on tarnega kaasas räsi/maphash mittekrüptograafiliste räsifunktsioonidega, et luua räsitabeleid suvaliste baidijadade või stringide jaoks.
  • Lisatud eksperimentaalne tugi 64-bitise RISC-V platvormile Linuxis.
  • Lisatud on FreeBSD tugi 64-bitistele ARM-süsteemidele.

Allikas: opennet.ru

Lisa kommentaar