ʻO ka lua o nā patches no ka Linux kernel me ke kākoʻo no ka ʻōlelo Rust

Ua noi ʻo Miguel Ojeda, ka mea kākau o ka papahana Rust-for-Linux, i kahi mana hou o nā ʻāpana 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. Manaʻo ʻia ke kākoʻo Rust he hoʻokolohua, akā ua ʻae ʻia no ka hoʻokomo ʻana i ka lālā linux-next. Hoʻopau ka mana hou i nā manaʻo i hana ʻia i ka wā kūkākūkā o ka mana mua o nā pā. Ua komo mua ʻo Linus Torvalds i ke kūkākūkā a manaʻo e hoʻololi i ka loiloi no ka hoʻoponopono ʻana i kekahi mau hana liʻiliʻi.

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.

ʻO nā loli i ʻike ʻia i ka mana hou o nā patch:

  • Hoʻokuʻu ʻia ka code hoʻomanaʻo hoʻomanaʻo mai ka hoʻokumu ʻana i kahi kūlana "panic" ke hiki mai nā hewa e like me waho o ka hoʻomanaʻo. Hoʻokomo ʻia kahi ʻano like ʻole o ka hale waihona Rust alloc, kahi e hana hou ai i ke code no ka hoʻoponopono ʻana i nā hemahema, akā ʻo ka pahuhopu nui ka hoʻololi ʻana i nā hiʻohiʻona āpau e pono ai no ka kernel i ka paʻi nui o alloc (ua hoʻomākaukau ʻia nā hoʻololi a hoʻololi ʻia i ka maʻamau. hale waihona puke Rust).
  • Ma kahi o ke kūkulu ʻana i ka pō, hiki iā ʻoe ke hoʻohana i nā hoʻokuʻu beta a me nā hoʻokuʻu paʻa o ka compiler rustc e hōʻuluʻulu i kahi kernel me ke kākoʻo Rust. I kēia manawa, hoʻohana ʻia ʻo rustc 1.54-beta1 e like me ka mea hōʻuluʻulu kuhikuhi, akā ma hope o ka hoʻokuʻu ʻia ʻana o ka 1.54 i ka hopena o ka mahina, e kākoʻo ʻia ʻo ia e like me ka mea hōʻuluʻulu kuhikuhi.
  • Hoʻohui ʻia ke kākoʻo no ke kākau ʻana i nā hoʻokolohua me ka hoʻohana ʻana i ke ʻano maʻamau "#[test]" no Rust a me ka hiki ke hoʻohana i nā doctests e palapala i nā hoʻokolohua.
  • Hoʻohui ʻia ke kākoʻo no ARM32 a me RISCV mau hale kiʻi hoʻohui i kākoʻo mua ʻia x86_64 a me ARM64.
  • Hoʻomaikaʻi ʻia ka hoʻokō ʻana o GCC Rust (GCC frontend no Rust) a me rustc_codegen_gcc (rustc backend no GCC), i kēia manawa i hala i nā hoʻokolohua kumu āpau.
  • Manaʻo ʻia kahi pae hou o ka abstraction no ka hoʻohana ʻana i nā polokalamu Rust o nā mīkini kernel i kākau ʻia ma C, e like me nā lāʻau ʻulaʻula-ʻeleʻele, nā mea i helu ʻia, ka hoʻokumu ʻana i nā faila wehewehe, nā hana, nā faila, a me nā vectors I/O.
  • Ua hoʻomaikaʻi ʻia nā mea hoʻomohala hoʻokele i ke kākoʻo no ka module file_operations, ka module! macro, ka hoʻopaʻa inoa macro, a me nā mea hoʻokele kumu mua (ʻimi a wehe).
  • Kākoʻo ʻo Binder i nā mea wehewehe faila a me nā makau LSM.
  • ʻO kahi hiʻohiʻona ʻoi aku ka hana o kahi mea hoʻokele Rust i manaʻo ʻia - bcm2835-rng no ka mīkini hana helu helu maʻamau o nā papa Raspberry Pi.

Hoʻohui ʻia, ua ʻōlelo ʻia kekahi mau papahana ʻoihana e pili ana i ka hoʻohana ʻana iā Rust i ka kernel:

  • Ua hōʻike ʻo Microsoft i ka hoihoi i ke komo ʻana i ka hana e hoʻohui i ke kākoʻo Rust i ka kernel Linux a ua mākaukau e hoʻolako i nā hoʻokō hoʻokele no Hyper-V ma Rust i nā mahina e hiki mai ana.
  • Ke hana nei ʻo ARM e hoʻomaikaʻi i ke kākoʻo Rust no nā ʻōnaehana kumu ARM. Ua manaʻo mua ka papahana Rust i nā hoʻololi e hoʻolilo i nā ʻōnaehana 64-bit ARM i kahi pae Tier 1.
  • Hāʻawi pololei ʻo Google i ke kākoʻo no ka papahana Rust no Linux, ke hoʻomohala nei i kahi hoʻokō hou o ka mīkini kamaʻilio Binder interprocess ma Rust, a ke noʻonoʻo nei i ka hiki ke hana hou i nā mea hoʻokele like ʻole ma Rust. Ma o ISRG (Internet Security Research Group), hāʻawi ʻo Google i ke kālā no ka hana e hoʻohui i ke kākoʻo Rust i ka kernel Linux.
  • Ua hoʻokō ʻo IBM i ke kākoʻo kernel no Rust no nā ʻōnaehana PowerPC.
  • Ua kūkulu ka LSE (Systems Research Laboratory) i kahi mea hoʻokele SPI ma Rust.

Source: opennet.ru

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