Siirry ohjelmointikielen julkaisuun 1.13

Lähettäjä ohjelmointikielen julkaisu Mene 1.13, jota Google kehittää yhteisön mukana hybridiratkaisuna, joka yhdistää käännettyjen kielten korkean suorituskyvyn ja komentosarjakielten edut, kuten koodin kirjoittamisen helppouden, kehitysnopeuden ja virhesuojauksen. Projektin koodi jakelija BSD-lisenssillä.

Go:n syntaksi perustuu tuttuihin C-kielen elementteihin, joissa on lainauksia Python-kielestä. Kieli on melko ytimekäs, mutta koodi on helppo lukea ja ymmärtää. Go-koodi on käännetty itsenäisiksi binäärisuoritettaviksi tiedostoiksi, jotka toimivat natiivisti ilman virtuaalikoneen käyttöä (profilointi-, virheenkorjaus- ja muut ajonaikaisten ongelmien havaitsemisalijärjestelmät on integroitu ajonaikaiset komponentit), jonka avulla voit saavuttaa C-ohjelmiin verrattavan suorituskyvyn.

Projektia kehitetään alun perin silmällä pitäen monisäikeistä ohjelmointia ja tehokasta toimintaa moniytimisissä järjestelmissä, mukaan lukien operaattoritason välineet rinnakkaisen laskennan ja rinnakkaisten menetelmien välisen vuorovaikutuksen järjestämiseen. Kieli tarjoaa myös sisäänrakennetun suojan yliallokoituja muistilohkoja vastaan ​​ja mahdollistaa roskienkeräimen käytön.

Pääasiallinen innovaatioitaesitelty Go 1.13 -julkaisussa:

  • crypto/tls-paketissa protokollatuki on oletuksena käytössä TLS 1.3. Lisätty uusi paketti "crypto/ed25519", joka tukee Ed25519 digitaalisia allekirjoituksia;
  • Lisätty tuki uusille numeerisille kirjaimellisille etuliitteille binäärilukujen (esim. 0b101), oktaalilukujen (0o377), imaginaarilukujen (2.71828i) ja heksadesimaalilukujen (0x1p-1021) määrittämiseen sekä mahdollisuus käyttää "_"-merkkiä numeroiden visuaaliseen erottamiseen. suuria määriä (1_000_000);
  • Rajoitus käyttää vain etumerkittömiä laskureita vuorooperaatioissa on poistettu, mikä estää tarpeettomat muunnokset uint-tyypiksi ennen "‹‹"- ja "››"-operaattorien käyttöä;
  • Lisätty tuki Illumos-alustalle (GOOS=illumos). Yhteensopivuus Android 10 -alustan kanssa on varmistettu. Vaatimuksia FreeBSD:n (11.2) ja macOS:n (10.11 “El Capitan”) minimiversioille on korotettu.
  • Jatketaan uuden moduulijärjestelmän kehittämistä, jota voidaan käyttää vaihtoehtona GOPATHille. Toisin kuin aiemmin Go 1.13:ssa ilmoitetut suunnitelmat, tämä järjestelmä ei ole oletusarvoisesti käytössä ja vaatii aktivoinnin GO111MODULE=on-muuttujan kautta tai sellaisen kontekstin käyttöä, jossa moduulit otetaan käyttöön automaattisesti. Uudessa moduulijärjestelmässä on integroitu versiointituki, pakettien toimitusominaisuudet ja parannettu riippuvuuden hallinta. Moduulien avulla kehittäjät eivät enää ole sidoksissa GOPATH-puun sisällä työskentelemiseen, he voivat määritellä versioidut riippuvuudet ja luoda toistettavia koontiversioita.

    Toisin kuin aikaisemmissa julkaisuissa, uuden järjestelmän automaattinen sovellus toimii nyt, kun go.mod-tiedosto on nykyisessä työhakemistossa tai päähakemistossa go-komentoa suoritettaessa, myös silloin, kun se on GOPATH/src-hakemistossa. Uusia ympäristömuuttujia on lisätty: GOPRIVATE, joka määrittää julkisesti käytettävissä olevien moduulien polut, ja GOSUMDB, joka määrittää pääsyparametrit tarkistussummatietokantaan moduuleille, joita ei ole mainittu go.sum-tiedostossa;

  • "go"-komento oletusarvoisesti lataa moduulit ja tarkistaa niiden eheyden käyttämällä Googlen ylläpitämää moduulipeili- ja tarkistussummatietokantaa (proxy.golang.org, sum.golang.org ja index.golang.org);
  • Vain binääripakettien tuki on lopetettu; paketin rakentaminen "//go:binary-only-package" -tilassa aiheuttaa nyt virheen.
  • Lisätty tuki @patch-liitteelle "go get" -komentoon, mikä osoittaa, että moduuli tulee päivittää uusimpaan ylläpitojulkaisuun, mutta nykyistä pää- tai sivuversiota muuttamatta;
  • Haettaessa moduuleja lähdeohjausjärjestelmistä, "go"-komento suorittaa nyt lisätarkistuksen versiomerkkijonolle ja yrittää sovittaa pseudoversionumerot arkiston metatietoihin.
  • Lisätty tuki virheen tarkastus (error wrapping) luomalla kääreitä, jotka mahdollistavat standardien virhekäsittelijöiden käytön. Esimerkiksi, virhe "e" voidaan kääriä virheen "w" ympärille tarjoamalla menetelmä ottaa paketista, palauttaa "w". Sekä virheet "e" että "w" ovat käytettävissä ohjelmassa ja päätökset tehdään virheen "w" perusteella, mutta "e" tarjoaa lisäkontekstia "w":lle tai tulkitsee sen eri tavalla;
  • Ajonaikaisten komponenttien suorituskykyä on optimoitu (jopa 30 % nopeuden lisäys on havaittu) ja aggressiivisempi muistin palautus käyttöjärjestelmään on toteutettu (aiemmin muisti palautettiin viiden tai useamman minuutin kuluttua, mutta nyt heti kasan koon pienentämisen jälkeen).

Lähde: opennet.ru

Lisää kommentti