ProgrammēŔanas valodas Go izlaiÅ”ana 1.14

Iesniedzis programmēŔanas valodas izlaidums Iet 1.14, 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 izplata 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ā izpildlaika komponenti), 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 jauninājumiemieviests 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.
  • Pievienots 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 hash/maphash 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