Izdanje programskog jezika Go 1.14

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

Sintaksa Go-a temelji se na poznatim elementima jezika C uz neke posuđenice 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 (profiliranje, otklanjanje pogrešaka i drugi podsustavi za otkrivanje problema tijekom izvođenja integrirani su kao komponente vremena izvođenja), što vam omogućuje postizanje performansi usporedivih 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.

Glavni inovacijepredstavljeno u izdanju Go 1.14:

  • Novi sustav modula u naredbi "go" proglašen je spremnim za opću upotrebu, omogućen prema zadanim postavkama i preporučen za upravljanje ovisnostima umjesto GOPATH-a. Novi sustav modula ima integriranu podršku za upravljanje verzijama, mogućnosti isporuke paketa i poboljšano upravljanje ovisnostima. S modulima, programeri više nisu vezani za rad unutar GOPATH stabla, mogu eksplicitno definirati verzionirane ovisnosti i stvarati ponovljive verzije.
  • Dodano podrška za ugradnju sučelja s preklapajućim skupom metoda. Metode iz ugrađenog sučelja sada mogu imati ista imena i potpise kao metode u postojećim sučeljima. Eksplicitno deklarirane metode ostaju jedinstvene kao i prije.
  • Izvedba "defer" izraza je poboljšana, čineći ga gotovo jednako brzim kao izravno pozivanje odgođene funkcije, dopuštajući odgođeno izvršavanje funkcije u kodu koji je osjetljiv na izvedbu.
  • Omogućeno je asinkrono preuzimanje korutina (goroutine) - petlje koje ne sadrže pozive funkcija sada potencijalno mogu dovesti do zastoja planera ili odgoditi početak skupljanja smeća.
  • Učinkovitost sustava dodjele memorijskih stranica je poboljšana i sada postoji značajno manje sukoba oko zaključavanja u konfiguracijama s velikim GOMAXPROCS vrijednostima. Rezultat je smanjena latencija i povećana propusnost uz istovremenu intenzivnu distribuciju velikih blokova memorije.
  • Zaključavanje je optimizirano i broj kontekstnih prekidača je smanjen prilikom pokretanja internih mjerača vremena koji se koriste u funkcijama time.After, time.Tick, net.Conn.SetDeadline.
  • U naredbi go, zastavica “-mod=vendor” omogućena je prema zadanim postavkama ako postoji direktorij dobavljača u korijenu, namijenjen za isporuku vanjskih ovisnosti povezanih s određenim dobavljačem. Dodana je zasebna zastavica "-mod=mod" za učitavanje modula iz predmemorije modula umjesto iz direktorija "dobavljač". Ako je datoteka go.mod samo za čitanje, zastavica "-mod=readonly" postavljena je prema zadanim postavkama ako ne postoji glavni direktorij "dobavljač". Dodana je zastavica "-modfile=file" za određivanje alternativne go.mod datoteke umjesto one u korijenskom direktoriju modula.
  • Dodana je varijabla okruženja GOINSECURE, kada je postavljena, naredba go ne zahtijeva upotrebu HTTPS-a i preskače provjeru certifikata prilikom izravnog učitavanja modula.
  • Kompajler je dodao oznaku "-d=checkptr", omogućenu prema zadanim postavkama, za provjeru usklađenosti koda s pravilima za sigurnu upotrebu unsafe.Pointer.
  • Novi paket je uključen u isporuku hash/maphash s nekriptografskim hash funkcijama za izradu hash tablica za proizvoljne nizove bajtova ili nizove.
  • Dodana je eksperimentalna podrška za 64-bitnu RISC-V platformu na Linuxu.
  • Dodana podrška za FreeBSD na 64-bitnim ARM sustavima.

Izvor: opennet.ru

Dodajte komentar