Go programski jezik izdanje 1.16

Predstavljeno je izdanje programskog jezika Go 1.16, koji razvija Google uz učešće zajednice kao hibridno rešenje koje kombinuje visoke performanse kompajliranih jezika sa takvim prednostima skriptnih jezika kao što je jednostavnost pisanje koda, brzi razvoj i zaštita od grešaka. Projektni kod se distribuira pod BSD licencom.

Sintaksa Go je zasnovana na poznatim elementima jezika C sa nekim pozajmicama iz jezika Python. Jezik je prilično sažet, ali je kod lak za čitanje i razumijevanje. Go kod se kompajlira u zasebne binarne izvršne datoteke koje se pokreću nativno bez upotrebe virtuelne mašine (profiliranje, otklanjanje grešaka i drugi podsistemi za otkrivanje problema tokom izvršavanja integrisani su kao komponente vremena izvršavanja), što omogućava postizanje performansi uporedivih sa C programima.

Projekat je inicijalno razvijen sa okom na višenitnom programiranju i efikasnom radu na sistemima sa više jezgara, uključujući obezbeđivanje sredstava implementiranih na nivou operatera za organizovanje paralelnog računarstva i interakciju između paralelno izvođenih metoda. Jezik također pruža ugrađenu zaštitu od prekoračenja dodijeljenih memorijskih blokova i pruža mogućnost korištenja sakupljača smeća.

Ključne nove funkcije predstavljene u Go 1.16:

  • Dodan je embed paket koji pruža alate za ugrađivanje proizvoljnih datoteka i direktorija u program. Nova "//go:embed" direktiva je data da se specificiraju datoteke koje će biti ugrađene u vrijeme kompajliranja. Na primjer, navođenje “//go:embed test.txt” u komentar koda, a zatim deklariranje varijable “var f embed.FS” će dovesti do ugrađivanja datoteke test.txt i mogućnosti pristupa kroz “ 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 stringa "s" iz datoteke version.txt, možete odrediti: import _ "embed ” //go:embed version.txt var s ispis niza (s)
  • Podrazumevano, sada je potreban novi sistem modula sa integrisanom podrškom za verzionisanje, koji zamenjuje upravljanje zavisnostima zasnovano na GOPATH-u. Varijabla okruženja GO111MODULE je sada po defaultu postavljena na "on" i mod modula se koristi bez obzira na prisutnost go.mod datoteke u radnom ili roditeljskom direktoriju. U novom modu, naredbe izgradnje kao što su "idi build" i "idi na testiranje" ne mijenjaju sadržaj go.mod i go.sum, a naredba "idi install" obrađuje argumente verzije ("idi install example.com/[email zaštićen]"). Da vratite staro ponašanje, promijenite GO111MODULE u “auto”. Napominje se da je 96% programera već prešlo na novi sistem modula.
  • Linker je optimizovan. Za velike projekte, povezivanje je sada 20-25% brže i zahtijeva 5-15% manje memorije.
  • Kompajler je dodao podršku za inline proširenje funkcija sa skraćenim definicijama "for" petlji, vrijednosti metoda i konstrukcija 'type switch'.
  • Dodata podrška za Apple sisteme opremljene novim Apple M1 ARM čipom. Dodati netbsd/arm64 i openbsd/mips64 portovi sa podrškom za NetBSD na 64-bitnom ARM-u i OpenBSD na MIPS64 sistemima. Dodata podrška za cgo i “-buildmode=pie” mod za linux/riscv64 port.
  • Podrška za x87 način kompilacije je ukinuta (GO386=387). Podrška za SSE2 procesore bez instrukcija sada je dostupna preko softverskog moda "GO386=softfloat".

Dodatno, možemo primijetiti početak testiranja beta izdanja jezika Dart 2.12, u kojem je stabiliziran “Null” siguran način rada, što će pomoći u izbjegavanju padova uzrokovanih pokušajima korištenja varijabli čija je vrijednost nedefinirana i postavljena na “Null ”. Režim podrazumijeva da varijable ne mogu imati null vrijednosti osim ako im se eksplicitno ne dodijeli vrijednost null. Režim striktno poštuje tipove promenljivih, što omogućava kompajleru da primeni dodatne optimizacije. Usklađenost tipa se provjerava u vrijeme kompajliranja, na primjer, ako pokušate dodijeliti vrijednost “Null” varijabli s tipom koji ne podrazumijeva nedefinirano stanje, kao što je “int”, prikazat će se greška.

izvor: opennet.ru

Dodajte komentar