Siirry ohjelmointikielen julkaisuun 1.15

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

  • Linkkerin työtä on parannettu merkittävästi sekä toiminnan nopeuden lisäämisessä ja muistinkulutuksen vähentämisessä että koodin ylläpidon yksinkertaistamisen suuntaan. Kun testattiin käyttöjärjestelmissä, joissa käytettiin ELF-suoritettavaa tiedostomuotoa (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), tyypillinen joukko suuria Go-sovelluksia rakennettiin 20 % nopeammin ja muistin kulutus väheni keskimäärin 30 %. Tuottavuuden lisääminen mahdollisti siirtymällä uuteen objektitiedostomuotoon ja työstämällä sisäisiä vaiheita työn rinnakkaisuuden lisäämiseksi. Natiivilinkkeriä käytetään nyt oletuksena linux/amd64- ja linux/arm64-järjestelmissä muodossa "-buildmode=pie", mikä ei enää vaadi C-linkkerin käyttöä.
  • Ajon aikana pienten objektien jakelua järjestelmissä, joissa on suuri määrä CPU-ytimiä, on parannettu merkittävästi ja latenssia on vähennetty. Vikojen sattuessa osoitteen sijaan näytetään arvot numeerisilla ja merkkijonotyypeillä. Lähetettäessä SIGSEGV-, SIGBUS- ja SIGFPE-signaaleja Go-sovellukseen, os/signal.Notify-käsittelijän puuttuessa sovellus poistuu pinon jäljityksen lähdöstä (aiemmin käyttäytyminen oli arvaamatonta).
  • Kääntäjä on optimoitu pienentämään luotujen suoritettavien tiedostojen kokoa keskimäärin 5 % lopettamalla joidenkin metatietojen sisällyttäminen roskienkerääjälle ja aggressiivisemmin käyttämättömien metatietojen puhdistaminen.
  • "-Spectre"-lippu on lisätty kääntäjään ja kokoajaan suojaamaan Spectre-luokan hyökkäyksiä vastaan ​​(useimmille ohjelmille tätä ei vaadita; vaihtoehdon käyttöönotto voi olla perusteltua vain joitakin hyvin erityisiä tapauksia).
  • X.509-varmenteissa CommonName-kenttä on poistettu käytöstä, jota ei enää käsitellä isäntänimenä, jos Aiheen vaihtoehtoiset nimet -kenttä puuttuu.
  • GOPROXY-ympäristömuuttujan "go"-komento voi nyt luetella useita välityspalvelimia pilkulla tai "|" erotettuina. Jos luettelon ensimmäinen välityspalvelin palauttaa virheen (404 tai 410), yritetään ottaa yhteyttä toisen välityspalvelimen kautta jne.
  • Vet-apuohjelma on lisännyt varoituksen yrityksistä muuntaa merkkijonosta (x), jos "x" on muu kokonaislukutyyppi kuin riimu tai tavu.
  • "-gnu"-lippu on lisätty objdump-apuohjelmaan tukemaan GNU-asentajasyntaksin purkamista.
  • Uusi paketti lisätty aika/tzdata, jonka avulla voit integroida aikavyöhyketietoja sisältävän tietokannan ohjelmaan.
  • Lähdeteksteistä ja dokumentaatiosta poistettu lauseet whitelist/blacklist ja master/slave, jotka on nyt korvattu sanoilla "allowlist", "blocklist", "process", "pty", "proc" ja "control".
  • Vakiokirjastoon on tehty suuri osa pieniä parannuksia.
  • Lisätty tuki OpenBSD 6.7:lle GOARCH=arm- ja GOARCH=arm64-tiloissa (aiemmin tuettiin vain GOARCH=386 ja GOARCH=amd64).
  • 64-bittisen RISC-V-alustan (GOOS=linux, GOARCH=riscv64) kehittäminen jatkui.
  • 32-bittisille x86-järjestelmille seuraava versio nostaa järjestelmän vähimmäisvaatimuksia - vain SSE2-prosessoreja tuetaan edelleen. GOARCH=386-tilassa rakentamiseen tarvitaan vähintään Intel Pentium 4 (julkaistu vuonna 2000) tai AMD Opteron/Athlon 64 (julkaistu vuonna 2003).

Lähde: opennet.ru

Lisää kommentti