Rilaxx tal-lingwa ta' programmar Go 1.18

Huwa ppreżentat ir-rilaxx tal-lingwa ta 'programmar Go 1.18, li qed tiġi żviluppata minn Google bil-parteċipazzjoni tal-komunità bħala soluzzjoni ibrida li tgħaqqad il-prestazzjoni għolja ta' lingwi kkumpilati ma 'vantaġġi bħal lingwi ta' scripting bħall-faċilità tal-kitba tal-kodiċi , veloċità ta 'żvilupp u protezzjoni ta' żball. Il-kodiċi tal-proġett huwa mqassam taħt il-liċenzja BSD.

Is-sintassi ta' Go hija bbażata fuq elementi familjari tal-lingwa C b'xi self mil-lingwa Python. Il-lingwa hija pjuttost konċiża, iżda l-kodiċi huwa faċli biex jinqara u jinftiehem. Il-kodiċi Go huwa miġbur f'fajls eżekutibbli binarji waħedhom li jaħdmu b'mod nattiv mingħajr ma tuża magna virtwali (profili, moduli ta 'debugging, u sottosistemi oħra ta' skoperta ta 'problemi ta' runtime huma integrati bħala komponenti ta 'runtime), li jippermetti prestazzjoni komparabbli ma' programmi C.

Il-proġett huwa inizjalment żviluppat b'attenzjoni għall-ipprogrammar multi-thread u tħaddim effiċjenti fuq sistemi multi-core, inkluż il-provvista ta 'mezzi fil-livell tal-operatur għall-organizzazzjoni tal-kompjuters paralleli u l-interazzjoni bejn metodi eżegwiti b'mod parallel. Il-lingwa tipprovdi wkoll protezzjoni integrata kontra blokki tal-memorja allokati żżejjed u tipprovdi l-abbiltà li tuża garbage collector.

Il-verżjoni l-ġdida żżid appoġġ għal funzjonijiet u tipi ġeneriċi (ġeneriċi), li bl-għajnuna tagħhom żviluppatur jista 'jiddefinixxi u juża funzjonijiet iddisinjati biex jaħdmu ma' diversi tipi f'daqqa. Huwa wkoll possibbli li tuża interfaces biex toħloq tipi kkombinati li jkopru diversi tipi ta 'dejta. L-appoġġ għall-ġeneriċi huwa implimentat mingħajr ma tinkiser il-kompatibilità b'lura mal-kodiċi eżistenti. // Sum set values, works for int64 and float64 types function SumIntsOrFloats[K komparabbli, V int64 | float64](m mappa[K]V) V { var s V għal _, v := medda m { s += v } ritorn s } // Għażla oħra b'definizzjoni ta' tip ġeneriku: type Number interface { int64 | float64 } func SumNumbers[K komparabbli, V Numru](m mappa[K]V) V { var s V għal _, v := medda m { s += v } ritorn s }

Titjib ieħor:

  • L-utilitajiet għall-ittestjar tal-kodiċi fuzzing huma integrati fis-sett ta' għodod standard. Waqt l-ittestjar tal-fuzzing, jiġi ġġenerat fluss tal-kombinazzjonijiet każwali possibbli kollha tad-dejta tal-input u jiġu rreġistrati fallimenti possibbli matul l-ipproċessar tagħhom. Jekk sekwenza tiġġarraf jew ma taqbilx mar-rispons mistenni, allura din l-imġieba x'aktarx li tindika bug jew vulnerabbiltà.
  • Appoġġ miżjud għal spazji tax-xogħol multi-modulari, li jippermettilek tesegwixxi kmandi fuq moduli multipli f'daqqa, li jippermettilek tibni u tħaddem kodiċi simultanjament f'moduli multipli.
  • Saru ottimizzazzjonijiet sinifikanti tal-prestazzjoni għal sistemi bbażati fuq proċessuri Apple M1, ARM64 u PowerPC64. Ippermetta l-abbiltà li tuża reġistri minflok il-munzell biex tgħaddi argumenti lill-funzjonijiet u tirritorna r-riżultat. Inline unrolling mtejba ta 'loops mill-kompilatur. Il-verifika tat-tip fil-kompilatur ġiet imfassla kompletament mill-ġdid. Xi testijiet juru żieda ta '20% fil-prestazzjoni tal-kodiċi meta mqabbla mar-rilaxx preċedenti, iżda l-kumpilazzjoni nnifisha tieħu madwar 15% itwal.
  • Fil-runtime, l-effiċjenza tar-ritorn tal-memorja meħlusa lis-sistema operattiva żdiedet u t-tħaddim tal-kollettur taż-żibel tjieb, li l-imġieba tiegħu saret aktar prevedibbli.
  • Pakketti ġodda net/netip u debug/buildinfo ġew miżjuda mal-librerija standard. L-appoġġ għal TLS 1.0 u 1.1 huwa diżattivat awtomatikament fil-kodiċi tal-klijent. Il-modulu kripto/x509 waqaf jipproċessa ċertifikati ffirmati bl-użu tal-hash SHA-1.
  • Ir-rekwiżiti għall-ambjent fil-Linux tqajmu biex jaħdmu, issa jeħtieġ li jkollok kernel tal-Linux ta 'mill-inqas verżjoni 2.6.32. Fir-rilaxx li jmiss, bidliet simili huma mistennija għal FreeBSD (l-appoġġ għall-fergħa FreeBSD 11.x se jitwaqqaf) u mill-inqas FreeBSD 12.2 se jkun meħtieġ biex jaħdem.

Sors: opennet.ru

Żid kumment