Go programazio lengoaia kaleratzea 1.18

Go 1.18 programazio-lengoaiaren bertsioa aurkezten da, Google-k komunitatearen parte-hartzearekin garatzen ari dena, konpilatutako lengoaien errendimendu altua konpilatutako lengoaien errendimendu altua eta erraztasuna bezalako scripting-lengoaiekin konbinatzen dituen soluzio hibrido gisa. kodea idaztea, garapen azkarra eta akatsen babesa. Proiektuaren kodea BSD lizentziapean banatzen da.

Go-ren sintaxia C hizkuntzaren elementu ezagunetan oinarritzen da, Python hizkuntzaren mailegu batzuekin. Hizkuntza nahiko zehatza da, baina kodea irakurtzeko eta ulertzeko erraza da. Go kodea makina birtual bat erabili gabe natiboki exekutatzen diren fitxategi exekutagarri bitar bereizietan biltzen da (profilak, arazketa eta beste exekuzio-arazoak hautemateko azpisistemak exekuzio-denborako osagai gisa integratuta daude), eta horrek C programen pareko errendimendua lortzeko aukera ematen du.

Proiektua hasiera batean hari anitzeko programazioan eta nukleo anitzeko sistemen funtzionamendu eraginkorrari begira garatu da, operadore mailan inplementatutako bitartekoak eskaintzea barne, konputazio paraleloa eta paraleloki exekutatutako metodoen arteko elkarrekintza antolatzeko. Lengoaiak esleitutako memoria blokeen gainditzeen aurkako babes integratua eskaintzen du eta zabor biltzailea erabiltzeko gaitasuna eskaintzen du.

Bertsio berriak funtzio eta mota generikoentzako (generikoak) euskarria gehitzen du, eta horren laguntzaz garatzaile batek hainbat motarekin aldi berean lan egiteko diseinatutako funtzioak definitu eta erabil ditzake. Interfazeak ere erabil daitezke datu-mota anitz biltzen dituzten mota konbinatuak sortzeko. Generikoen laguntza inplementatzen da lehendik dagoen kodearekin atzerako bateragarritasuna hautsi gabe. // Batera multzoko balioak, int64 eta float64 motetarako funtzionatzen du func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // Mota generikoaren definizio duen beste aukera bat: type Number interface { int64 | float64 } func SumNumbers[K konparagarria, V Zenbakia](m mapa[K]V) V { var s V _, v := tartea m { s += v } itzuli s }

Beste hobekuntza batzuk:

  • Kode nahasiaren probak egiteko utilitateak tresna-kit estandarrean integratuta daude. Fuzzing probetan, sarrerako datuen ausazko konbinazio posible guztien korrontea sortzen da eta haien prozesatzean izan daitezkeen hutsegiteak erregistratzen dira. Sekuentzia bat huts egiten bada edo esperotako erantzunarekin bat ez badator, litekeena da portaera honek errore edo ahultasun bat adieraztea.
  • Modulu anitzeko lan-eremuetarako euskarria gehitu da, aldi berean hainbat modulutan komandoak exekutatzeko aukera emanez, aldi berean kodea eraiki eta exekutatzeko hainbat modulutan.
  • Apple M1, ARM64 eta PowerPC64 prozesadoreetan oinarritutako sistemetarako errendimendu-optimizazio garrantzitsuak egin dira. Funtzioei argumentuak pasatzeko eta emaitza itzultzeko erregistroak erabiltzeko gaitasuna gaitu du pilaren ordez. Konpiladoreak begiztak linean zabaltzea hobetu du. Konpilagailuan mota egiaztatzea guztiz birmoldatu da. Zenbait probak aurreko bertsioarekin alderatuta, kodearen errendimenduaren %20ko igoera erakusten dute, baina konpilazioak berak %15 inguru gehiago behar du.
  • Exekuzioan, askatutako memoria sistema eragilera itzultzearen eraginkortasuna areagotu da eta zabor-biltzailearen funtzionamendua hobetu da, zeinaren portaera aurreikusgarriagoa bihurtu da.
  • Net/netip eta debug/buildinfo pakete berriak gehitu dira liburutegi estandarrera. TLS 1.0 eta 1.1 laguntza desgaituta dago lehenespenez bezeroaren kodean. Crypto/x509 moduluak SHA-1 hash-a erabiliz sinatutako ziurtagiriak prozesatzeari utzi dio.
  • Linux-en ingurunerako eskakizunak igo dira; funtzionatzeko, orain gutxienez 2.6.32 bertsioko Linux nukleoa izan behar duzu. Hurrengo bertsioan, FreeBSDrentzat antzeko aldaketak espero dira (FreeBSD 11.x adarraren euskarria eten egingo da) eta gutxienez FreeBSD 12.2 beharrezkoa izango da funtzionatzeko.

Iturria: opennet.ru

Gehitu iruzkin berria