Hoʻokuʻu ʻia o ka ʻōlelo papahana Go 1.18

Hōʻike ʻia ka hoʻokuʻu ʻana o ka ʻōlelo hoʻolālā Go 1.18, kahi i hoʻomohala ʻia e Google me ke komo ʻana o ke kaiāulu ma ke ʻano he hopena hybrid e hoʻohui i ka hana kiʻekiʻe o nā ʻōlelo i hōʻuluʻulu ʻia me nā pono o nā ʻōlelo kākau e like me ka maʻalahi o ke kākau ʻana i nā code. , ka wikiwiki o ka hoʻomohala ʻana a me ka pale hewa. Hāʻawi ʻia ke code papahana ma lalo o ka laikini BSD.

Hoʻokumu ʻia ka syntax o Go i nā mea maʻamau o ka ʻōlelo C me kekahi mau hōʻaiʻē mai ka ʻōlelo Python. He pōkole loa ka ʻōlelo, akā maʻalahi ke code e heluhelu a hoʻomaopopo. Hoʻopili ʻia ka code Go i loko o nā faila binary executable kū hoʻokahi e holo maoli me ka ʻole o ka hoʻohana ʻana i kahi mīkini virtual (profiling, debugging modules, a me nā subsystem ʻike pilikia runtime i hoʻohui ʻia e like me nā ʻāpana runtime), e hiki ai ke hana like me nā papahana C.

Hoʻokumu mua ʻia ka papahana me ka maka i ka papahana multi-threaded a me ka hana maikaʻi ma nā ʻōnaehana multi-core, me ka hāʻawi ʻana i nā ala o ka mea hoʻohana no ka hoʻonohonoho ʻana i ka helu like a me ka launa pū ʻana ma waena o nā ʻano hana like. Hāʻawi ka ʻōlelo i ka pale i kūkulu ʻia i nā poloka hoʻomanaʻo i hoʻokaʻawale ʻia a hāʻawi i ka hiki ke hoʻohana i ka ʻohi ʻōpala.

Hoʻohui ka mana hou i ke kākoʻo no nā hana maʻamau a me nā ʻano (generics), me ke kōkua o kahi mea hoʻomohala hiki ke wehewehe a hoʻohana i nā hana i hoʻolālā ʻia e hana me kekahi mau ʻano i ka manawa hoʻokahi. Hiki nō hoʻi ke hoʻohana i nā interface no ka hana ʻana i nā ʻano hui pū ʻia e hoʻonui i nā ʻano ʻikepili he nui. Hoʻokō ʻia ke kākoʻo no nā generics me ka ʻole o ka haki ʻana i ka hoʻohālikelike ʻana i hope me nā code i loaʻa. // Hui pū i nā waiwai, hana no nā ʻano int64 a me float64 func SumIntsOrFloats[K hoʻohālikelike, V int64 | float64](m palapala [K]V) V { var s V no _, v := laulā m { s += v } hoʻihoʻi s } // ʻO kahi koho ʻē aʻe me ka wehewehe ʻano generic: type Number interface { int64 | float64 } func SumNumbers[K like, V Number](m map[K]V) V { var s V no _, v := range m { s += v } return s }

Nā hoʻomaikaʻi ʻē aʻe:

  • Hoʻohui ʻia nā pono no ka hoʻāʻo ʻana i nā code fuzzing i loko o ka pahu hana maʻamau. I ka wā o ka hoʻāʻo ʻana, hana ʻia kahi kahawai o nā hui like ʻole o ka ʻikepili hoʻokomo a hoʻopaʻa ʻia nā hemahema i ka wā o kā lākou hana ʻana. Inā hāʻule ke kaʻina a ʻaʻole i kūlike me ka pane i manaʻo ʻia, a laila e hōʻike ana kēia ʻano i kahi bug a i ʻole nāwaliwali.
  • Hoʻohui i ke kākoʻo no nā papa hana multi-modular, e ʻae iā ʻoe e hoʻokō i nā kauoha ma nā modula he nui i ka manawa hoʻokahi, e ʻae iā ʻoe e kūkulu a holo i nā code i nā modula he nui.
  • Ua hana ʻia nā loiloi hana koʻikoʻi no nā ʻōnaehana e pili ana i nā kaʻina hana Apple M1, ARM64 a me PowerPC64. Hoʻohana i ka hiki ke hoʻohana i nā papa inoa ma mua o ka hoʻopaʻa ʻana e hāʻawi i nā hoʻopaʻapaʻa i nā hana a hoʻihoʻi i ka hopena. Hoʻomaikaʻi ʻia ka wehe ʻana i nā puka lou e ka mea hoʻopili. Ua hoʻolālā hou ʻia ka nānā ʻana i ke ʻano i ka compiler. Hōʻike kekahi mau ho'āʻo i ka piʻi ʻana o 20% o ka hana code i hoʻohālikelike ʻia i ka hoʻokuʻu mua ʻana, akā ʻo ka hoʻopili ʻana iā ia iho he 15% ka lōʻihi.
  • I ka wā holo, ua hoʻonui ʻia ka maikaʻi o ka hoʻihoʻi ʻana i ka hoʻomanaʻo manuahi i ka ʻōnaehana hana a ua hoʻomaikaʻi ʻia ka hana ʻana o ka ʻohi ʻōpala, a ua ʻike ʻia ke ʻano o ia mea.
  • Ua hoʻohui ʻia nā pūʻolo hou net/netip a me debug/buildinfo i ka waihona maʻamau. Hoʻopau ʻia ke kākoʻo no TLS 1.0 a me 1.1 ma ke ʻano paʻamau i ka code client. Ua ho'ōki ka module crypto/x509 i ka hana ʻana i nā palapala hōʻoia i kau inoa ʻia me ka hoʻohana ʻana i ka hash SHA-1.
  • Ua hoʻonui ʻia nā koi no ke kaiapuni ma Linux; no ka hana ʻana, pono ʻoe e loaʻa i kahi kernel Linux o ka liʻiliʻi loa 2.6.32. Ma ka hoʻokuʻu aʻe, manaʻo ʻia nā loli like no FreeBSD (e hoʻopau ʻia ke kākoʻo no ka lālā FreeBSD 11.x) a ma ka liʻiliʻi loa e koi ʻia ʻo FreeBSD 12.2 e hana.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka