Izdanje programskog jezika Go 1.16

Predstavljeno je izdanje programskog jezika Go 1.16, koji razvija Google uz sudjelovanje zajednice kao hibridno rješenje koje kombinira visoke performanse kompiliranih jezika s prednostima skriptnih jezika kao što je lakoća pisanja koda , brzina razvoja i zaštita od pogrešaka. Kod projekta se distribuira pod BSD licencom.

Sintaksa Go-a temelji se na poznatim elementima jezika C s nekim posuđenicama iz jezika Python. Jezik je prilično koncizan, ali je kod lako čitljiv i razumljiv. Go kod je kompajliran u samostalne binarne izvršne datoteke koje se izvode izvorno bez korištenja virtualnog stroja (moduli za profiliranje, otklanjanje pogrešaka i drugi podsustavi za otkrivanje problema tijekom izvođenja integrirani su kao komponente za izvođenje), što omogućuje performanse usporedive s C programima.

Projekt je inicijalno razvijen s ciljem programiranja s više niti i učinkovitog rada na sustavima s više jezgri, uključujući pružanje sredstava na razini operatera za organiziranje paralelnog računanja i interakcije između metoda koje se paralelno izvode. Jezik također pruža ugrađenu zaštitu od previše dodijeljenih memorijskih blokova i pruža mogućnost korištenja skupljača smeća.

Ključne nove značajke predstavljene u Go 1.16:

  • Dodan paket za ugradnju, koji pruža alate za ugradnju proizvoljnih datoteka i direktorija u program. Nova direktiva "//go:embed" dostupna je za određivanje datoteka koje će biti ugrađene tijekom kompilacije. Na primjer, navođenje "//go:embed test.txt" u komentaru koda i zatim deklariranje varijable "var f embed.FS" dovest će do ugradnje datoteke test.txt i mogućnosti pristupa njoj putem " f” deskriptor. Na sličan način možete ugraditi datoteke s resursima ili pojedinačnim vrijednostima određene vrste potrebne za rad, na primjer, da biste dobili varijablu niza "s" iz datoteke version.txt, možete navesti: import _ "embed ” //go:embed version.txt var s ispis niza (s)
  • Prema zadanim postavkama sada je potreban novi sustav modula s integriranom podrškom za određivanje verzija, koji zamjenjuje upravljanje ovisnostima temeljeno na GOPATH-u. Varijabla okruženja GO111MODULE sada je postavljena na "uključeno" prema zadanim postavkama i način rada modula koristi se bez obzira na prisutnost datoteke go.mod u radnom ili nadređenom direktoriju. U novom načinu rada naredbe za izgradnju kao što su "go build" i "go test" ne mijenjaju sadržaj go.mod i go.sum, a naredba "go install" obrađuje argumente verzije ("go install example.com/[e-pošta zaštićena]"). Za povratak na staro ponašanje promijenite GO111MODULE u "auto". Napominje se da je 96% programera već prešlo na novi sustav modula.
  • Linker je optimiziran. Za velike projekte, raspored je sada 20-25% brži i zahtijeva 5-15% manje memorije.
  • Kompajler je dodao podršku za inline proširenje funkcija sa skraćenim definicijama "for" petlji, vrijednosti metode i konstrukcije 'type switch'.
  • Dodana podrška za Apple sustave opremljene novim Apple M1 ARM čipom. Dodani netbsd/arm64 i openbsd/mips64 priključci s podrškom za NetBSD na 64-bitnom ARM-u i OpenBSD na MIPS64 sustavima. Dodana podrška za cgo i način rada “-buildmode=pie” linux/riscv64 priključku.
  • Podrška za x87 način kompilacije je prekinuta (GO386=387). Podrška za SSE2 procesore bez instrukcija sada je dostupna putem softverskog načina rada "GO386=softfloat".

Dodatno, možemo primijetiti početak testiranja beta izdanja jezika Dart 2.12, u kojem je stabiliziran sigurni način za korištenje vrijednosti “Null” (null safety), što će pomoći u izbjegavanju rušenja uzrokovanih pokušajima korištenja varijabli čije vrijednost je nedefinirana i postavljena na "Null". Način implicira da varijable ne mogu imati null vrijednosti osim ako im nije eksplicitno dodijeljena vrijednost null. Način rada strogo poštuje tipove varijabli, što omogućuje kompajleru primjenu dodatnih optimizacija. Usklađenost tipa provjerava se tijekom kompajliranja, na primjer, ako pokušate dodijeliti vrijednost "Null" varijabli s tipom koji ne podrazumijeva nedefinirano stanje, kao što je "int", prikazat će se pogreška.

Izvor: opennet.ru

Dodajte komentar