ʻO ka mana hou o nā patch no ka Linux kernel me ke kākoʻo no ka ʻōlelo Rust

ʻO Miguel Ojeda, ka mea kākau o ka papahana Rust-for-Linux, ua manaʻo e hoʻokuʻu i nā mea v5 no ka hoʻomohala ʻana i nā mea hoʻokele ma ka ʻōlelo Rust no ka noʻonoʻo ʻana e nā mea hoʻomohala kernel Linux. ʻO kēia ka ʻeono o nā paʻi, e noʻonoʻo ana i ka mana mua, i paʻi ʻia me ka helu ʻole. Manaʻo ʻia ke kākoʻo Rust he hoʻokolohua, akā ua hoʻokomo ʻia i loko o ka lālā linux-next a ua lawa ka hoʻomohala ʻana e hoʻomaka i ka hana ma ka hana ʻana i nā papa abstraction ma luna o nā subsystem kernel, a me ke kākau ʻana i nā mea hoʻokele a me nā modula. Hoʻokumu kālā ʻia ka hoʻomohala ʻana e Google a me ka ISRG (Internet Security Research Group), ʻo ia ka mea nāna i hoʻokumu i ka papahana Let's Encrypt a hoʻolaha i ka HTTPS a me ka hoʻomohala ʻana i nā ʻenehana e hoʻomaikaʻi i ka palekana pūnaewele.

E hoʻomanaʻo i nā hoʻololi i manaʻo ʻia e hiki ai ke hoʻohana iā Rust ma ke ʻano he ʻōlelo lua no ka hoʻomohala ʻana i nā mea hoʻokele a me nā modula kernel. Hōʻike ʻia ke kākoʻo Rust ma ke ʻano he koho ʻaʻole hiki ke hoʻohana ʻia e ka paʻamau a ʻaʻole i hopena i ka hoʻokomo ʻia ʻana o Rust ma ke ʻano he hilinaʻi kūkulu pono no ka kernel. ʻO ka hoʻohana ʻana iā Rust no ka hoʻomohala ʻana i nā mea hoʻokele e ʻae iā ʻoe e hana i nā mea hoʻokele palekana a ʻoi aku ka maikaʻi me ka liʻiliʻi o ka hoʻoikaika ʻana, me ka ʻole o nā pilikia e like me ke komo ʻana i ka hoʻomanaʻo ma hope o ka hoʻokuʻu ʻana, nā kuhikuhi kuhikuhi null, a me ka hoʻonui ʻana.

Hāʻawi ʻia ka mālama mālama hoʻomanaʻo ma Rust i ka manawa hōʻuluʻulu ma o ka nānā ʻana i nā kuhikuhi, ka mālama ʻana i ka mea nona ka mea a me ke ola o ka mea (scope), a ma o ka loiloi ʻana i ka pololei o ke komo ʻana i ka hoʻomanaʻo i ka wā o ka hoʻokō code. Hāʻawi pū ʻo Rust i ka pale ʻana i ka integer overflows, koi pono i ka hoʻomaka mua ʻana o nā waiwai hoʻololi ma mua o ka hoʻohana ʻana, ʻoi aku ka maikaʻi o ka hoʻohana ʻana i nā hewa i loko o ka waihona maʻamau, pili i ka manaʻo o nā kuhikuhi immutable a me nā loli ma ke ʻano maʻamau, hāʻawi i ka paʻi static ikaika e hōʻemi i nā hewa loiloi.

Ke hoʻomau nei ka mana hou o nā patches i ka hoʻopau ʻana i nā manaʻo i hana ʻia i ka wā o ke kūkākūkā o ka paʻi mua, ʻelua, ʻekolu, ʻehā a me ka lima o nā pā. Ma ka mana hou:

  • Ua hōʻano hou ʻia ka pahu hana e hoʻokuʻu iā Rust 1.59.0. Hoʻopili pū ʻia kekahi ʻano o ka waihona alloc me ka mana hou o Rust, e hoʻopau ana i ka hiki ke hana ʻia o kahi kūlana "panic" ke loaʻa nā hewa, e like me ka hoʻomanaʻo ʻole. Ua hoʻopaʻa ʻia ka hiki ke hoʻohana i nā mea hoʻokomo assembler (“feature(global_asm)”).
  • Hoʻohui i kākoʻo no ka hoʻokumu ʻana i nā polokalamu hoʻokipa ma Rust i hoʻohana ʻia i ka wā o ka hōʻuluʻulu ʻana.
  • Ma kahi o ka hāʻawi ʻana i nā faila kikoʻī i hoʻokumu ʻia ma mua, ua hoʻokumu ʻia lākou ma muli o ka hoʻonohonoho kernel.
  • Hoʻohui ʻia ka ʻāpana kernel HAVE_RUST e hiki ai i nā hale kiʻi e kākoʻo iā Rust.
  • Manaʻo ʻia nā unuhi no ka hoʻohana ʻana i ka Rust code no kahi mīkini hana helu pseudo-random.
  • ʻAe ʻia ka hoʻohana ʻana i nā code hewa me ka ʻole o ka "Error::" prefix (no ka laʻana, "return Err(EINVAL)") e hoʻohālikelike i ka lawelawe ʻana i nā code hewa ma C.
  • Hoʻohui ʻia ke ʻano "CString" no nā kaula C maʻamau. Ua hui pū ʻia nā ʻano Formatter a me Buffer.
  • Hoʻohui ʻia nā ʻano Bool a me LockInfo.
  • Ua maʻalahi ka hoʻokō ʻana i nā laka wili.

Source: opennet.ru

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