Go programski jezik izdanje 1.14

Poslao izdanje programskog jezika Idite 1.14, koji razvija Google uz sudjelovanje zajednice kao hibridno rješenje koje kombinuje visoke performanse kompajliranih jezika s prednostima skriptnih jezika kao što su jednostavnost pisanja koda, brzina razvoja i zaštita od grešaka. Šifra projekta distribuira pod BSD licencom.

Go-ova sintaksa 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 samostalne binarne izvršne datoteke koje se pokreću nativno bez korištenja virtuelne mašine (profiliranje, otklanjanje grešaka i drugi podsistemi za otkrivanje problema tokom izvršavanja su integrisani kao runtime komponente), što vam omogućava da postignete performanse uporedive 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.

Glavni inovacijepredstavljeno u izdanju Go 1.14:

  • Novi sistem modula u komandi "go" je proglašen spremnim za opštu upotrebu, omogućen je podrazumevano i preporučuje se za upravljanje zavisnošću umesto GOPATH. Novi sistem modula ima integrisanu podršku za verzionisanje, mogućnosti isporuke paketa i poboljšano upravljanje zavisnošću. Sa modulima, programeri više nisu vezani za rad unutar GOPATH stabla, mogu eksplicitno definirati verzionisane ovisnosti i kreirati ponovljive gradnje.
  • Dodano podrška za ugrađivanje interfejsa sa skupom metoda koji se preklapaju. Metode iz ugrađenog interfejsa sada mogu imati ista imena i potpise kao metode u postojećim interfejsima. Eksplicitno deklarirane metode ostaju jedinstvene kao i prije.
  • Performanse "defer" izraza su poboljšane, čineći ga skoro jednako brzim kao i direktno pozivanje odgođene funkcije, omogućavajući odgođeno izvršavanje funkcije u kodu koji je osjetljiv na performanse.
  • Osigurana je asinhrona preempcija korutina (goroutine) - petlje koje ne sadrže pozive funkcija sada mogu potencijalno dovesti do zastoja planera ili odgoditi početak prikupljanja smeća.
  • Efikasnost sistema dodjele memorijskih stranica je poboljšana i sada ima znatno manje sukoba oko zaključavanja u konfiguracijama s velikim GOMAXPROCS vrijednostima. Rezultat je smanjena latencija i povećana propusnost uz istovremeno intenzivnu distribuciju velikih blokova memorije.
  • Zaključavanje je optimizirano i smanjen je broj prebacivanja konteksta pri pokretanju internih tajmera koji se koriste u funkcijama time.After, time.Tick, net.Conn.SetDeadline.
  • U komandi go, oznaka “-mod=vendor” je podrazumevano omogućena ako postoji direktorijum dobavljača u korenu, namenjen za isporuku eksternih zavisnosti vezanih za određenog dobavljača. Dodata je posebna "-mod=mod" zastavica za učitavanje modula iz keša modula, a ne iz "vendor" direktorija. Ako je go.mod datoteka samo za čitanje, “-mod=readonly” zastavica je postavljena po defaultu ako ne postoji gornji direktorij “vendor”. Dodata "-modfile=file" zastavica za navođenje alternativne go.mod datoteke umjesto one u korijenskom direktoriju modula.
  • Dodata varijabla okruženja GOINSECURE, kada je postavljena, naredba go ne zahtijeva korištenje HTTPS-a i preskače provjeru certifikata prilikom direktnog učitavanja modula.
  • Kompajler je dodao oznaku “-d=checkptr”, koja je podrazumevano omogućena, za proveru usklađenosti koda sa pravilima za bezbedno korišćenje unsafe.Pointer.
  • Novi paket je uključen u isporuku hash/maphash sa nekriptografskim hash funkcijama za kreiranje hash tablica za proizvoljne nizove bajtova ili nizove.
  • Dodata eksperimentalna podrška za 64-bitnu RISC-V platformu na Linuxu.
  • Dodata podrška za FreeBSD na 64-bitnim ARM sistemima.

izvor: opennet.ru

Dodajte komentar