Avage programmeerimiskeele versioon 1.16

Esitletakse programmeerimiskeele Go 1.16 väljalaset, mida Google arendab kogukonna osalusel hübriidlahendusena, mis ühendab kompileeritud keelte suure jõudluse selliste skriptikeelte eelistega nagu koodi kirjutamise lihtsus , arenduskiirus ja veakaitse. Projekti koodi levitatakse BSD litsentsi all.

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 täitmisfailideks, mis töötavad natiivselt ilma virtuaalmasinat kasutamata (profileerimis-, silumismoodulid ja muud käitusaegsete probleemide tuvastamise alamsüsteemid on integreeritud käitusaegsete komponentidena), mis võimaldab 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.

Go 1.16-s kasutusele võetud peamised uued funktsioonid:

  • Lisatud on manustuspakett, mis pakub tööriistu suvaliste failide ja kataloogide manustamiseks programmi. Uus "//go:embed" direktiiv on ette nähtud, et määrata kompileerimise ajal manustatavad failid. Näiteks kui täpsustate koodi kommentaaris "//go:embed test.txt" ja deklareerite seejärel muutuja "var f embed.FS", manustatakse fail test.txt ja sellele pääseb juurde faili " f” deskriptor. Sarnaselt saate manustada faile, millel on tööks vajalikud teatud tüüpi ressursse või individuaalseid väärtusi, näiteks stringimuutuja "s" saamiseks failist version.txt, saate määrata: import _ "embed ” //go:embed version.txt var s string print(id)
  • Vaikimisi on nüüd nõutav uus integreeritud versioonitoega moodulsüsteem, mis asendab GOPATH-põhise sõltuvushalduse. Keskkonnamuutuja GO111MODULE on nüüd vaikimisi seatud "sees" ja moodulite režiimi kasutatakse olenemata sellest, kas töö- või ülemkataloogis on fail go.mod. Uues režiimis ei muuda ehituskäsud nagu "go build" ja "go test" failide go.mod ja go.sum sisu ning käsk "go install" töötleb versiooni argumente ("go install example.com/[meiliga kaitstud]"). Vana käitumise naasmiseks muutke GO111MODULE väärtuseks "auto". Märgitakse, et 96% arendajatest on juba uuele moodulsüsteemile üle läinud.
  • Linker on optimeeritud. Suurte projektide puhul on paigutus nüüd 20-25% kiirem ja nõuab 5-15% vähem mälu.
  • Kompilaator on lisanud funktsioonide sisemise laiendamise toe "for" silmuste, meetodi väärtuste ja "tüübilüliti" konstruktsioonide lühendatud määratlustega.
  • Lisatud on tugi Apple'i süsteemidele, mis on varustatud uue Apple M1 ARM kiibiga. Lisatud netbsd/arm64 ja openbsd/mips64 pordid, mis toetavad NetBSD-d 64-bitisel ARM-il ja OpenBSD-d MIPS64-süsteemidel. Lisati linux/riscv64 pordile cgo tugi ja režiim "-buildmode=pie".
  • x87 kompileerimisrežiimi tugi on lõpetatud (GO386=387). SSE2 juhisteta protsessorite tugi on nüüd saadaval tarkvararežiimi "GO386=softfloat" kaudu.

Lisaks võime märkida Dart 2.12 keele beetaversiooni testimise algust, milles on stabiliseerunud turvarežiim väärtuse "Null" kasutamiseks (null safety), mis aitab vältida kokkujooksmisi, mis on põhjustatud katsetest kasutada muutujaid, väärtus on määramata ja seatud väärtusele "Null". Režiim tähendab, et muutujatel ei saa olla nullväärtusi, välja arvatud juhul, kui neile on otseselt määratud väärtus null. Režiim järgib rangelt muutujatüüpe, mis võimaldab kompilaatoril rakendada täiendavaid optimeerimisi. Tüübi vastavust kontrollitakse kompileerimise ajal, näiteks kui proovite omistada väärtust "Null" muutujale, mille tüüp ei viita määratlemata olekule, näiteks "int", kuvatakse tõrge.

Allikas: opennet.ru

Lisa kommentaar