ʻO ka ʻelima o nā patches 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 noi aku i ka lima 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 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, ka lua, ke kolu a me ka ʻehā o nā pā. Ma ka mana hou:

  • Ua hoʻohui ʻia ka hoʻāʻo ʻana o ka ʻāpana no ke kākoʻo Rust i ka ʻōnaehana hoʻohui mau e pili ana i ka bot 0DAY/LKP i kākoʻo ʻia e Intel a ua hoʻomaka ka paʻi ʻana i nā hōʻike hoʻāʻo. Ke hoʻomākaukau nei mākou e hoʻohui i ke kākoʻo Rust i ka ʻōnaehana hoʻāʻo automated KernelCI. Ua hoʻololi ʻia ka hoʻāʻo ʻana ma GitHub CI i ka hoʻohana ʻana i nā ipu.
  • Ua hoʻokuʻu ʻia nā modula kernel Rust mai ka pono e wehewehe i nā ʻano crate "#![no_std]" a me "#! [feature(...)]".
  • Kākoʻo hoʻohui ʻia no nā pahuhopu hui hoʻokahi (.o, .s, .ll a me .i).
  • Hōʻike nā alakaʻi code i nā lula no ka hoʻokaʻawale ʻana i nā manaʻo (“//”) a me ke code palapala (“//”).
  • Ua hana hou ʻia ka palapala is_rust_module.sh.
  • Kākoʻo i hoʻohui ʻia no ka hoʻonohonoho hoʻonohonoho ʻana o ka honua (global shared variable) ma muli o ka hoʻokō "CONFIG_CONSTRUCTORS".
  • Hoʻomaʻamaʻa ʻia ka hoʻokele laka: Hoʻohui ʻia ʻo Guard a me GuardMut a hoʻokahi ʻano parameterized.
  • Hiki ke wehewehe i nā ʻāpana ʻē aʻe i ke kau inoa ʻana i nā mea hana.
  • Hoʻohui i ka abstraction "RwSemaphore", e hana ana ma ke ʻano he wīwī ma luna o ka hale rw_semaphore C.
  • No ka hoʻohana ʻana i ka mmap, ua hoʻohui ʻia kahi modula mm hou a me kahi abstraction VMA (kahi ʻōwili ma luna o ka vm_area_struct structure).
  • Ua hoʻololi ʻia ka mea hoʻokele GPIO PL061 i ka hoʻohana ʻana i ka macro "dev_*!"
  • Ua hana ʻia kahi hoʻomaʻemaʻe maʻamau o ke code.

Source: opennet.ru

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