Siirry ohjelmointikielen julkaisuun 1.14

Lähettäjä ohjelmointikielen julkaisu Mene 1.14, 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.14 -julkaisussa:

  • "go"-komennon uusi moduulijärjestelmä on ilmoitettu valmiiksi yleiseen käyttöön, oletusarvoisesti käytössä ja sitä suositellaan riippuvuuden hallintaan GOPATHin sijaan. 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.
  • lisätty tuki rajapintojen upottamiseen päällekkäisten menetelmien kanssa. Sisäänrakennetun käyttöliittymän menetelmillä voi nyt olla samat nimet ja allekirjoitukset kuin olemassa olevien liitäntöjen menetelmillä. Eksplisiittisesti ilmoitetut menetelmät pysyvät ainutlaatuisina kuten ennenkin.
  • "Defer"-lausekkeen suorituskykyä on parannettu, mikä tekee siitä melkein yhtä nopean kuin viivästetyn funktion kutsuminen suoraan, mikä mahdollistaa lykätyn funktion suorittamisen suorituskykyherkässä koodissa.
  • Korutiinien (gorutiinien) asynkroninen ennaltaehkäisy tarjotaan - silmukat, jotka eivät sisällä toimintokutsuja, voivat nyt mahdollisesti johtaa ajoittimen lukkiutumiseen tai viivästyttää roskienkeruun alkamista.
  • Muistisivujen varausjärjestelmän tehokkuutta on parannettu ja lukituskiistaa on nyt huomattavasti vähemmän konfiguraatioissa, joissa on suuret GOMAXPROCS-arvot. Tuloksena on alentunut viive ja lisääntynyt suorituskyky ja samalla intensiivisesti jakaa suuria muistilohkoja.
  • Lukitus on optimoitu ja kontekstikytkimien määrää on vähennetty käytettäessä time.After, time.Tick, net.Conn.SetDeadline -funktioita.
  • Go-komennossa lippu "-mod=vendor" on oletusarvoisesti käytössä, jos juurissa on toimittajahakemisto, joka on tarkoitettu tiettyyn toimittajaan sidottujen ulkoisten riippuvuuksien toimittamiseen. Lisätty erillinen "-mod=mod"-lippu moduulien lataamiseksi moduulin välimuistista "toimittaja"-hakemiston sijaan. Jos go.mod-tiedosto on vain luku -muotoinen, "-mod=readonly"-lippu asetetaan oletusarvoisesti, jos "toimittaja"-hakemistoa ei ole. Lisätty "-modfile=file" -lippu määrittääksesi vaihtoehtoisen go.mod-tiedoston moduulin juurihakemistossa olevan tiedoston sijaan.
  • Lisätty GOINSECURE-ympäristömuuttuja, kun se on asetettu, go-komento ei vaadi HTTPS:n käyttöä ja ohittaa varmenteen tarkistuksen ladattaessa moduuleja suoraan.
  • Kääntäjä on lisännyt "-d=checkptr" -lipun, joka on oletusarvoisesti käytössä, tarkistamaan koodin noudattaminen unsafe.Pointerin turvallisen käytön sääntöjä.
  • Uusi paketti sisältyy toimitukseen hash/maphash ei-salauksilla hajautusfunktioilla luodaksesi hajautustaulukoita mielivaltaisille tavusarjoille tai merkkijonoille.
  • Lisätty kokeellinen tuki 64-bittiselle RISC-V-alustalle Linuxissa.
  • Lisätty tuki FreeBSD:lle 64-bittisissä ARM-järjestelmissä.

Lähde: opennet.ru

Lisää kommentti