programmÄÅ”anas valodas izlaidums , ko izstrÄdÄ Google ar kopienas lÄ«dzdalÄ«bu kÄ hibrÄ«du risinÄjumu, kas apvieno kompilÄto valodu augsto veiktspÄju ar skriptu valodu priekÅ”rocÄ«bÄm, piemÄram, koda rakstīŔanas vieglumu, izstrÄdes Ätrumu un kļūdu aizsardzÄ«bu. Projekta kods saskaÅÄ ar BSD licenci.
Go sintakse ir balstÄ«ta uz pazÄ«stamiem C valodas elementiem ar dažiem aizguvumiem no Python valodas. Valoda ir diezgan kodolÄ«ga, bet kods ir viegli lasÄms un saprotams. Go kods tiek apkopots atseviŔķos binÄros izpildÄmos failos, kas darbojas sÄkotnÄji, neizmantojot virtuÄlo maŔīnu (profilÄÅ”anas, atkļūdoÅ”anas un citas izpildlaika problÄmu noteikÅ”anas apakÅ”sistÄmas ir integrÄtas kÄ ), kas ļauj sasniegt veiktspÄju, kas salÄ«dzinÄma ar C programmÄm.
Projekts sÄkotnÄji tika izstrÄdÄts, Åemot vÄrÄ daudzpavedienu programmÄÅ”anu un efektÄ«vu darbÄ«bu daudzkodolu sistÄmÄs, tostarp nodroÅ”inot operatora lÄ«meÅa lÄ«dzekļus paralÄlÄs skaitļoÅ”anas organizÄÅ”anai un paralÄli izpildÄ«tu metožu mijiedarbÄ«bai. Valoda nodroÅ”ina arÄ« iebÅ«vÄtu aizsardzÄ«bu pret pÄrmÄrÄ«gi pieŔķirtiem atmiÅas blokiem un nodroÅ”ina iespÄju izmantot atkritumu savÄcÄju.
Galvenais ieviests Go 1.14 laidienÄ:
- JaunÄ moduļu sistÄma komandÄ "go" tagad ir gatava vispÄrÄjai lietoÅ”anai, iespÄjota pÄc noklusÄjuma un ieteicama atkarÄ«bu pÄrvaldÄ«bai, aizstÄjot GOPATH. Jaunajai moduļu sistÄmai ir integrÄts versiju atbalsts, pakotÅu piegÄdes rÄ«ki un uzlabota atkarÄ«bu pÄrvaldÄ«bas sistÄma. Ar moduļiem izstrÄdÄtÄji vairs nav piesaistÄ«ti darbam GOPATH kokÄ, var skaidri definÄt atkarÄ«bas attiecÄ«bÄ uz versijÄm un izveidot atkÄrtojamus veidojumus.
- Atbalsts iegulto saskarÅu ar pÄrklÄjoÅ”Äm metožu kopÄm iegulÅ”anai. MetodÄm no iegultÄs saskarnes tagad var bÅ«t tÄdi paÅ”i nosaukumi un paraksti kÄ metodÄm esoÅ”ajÄs saskarnÄs. Skaidri deklarÄtÄs metodes joprojÄm ir unikÄlas, tÄpat kÄ iepriekÅ”.
- Izteiksmes "defer" veiktspÄja ir uzlabota, padarot to gandrÄ«z tikpat Ätru kÄ atliktÄs funkcijas tieÅ”a izsaukÅ”ana, ļaujot izmantot atliktÄs funkcijas izpildi veiktspÄjas ziÅÄ jutÄ«gÄ kodÄ.
- Tagad ir atbalstÄ«ta asinhronÄ gorutÄ«nas priekÅ”laicÄ«ga izmantoÅ”ana ā cikli, kas nesatur funkciju izsaukumus, vairs nevar potenciÄli izraisÄ«t plÄnotÄja strupceļus vai aizkavÄt atkritumu savÄkÅ”anas sÄkumu.
- Ir uzlabota atmiÅas lapu pieŔķirÅ”anas sistÄmas efektivitÄte, ievÄrojami samazinot bloÄ·ÄÅ”anas konfliktus konfigurÄcijÄs ar lielÄm GOMAXPROCS vÄrtÄ«bÄm. Tas samazina latentumu un palielina caurlaidspÄju paralÄlas, intensÄ«vas lielu atmiÅas bloku pieŔķirÅ”anas laikÄ.
- OptimizÄtas slÄdzenes un samazinÄts konteksta pÄrslÄgÅ”anas skaits, palaižot iekÅ”Äjos taimerus, kas tiek izmantoti funkcijÄs time.After, time.Tick un net.Conn.SetDeadline.
- KarodziÅÅ” "-mod=vendor" komandÄ go pÄc noklusÄjuma ir iespÄjots, ja saknes direktorijÄ ir piegÄdÄtÄja direktorijs ÄrÄjÄm atkarÄ«bÄm, kas raksturÄ«gas konkrÄtam piegÄdÄtÄjam. Moduļu ielÄdei no moduļu keÅ”atmiÅas ir pievienots atseviŔķs karodziÅÅ” "-mod=mod", nevis direktorijs "vendor". Ja fails go.mod ir tikai lasÄms, karodziÅÅ” "-mod=readonly" tagad tiek iestatÄ«ts pÄc noklusÄjuma, ja trÅ«kst augstÄkÄ lÄ«meÅa direktorijas "vendor". Ir pievienots karodziÅÅ” "-modfile=file", lai norÄdÄ«tu alternatÄ«vu failu go.mod faila vietÄ, kas atrodas moduļa saknes direktorijÄ.
- Pievienots vides mainÄ«gais GOINSECURE, kas, iestatot to, liek komandai go nepieprasÄ«t HTTPS un izlaist sertifikÄtu pÄrbaudi, tieÅ”i ielÄdÄjot moduļus.
- Kompilatoram tagad ir noklusÄjuma karodziÅÅ” "-d=checkptr", lai pÄrbaudÄ«tu koda atbilstÄ«bu droÅ”as lietoÅ”anas noteikumiem attiecÄ«bÄ uz unsafe.Pointer.
- PiegÄdes komplektÄ ir iekļauts jauns iepakojums ar nekriptogrÄfiskÄm jaucÄjfunkcijÄm jaucÄjtabulu izveidei patvaļīgÄm baitu secÄ«bÄm vai virknÄm.
- Pievienots eksperimentÄls atbalsts 64 bitu RISC-V platformai operÄtÄjsistÄmÄ Linux.
- Pievienots FreeBSD atbalsts 64 bitu ARM sistÄmÄs.
Avots: opennet.ru
