Amụma maka ikwurita okwu gbasara ịgbakwunye akụrụngwa mmepe Rust na kernel Linux

Nick Desagnier (Nick Desaulniers), onye na-arụ ọrụ na Google inye nkwado wulite kernel Linux site na iji Clang compiler yana kwa na-enyere aka dozie ahụhụ na nchịkọta Rust, tụrụ aro jide na ogbako Ọgbakọ Linux Plumbers 2020 nnọkọ iji kparịta ime ka o kwe omume ịmepụta akụkụ kernel na nchara. Nick na-ahazi obere ogbako raara nye LLVM, ma kwenye na ọ ga-adị mma ikwurịta akụkụ teknụzụ nke ntinye aka nke rust n'ime kernel (ọ akwadolarị ụdị ọrụ maka KBuild) wee ghọta ma nkwado dị otú ahụ kwesịrị ekwesị. a ga-agbakwunyere na ihe mgbochi na ojiji nke ajari kwesịrị ịnakwere.

Ka anyị cheta na na mkparịta ụka na nso nso a na Open Source Summit na Embedded Linux ogbako, Linus Torvalds. ewepụghị ya mpụta nke njide maka mmepe nke sistemụ kernel na-abụghị isi (dịka ọmụmaatụ, ndị ọkwọ ụgbọ ala) n'asụsụ dị ka nchara. Ikike ịzụlite ndị ọkwọ ụgbọ ala na Rust ga-enye anyị ohere ịmepụta ndị ọkwọ ụgbọ ala dị nchebe ma dị mma na obere mbọ, na-enweghị nsogbu dị ka ịnweta ebe nchekwa mgbe a tọhapụrụ ya, nkwụsị pointer null, na buffer overruns. Enweelarị ọtụtụ ọrụ ndị ọzọ iji mejuputa njirimara a:

  • Ndị mmepe sitere na ụlọ ọrụ "Fish in a Barrel" kwadebere Toolkit maka ide modul a na-ebu ibu maka Linux kernel n'asụsụ Rust, na-eji usoro ihe nlegharị anya n'elu oghere na kernel iji kwalite nchekwa. A na-emepụta akwa akwa na-akpaghị aka dabere na faịlụ nkụnye kernel dị ugbu a site na iji akụrụngwa kechie. A na-eji Clang eme akwa akwa. Na mgbakwunye na interlayers, modul gbakọtara na-eji ngwugwu staticlib.
  • Ndị nyocha sitere na Mahadum China nke Hong Kong ịzụlite oru ngo maka ndị na-emepe emepe ndị ọkwọ ụgbọ ala maka sistemu agbakwunyere na ịntanetị nke ihe dị na Rust, nke na-ejikwa bindgen mepụta ọkwa dabere na faịlụ nkụnye kernel. Usoro ahụ na-enye gị ohere imeziwanye nchekwa onye ọkwọ ụgbọ ala n'emeghị mgbanwe na kernel - kama ịmepụta ọkwa ndị ọzọ maka ndị ọkwọ ụgbọ ala na kernel, a na-atụ aro igbochi nsogbu na nhazi nchịkọta, na-eji asụsụ nchara dị nchebe karị. A na-eche na usoro dị otú ahụ nwere ike ịchọ ndị na-emepụta akụrụngwa na-emepụta ndị ọkwọ ụgbọ ala ngwa ngwa n'emeghị nyocha nke ọma.
  • Ndị mmepe Framework C2 ajari maka ịgbasa koodu C na Rust, emefu nnwale na ngbanwe modul kernel nwere obere ndezi akwụkwọ ntuziaka. Otu n'ime nsogbu ndị ekwuru bụ iji n'ọtụtụ akụkụ nke koodu kernel nke na-eji ndọtị GCC na-akwadobeghị na C2Rust. Iji dozie nsogbu a, C2Rust na-ezube ịgbakwunye nkwado maka njirimara GCC inline, oyi, utu aha, ejiri na ngalaba, yana gbasaa ike nke onye na-agbakọta inline ma dozie nsogbu na nhazi nke jikọtara na ngwugwu (dịka ọmụmaatụ, xregs_state) . Nsogbu ndị dị mkpa na-achọ ọrụ aka na-agụnye enweghị ike ịsụgharị macros C na-abụghị ihe dị mkpa na Rust macros na mkpa iji gbanwee ụdị, ebe C2Rust sụgharịrị ụdị C na nkọwa na ngwugwu libc, mana enweghị ike iji ngwugwu a na modul kernel.

isi: opennet.ru

Tinye a comment