Shawarwari don tattauna batun ƙara kayan aikin haɓaka Rust zuwa kernel na Linux

Nick Desagnier (Nick Desaulniers), wanda ke aiki a Google don samarwa tallafi gina Linux kernel ta amfani da Clang compiler da ma taimako gyara kwari a cikin Rust compiler, shawara gudanar a wani taro Taron Linux Plummbers 2020 zama don tattaunawa don ba da damar haɓaka abubuwan kernel a cikin Tsatsa. Nick yana shirya wani ƙaramin taro da aka keɓe ga LLVM, kuma ya yi imanin cewa zai yi kyau a tattauna abubuwan fasaha na yuwuwar haɗin gwiwar tallafin Rust a cikin kwaya (ya riga ya shirya samfurin aiki don KBuild) kuma ya fahimci ko yakamata irin wannan tallafin ya kamata. a kara gaba ɗaya kuma menene hane-hane akan amfani da Tsatsa ya kamata a karɓa.

Bari mu tuna cewa a cikin tattaunawa na baya-bayan nan a Babban Taron Buɗewa da taron Linux, Linus Torvalds bai yanke hukunci ba Bayyanar abubuwan ɗaure don haɓaka tsarin tsarin kernel marasa tushe (misali, direbobi) a cikin harsuna kamar Rust. Ikon haɓaka direbobi a cikin Rust zai ba mu damar ƙirƙirar mafi aminci kuma mafi kyawun direbobi tare da ƙaramin ƙoƙari, ba tare da matsaloli kamar samun damar ƙwaƙwalwar ajiya bayan yantar da su ba, ɓangarorin maƙasudin null, da buffer overruns. Tuni akwai ayyuka na ɓangare na uku da yawa don aiwatar da wannan fasalin:

  • Masu haɓakawa daga kamfanin "Kifi a cikin ganga" shirya kayan aiki don rubuta kayan aiki masu ɗaukar nauyi don Linux kernel a cikin Yaren Rust, ta amfani da saitin yadudduka masu ƙyalli akan musaya da tsarin kwaya don ƙara tsaro. Ana samar da yadudduka ta atomatik bisa fayilolin jigon kernel da ke akwai ta amfani da kayan aiki ɗaure. Ana amfani da Clang don gina yadudduka. Baya ga masu shiga tsakani, samfuran da aka haɗa suna amfani da fakitin staticlib.
  • Masu bincike daga Jami'ar China ta Hong Kong bunkasa wani aiki don haɓaka direbobi don tsarin da aka haɗa da Intanet na na'urori a cikin Rust, wanda kuma ke amfani da bindgen don samar da yadudduka dangane da fayilolin taken kernel. Tsarin yana ba ku damar inganta tsaro na direba ba tare da yin canje-canje ga kernel ba - maimakon ƙirƙirar ƙarin matakan keɓewa ga direbobi a cikin kwaya, an ba da shawarar toshe matsaloli a matakin tattarawa, ta amfani da yaren Rust mafi aminci. Ana tsammanin cewa irin wannan hanyar na iya kasancewa cikin buƙata ta hanyar masana'antun kayan aiki masu haɓaka direbobi masu zaman kansu cikin gaggawa ba tare da gudanar da binciken da ya dace ba.
  • Masu haɓaka tsarin C2 Tsatsa don watsa lambar C zuwa Rust, ciyarwa gwaje-gwajen akan jujjuya tsarin kwaya tare da ƙaramin gyare-gyare na hannu. Ɗaya daga cikin matsalolin da aka lura shine amfani a yawancin sassan kernel na lambar da ke amfani da kari na GCC waɗanda har yanzu ba a sami tallafi ba a cikin C2Rust. Don magance wannan matsalar, C2Rust yana shirin ƙara tallafi don halayen GCC akan layi, sanyi, laƙabi, amfani da sashe, gami da faɗaɗa ƙarfin mai haɗa layin layi da warware matsaloli tare da tsarin da aka haɗa duka biyun da cushe (misali, xregs_state) . Matsaloli masu mahimmanci waɗanda ke buƙatar aikin hannu sun haɗa da rashin iya fassara macro maras muhimmanci C zuwa Rust macros da buƙatar sake fasalin nau'ikan, tunda C2Rust yana fassara nau'ikan C zuwa ma'anoni a cikin fakitin libc, amma ba za a iya amfani da wannan kunshin a cikin kernel modules.

source: budenet.ru

Add a comment