Programmēšanas valodas Go izlaišana 1.18

Tiek prezentēts programmēšanas valodas Go 1.18 izlaidums, ko Google izstrādā ar kopienas līdzdalību kā hibrīdu risinājumu, kas apvieno kompilēto valodu augsto veiktspēju ar tādām skriptu valodu priekšrocībām kā koda rakstīšanas vienkāršība. , izstrādes ātrums un kļūdu aizsardzība. Projekta kods tiek izplatīts 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 moduļi un citas izpildlaika problēmu noteikšanas apakšsistēmas ir integrētas kā izpildlaika komponenti), kas nodrošina veiktspēju, kas ir 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.

Jaunajā versijā ir pievienots atbalsts vispārīgām funkcijām un tipiem (ģenēriķiem), ar kuru palīdzību izstrādātājs var definēt un izmantot funkcijas, kas paredzētas darbam ar vairākiem tipiem vienlaikus. Ir arī iespējams izmantot saskarnes, lai izveidotu kombinētus tipus, kas aptver vairākus datu tipus. Ģenērisko zāļu atbalsts tiek īstenots, nepārkāpjot atpakaļejošu saderību ar esošo kodu. // Sum kopas vērtības, darbojas int64 un float64 tipiem func SumIntsOrFloats[K salīdzināms, V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // Vēl viena opcija ar vispārīgu tipa definīciju: type Number interface { int64 | float64 } func SumNumbers[K salīdzināms, V Skaitlis](m karte[K]V) V { var s V for _, v := diapazons m { s += v } return s }

Citi uzlabojumi:

  • Utilītas izplūdušo kodu testēšanai ir integrētas standarta rīku komplektā. Izplūdes testēšanas laikā tiek ģenerēta visu iespējamo ieejas datu nejaušo kombināciju plūsma un tiek reģistrētas iespējamās kļūmes to apstrādes laikā. Ja secība avarē vai neatbilst sagaidāmajai reakcijai, šāda rīcība, visticamāk, norāda uz kļūdu vai ievainojamību.
  • Pievienots atbalsts vairāku moduļu darbvietām, kas ļauj izpildīt komandas vairākos moduļos vienlaikus, ļaujot vienlaikus veidot un palaist kodu vairākos moduļos.
  • Ir veiktas ievērojamas veiktspējas optimizācijas sistēmām, kuru pamatā ir Apple M1, ARM64 un PowerPC64 procesori. Iespējota iespēja izmantot reģistrus, nevis steku, lai nodotu argumentus funkcijām un atgrieztu rezultātu. Uzlabota cilpu atritināšana, ko veic kompilators. Tipa pārbaude kompilatorā ir pilnībā pārveidota. Daži testi uzrāda koda veiktspējas pieaugumu par 20%, salīdzinot ar iepriekšējo laidienu, taču pati kompilācija aizņem apmēram par 15% ilgāku laiku.
  • Izpildlaikā ir palielināta atbrīvotās atmiņas atgriešanas operētājsistēmai efektivitāte un uzlabota atkritumu savācēja darbība, kuras darbība ir kļuvusi prognozējamāka.
  • Standarta bibliotēkai ir pievienotas jaunas paketes net/netip un debug/buildinfo. TLS 1.0 un 1.1 atbalsts klienta kodā pēc noklusējuma ir atspējots. Kripto/x509 modulis ir pārtraucis apstrādi sertifikātiem, kas parakstīti, izmantojot SHA-1 jaucējkodu.
  • Linux vidē prasības ir paaugstinātas; lai strādātu, jums tagad ir jābūt Linux kodolam ar vismaz versiju 2.6.32. Nākamajā laidienā līdzīgas izmaiņas ir gaidāmas arī FreeBSD (FreeBSD 11.x atzara atbalsts tiks pārtraukts) un, lai strādātu, būs nepieciešams vismaz FreeBSD 12.2.

Avots: opennet.ru

Pievieno komentāru