Förslag om att diskutera frÄgan om att lÀgga till stöd för Rust-utveckling i Linux-kÀrnan

Nick Desaulniers (Nick Desaulniers), som arbetar pÄ Google med att sÀkerstÀlla stöd för kompileringen av Linux-kÀrnan med Clang-kompilatorn och Àven hjÀlper att fixa buggar i Rust-kompilatorn, föreslog hÄlla en session pÄ konferensen Linux Plumbers Conference 2020 för att diskutera möjligheten att utveckla kÀrnkomponenter pÄ Rust. Nick organiserar en mikro-konferens om LLVM och tycker att det skulle vara bra att diskutera tekniska aspekter av den potentiella integrationen av Rust-stöd i kÀrnan (de har redan ett arbetande prototyp för KBuild) och förstÄ om stöd för Rust verkligen behöver lÀggas till och vilka begrÀnsningar för anvÀndning av Rust som bör beaktas.

Vi pÄminner om att Linus Torvalds inte uteslöt möjligheten till bindningar för utveckling av icke-kÀrnsystemkomponenter (som drivrutiner) pÄ sprÄk som Rust under det senaste diskussionen vid konferensen "Open Source Summit and Embedded Linux". Möjligheten att utveckla drivrutiner pÄ Rust skulle göra det möjligt att skapa sÀkra och mer kvalitativa drivrutiner med minimala anstrÀngningar, utan problem som att referera till minnesomrÄden efter att de har frigjorts, dereferera nullpekare och överskrida buffertgrÀnser. Det finns redan flera externa projekt för att implementera denna möjlighet:

  • Utvecklare frĂ„n företaget "Fish in a Barrel" har förberett ett verktyg för att skriva laddningsbara moduler för Linux-kĂ€rnan med Rust, som anvĂ€nder ett set av abstrakta lager över kĂ€rnans grĂ€nssnitt och strukturer för att öka sĂ€kerheten. Lagren genereras automatiskt baserat pĂ„ de befintliga kĂ€rnhuvudfilerna med hjĂ€lp av ett verktyg bindgen. För att bygga lagren anvĂ€nds Clang. De byggda modulerna anvĂ€nder förutom lagren Ă€ven paketet staticlib.
  • Forskare frĂ„n Chinese University of Hong Kong utvecklar ett projekt för att utveckla drivrutiner för inbyggda system och Internet of Things-enheter med Rust, som ocksĂ„ anvĂ€nder bindgen för att generera lager baserade pĂ„ kĂ€rnans headerfiler. Ramverket syftar till att öka sĂ€kerheten för drivrutiner utan att göra förĂ€ndringar i kĂ€rnan - istĂ€llet för att skapa ytterligare isoleringsnivĂ„er för drivrutinerna i kĂ€rnan, föreslĂ„s det att blockera problem i kompilationsfasen genom att anvĂ€nda det sĂ€krare sprĂ„ket Rust. Det antas att ett sĂ„dant tillvĂ€gagĂ„ngssĂ€tt kan bli efterfrĂ„gat av hĂ„rdvarutillverkare som snabbt utvecklar proprietĂ€ra drivrutiner utan ordentlig granskning.
  • Utvecklarna av ramverket C2Rust för att översĂ€tta C-kod till Rust, gjennomfĂžrer Experiment med konvertering av kĂ€rnmoduler med minimala manuella Ă€ndringar. Problem som har noterats inkluderar anvĂ€ndning av GCC-tillĂ€gg i mĂ„nga delar av kĂ€rnkoden, vilket för nĂ€rvarande inte stöds av C2Rust. För att Ă„tgĂ€rda detta planeras det att lĂ€gga till stöd för GCC-attribut som inline, cold, alias, used och section i C2Rust, samt att utöka möjligheterna för inline-assemblering och lösa problem med strukturer som Ă€r bĂ„de justerade och packade (t.ex. xregs_state). Bland de betydande problemen som krĂ€ver manuellt arbete Ă€r det omöjligt att översĂ€tta icke-triviala C-makron till Rust-makron och behovet av att omdefiniera typer, eftersom C2Rust översĂ€tter C-typer till definitioner i libc-paketet, vilket inte kan anvĂ€ndas i kĂ€rnmoduler.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster