Programmeerimiskeele Go 1.24 väljalaskmine

Pärast kuue kuu arendust on ilmunud programmeerimiskeele Go 1.24 versioon, mida arendab Google koos kogukonnaga. Keel ühendab kompileeritavatele keeltele iseloomuliku kõrge jõudluse ja skriptikeelte nagu koodi kirjutamise lihtsuse, kiire arenduse ja veaprobleemide kaitse eelised. Projekti kood on jagatud BSD litsentsi alusel.

Go süntaks põhineb tavalistel C keele elementidel, kus on eraldi laenud Oberoni keelest. Keel on piisavalt lühike, kuid samas on kood kergesti loetav ja arusaadav. Go keeles kirjutatud kood kompileeritakse eraldi binaarfailideks, mis töötavad kohaliku taseme teenustes, ilma virtuaalmasina kasutamiseta (profiliseerimis- ja tõrkeotsingu moodulid ning muud probleemide tuvastamise alamsüsteemid integreeritakse runtime-komponentidena), mis võimaldab saavutada tootlikkuse, mis on sarnane C keeles kirjutatud programmidega.

Projekt on algselt välja töötatud silmas pidades mitme südamiku süsteemide tõhusat töötlust ja mitme lõime programmeerimist. Näiteks on operaatorite tasemel välja töötatud vahendid paralleelsete arvutuste ja paralleelselt töötavate meetodite vaheliseks suhtlemiseks. Keel pakub ka sisseehitatud kaitsevahendeid mälu piire ületamise eest ning võimaldab prügikoguja kasutamist.

Uue väljaande muudatused:

  • Täielik tugi geneeriliste tüübialiaste (generic type alias) kasutamiseks - tüübialias võib olla parameetriseeritud nagu algselt defineeritud tüüp (tüübi aliasi määramisel on nüüd võimalik määrata tüübiparametreid). type set[P comparable] = map[P]bool
  • Runtime'ile on tehtud optimeerimisi, mis vähendasid protsessori koormust 2-3% võrreldes tavapäraste jõudlustestide käigus. Tehtud optimeerimiste seas on: uus sisseehitatud 'map' operatsiooni rakendus, mis põhineb Šveitsi tabelitel; väikeste objektide mälu kasutamise efektiivsuse parandamine; uus mutex rakendus, mis on sisse ehitatud runtime'i.
  • Go-moodulite 'go' käsule on lisatud teostuste sõltuvuste jälgimise mehhanism (abivahendite, mis on kirjutatud Go keeles ja mida kasutatakse mooduli arendamisel, nagu linter'id või koodi vormindamise utiliidid). Utiliitide määramine go.mod failis toimub 'tool' direktiivi kaudu, mille lisamiseks praegusele modulile on ettepanek 'go get -tool' käsk (näiteks 'go get -tool golang.org/x/tools/cmd/stringer'). Direktiivis 'tool' määratud utiliidi käivitamiseks on lisatud käsk 'go tool utiliidi_nimi'.
  • Käskude 'go build' ja 'go install' puhul on lisatud valik '-json' väljundi saamiseks JSON formaadis.
  • Keskkonnamuutuja GOAUTH on lisatud autentimistavate parameetrite määramiseks, mis on vajalikud moodulite saamiseks, millele on piiratud juurdepääs.
  • Käsus 'go vet' on rakendatud uus testide analüsaator (test analyzer), mis tuvastab tavapäraseid vigu testide, fuzzing-tööriistade, jõudluse kontrollimise utiliitide ja rakenduse näidete kaasamisel.
  • Standardteeki on lisatud krüptoalgoritmide rakendusi, mis on heaks kiidetud FIPS 140-3 turvastandardis.
  • Testing paketti on lisatud meetod B.Loop jõudlustestide läbiviimiseks. 'for b.Loop() { … }' kasutamine tavapäraste tsüklite asemel välistab tsükli kehas täieliku optimeerimise tegemise kompilaatori poolt ning võimaldab viia tsükli seadistamise ja puhastamise etapid tsüklist välja.
  • Lisa tüüp os.Root, mis võimaldab isoleerida failisüsteemi toimingud määratud kaustast.
  • Runtime'i on lisatud uus finaliseerimise mehhanism runtime.AddCleanup, mis on paindlikum ja efektiivsem kui runtime.SetFinalizer.
  • On lisatud weak pakett, mis rakendab nõrku näidikuid, mis ei oma objekti, ei suurenda viidete arvu ega takista objekti vabastamist.
  • On lisatud paketid: crypto/mlkem krüptoalgoritmide ML-KEM-768 ja ML-KEM-1024 (Kyber) rakendusega, mis on kvantarvutite jaoks vastupidavad; crypto/hkdf HMAC-põhise võtme genereerimise funktsiooni (RFC 5869) rakendusega; crypto/pbkdf2 paroolipõhise võtme genereerimise funktsiooni (PBKDF2, RFC 8018) rakendusega; crypto/sha3 SHA-3 räsimärkide rakendusega.
  • On lisatud eksperimentaalne paket testing/synctest funktsioonidega mitme lõime testimiseks.
  • WebAssembly toetust on parandatud. On lisatud võimalus Go rakenduste koostamiseks raamatukoguna või WASI (WebAssembly System Interface) käitlejana. On rakendatud direktiiv go:wasmexport funktsioonide eksportimiseks WebAssembly kasutamiseks.
  • Utiliit objdump on saanud toetuse LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) ja S390X (GOARCH=s390x) arhitektuuride disassembling'ult.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster