Manaʻo no ke kūkākūkā ʻana i ka pilikia o ka hoʻohui ʻana i nā mea hoʻomohala Rust i ka kernel Linux

Nick Desagnier (Nick Desaulniers), nāna e hana ma Google e hoʻolako Kākoʻo ke kūkulu ʻana i ka kernel Linux me ka hoʻohana ʻana i ka Clang compiler a pū kekahi kokua ana hoʻoponopono i nā hewa i ka Rust compiler, manaoia paʻa i kahi hālāwai kūkā Linux Plumbers Conference 2020 hālāwai e kūkākūkā e hiki ai ke hoʻomohala i nā ʻāpana kernel i Rust. Ke hoʻonohonoho nei ʻo Nick i kahi micro-conference i hoʻolaʻa ʻia no LLVM, a manaʻoʻiʻo he mea maikaʻi ke kūkākūkā i nā ʻano ʻenehana o ka hiki ke hoʻohui ʻia o ke kākoʻo Rust i loko o ka kernel (ua hoʻomākaukau ʻo ia i kahi prototype hana no KBuild) a maopopo inā pono ia kākoʻo. e hoʻohui ʻia a he aha nā kapu i ka hoʻohana ʻana iā Rust e ʻae ʻia.

E hoʻomanaʻo kākou i loko o kahi kūkākūkā hou ma ka Open Source Summit a me Embedded Linux conference, Linus Torvalds ʻaʻole i hoʻoholo ʻia ka puka ʻana o nā paʻa no ka hoʻomohala ʻana i nā subsystems kernel non-core (no ka laʻana, nā mea hoʻokele) i nā ʻōlelo e like me Rust. ʻO ka hiki ke hoʻomohala i nā mea hoʻokele ma Rust e ʻae iā mākou e hana i nā mea hoʻokele palekana a ʻoi aku ka maikaʻi me ka liʻiliʻi o ka hoʻoikaika ʻana, ʻaʻohe 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 nā overruns. Aia kekahi mau papahana ʻaoʻao ʻekolu e hoʻokō i kēia hiʻohiʻona:

  • Nā mea hoʻomohala mai ka hui "Fish in a Barrel" hoomakaukauia he pahu hana no ke kākau ʻana i nā modula hiki ke hoʻouka ʻia no ka Linux kernel ma ka ʻōlelo Rust, me ka hoʻohana ʻana i kahi pūʻulu o nā papa abstract ma luna o nā interface a me nā hale kernel e hoʻonui ai i ka palekana. Hoʻokumu ʻia nā papa ma muli o nā faila poʻomanaʻo kernel e hoʻohana ana i ka pono bindgen. Hoʻohana ʻia ʻo Clang e kūkulu i nā papa. Ma kahi o nā interlayers, hoʻohana nā modules i hui ʻia i ka pūʻulu staticlib.
  • Nā mea noiʻi mai ke Kulanui Kina o Hong Kong hoʻomohala he papahana no ka hoʻomohala ʻana i nā mea hoʻokele no nā ʻōnaehana i hoʻopili ʻia a me nā polokalamu pūnaewele o nā mea ma Rust, e hoʻohana pū ana i ka bindgen e hana i nā papa e pili ana i nā faila poʻomanaʻo kernel. Hāʻawi ka framework iā ʻoe e hoʻomaikaʻi i ka palekana o ka mea hoʻokele me ka ʻole o ka hoʻololi ʻana i ka kernel - ma kahi o ka hana ʻana i nā pae kaʻawale hou no nā mea hoʻokele i ka kernel, ua manaʻo ʻia e ālai i nā pilikia ma ka pae hoʻohui, me ka hoʻohana ʻana i ka ʻōlelo Rust paʻa. Manaʻo ʻia ʻo ia ʻano ala e koi ʻia e nā mea hana hana e hoʻomohala ana i nā mea hoʻokele waiwai me ka wikiwiki ʻole me ka ʻole o ka loiloi kūpono.
  • Nā mea hoʻomohala framework C2Rust no ka hoʻolaha ʻana i ke code C iā Rust, e hāpai i waho nā hoʻokolohua ma ka hoʻololi ʻana i nā modula kernel me nā hoʻoponopono lima liʻiliʻi. ʻO kekahi o nā pilikia i ʻike ʻia ʻo ia ka hoʻohana ʻana i nā ʻāpana he nui o ka kernel of code e hoʻohana ana i nā hoʻonui GCC i kākoʻo ʻole ʻia ma C2Rust. No ka hoʻoponopono ʻana i kēia pilikia, hoʻolālā ʻo C2Rust e hoʻohui i ke kākoʻo no nā ʻano GCC inline, cold, alias, hoʻohana ʻia a me ka ʻāpana, a me ka hoʻonui ʻana i nā hiki o ka inline assembler a hoʻoponopono i nā pilikia me nā hale i hoʻopili ʻia a paʻa (e laʻa, xregs_state) . ʻO nā pilikia koʻikoʻi e koi ana i ka hana lima, ʻo ia ka hiki ʻole ke unuhi i nā macros C non-trivial i loko o Rust macros a me ka pono e wehewehe hou i nā ʻano, no ka mea, unuhi ʻo C2Rust i nā ʻano C i nā wehewehe i loko o ka puʻupuʻu libc, akā ʻaʻole hiki ke hoʻohana ʻia kēia pūʻolo i nā modula kernel.

Source: opennet.ru

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