Go 1.22 je već objavljen, saznajte više o njegovim novim značajkama i poboljšanjima

goland

Go je konkurentni, kompilirani programski jezik sa statičkim tipkanjem inspiriranim C sintaksom.

Nova verzija sustava Go 1.22, stiže šest mjeseci nakon verzije 1.21, s brojnim značajnim promjenama skupa alata, vremena izvođenja, poboljšanja optimizacije, poboljšanja prevoditelja i biblioteka.

Za one koji ne znaju za Go, moram vam reći da je ovoTo je programski jezik koji razvija Google uz sudjelovanje zajednice kao hibridno rješenje koje kombinira visoke performanse kompajliranih jezika s prednostima kao što su skriptni jezici kao što su lakoća pisanja koda, brzina razvoja i zaštita od pogrešaka.

Glavne nove značajke Go 1.22

U ovoj novoj verziji, koja je predstavljena od Go 1.22, ističe se dvije promjene u "for" petljamakao Prije su se varijable deklarirane for petljom stvarale jednom i ažurirani su u svakoj iteraciji. U Go 1.22 svaka iteracija petlje stvara nove varijable osim toga kako biste izbjegli slučajne pogreške u dijeljenju Dodana je eksperimentalna podrška (GOEXPERIMENT=rangefunc) za funkcije raspona u for petlje, koji vam omogućuje da odredite funkciju kao iterator i riješio je dugogodišnji problem s for petljama što je uzrokovalo pozive korutine da dijele varijable petlje između iteracija. Osim toga, for petlje sada mogu prolaziti kroz cijele brojeve. Na primjer:

package main import "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 polijeće!") }

Još jedna značajna promjena u ovoj novoj verziji je uvođenje sposobnost korištenja imenika «prodavač« koji sadrži ovisnosti radnog prostora. Sada naredbe možete koristiti ovaj direktorij, koji je kreiran s `go work vendor` i koristi se u naredbama za izgradnju kada je ` postavljeno-mod` u «prodavač« ovo je zadana vrijednost kada direktorij postoji «prodavač» u radnom prostoru.

Važno je napomenuti da je funkcionalnost `idi po` više nije podržan izvan modula u načinu rada GOPATH naslijeđeno Međutim, druge naredbe izgradnje poput `idi izgradi` i `idi testiraj` Oni će nastaviti raditi na neodređeno vrijeme za naslijeđene GOPATH programe. Nadalje, zapovijed `idi mod init` više neće pokušavati uvesti zahtjeve modula iz konfiguracijskih datoteka drugih «“prodaja” (poput Gopkg.lock).

Go 1.22 uvodi a novi paket io/nesiguran koji pruža funkcionalnost za rad s pokazivačima i nesigurnom memorijom. Ovaj paket pruža metode za pretvaranje pokazivača na i iz sigurnih i nesigurnih tipova, kao i za izvođenje operacija kopiranja memorije bez provjere granica.

Nastavljen je rad na uključivanju optimizacija u kompajler na temelju rezultata strProfiliranje PGO koda, i to je to sada kompajler koristi alate za devirtualizaciju da zamijeni neizravne pozive različitih metoda s proširenim inline blok izvođenjem. Kada je PGO bio omogućen, dodana promjena poboljšala je performanse većine programa za 2% do 14%.

U inačici Odaberite Windows, programe koji povezuju ili učitavaju biblioteke Krenite graditi sa -buildmode=c-arhiva o -buildmode=c-dijeljeno sada može koristiti Event Logging Windows (ETW) API kroz nove pakete vrijeme izvođenja/trag y tracehook, koji implementiraju Go protokol prikupljanja praćenja događaja kao ETW pružatelj.

Od ostalih istaknutih promjena:

  • Naredba idi test -poklopac sada ispisuje sažetke pokrivenosti za pokrivene pakete koji nemaju vlastite testne datoteke.
  • os/izvrš, dodana je mogućnost definiranja atributa konteksta, što vam omogućuje postavljanje vrijednosti kao što su radni direktorij, varijable okruženja i deskriptor ulazno/izlazne datoteke za izvršene naredbe.
  • Optimizirano upravljanje memorijom tijekom izvođenja, što rezultira povećanjem performansi od 1-3% i smanjenjem potrošnje memorije od 1% za većinu aplikacija.
  • El paquete net/http, funkcija je dodana CloseIdleConnections na HTTP klijent, koji zatvara sve neaktivne veze koje je klijent nedavno koristio
  • Poboljšana eksperimentalna implementacija (GOEXPERIMENT=newinliner) mehanizma za umetanje poziva dodana je prevoditelju, koji koristi heuristiku za odvajanje važnih operacija od nevažnih.
  • Paket je dodan » matematika/rand/v2 » standardnoj biblioteci, koja nudi dosljedniji API i koristi brže algoritme za generiranje pseudoslučajnih brojeva.
  • El paquete net/http.ServeMux Dodana mogućnost određivanja metoda i maski u predlošcima.

Konačno, ako jesi zainteresirani za saznanje više o tome, možete provjeriti detalje U sljedećem linku.


Dodaj kao preferirani izvor na Googleu