Andra versionen av patchar för Linux-kÀrnan med stöd för Rust-sprÄket

Miguel Ojeda, författare till projektet Rust-for-Linux, har föreslagit en uppdaterad version av komponenterna för utveckling av enhetsdrivrutiner pÄ Rust-sprÄket för Linux-kÀrnans utvecklare att övervÀga. Stödet för Rust betraktas som experimentellt, men har redan godkÀnts för inkludering i linux-next-grenen. I den nya versionen har kommentarer som uttryckts i diskussionen av den första versionen av patcharna ÄtgÀrdats. Linus Torvalds har redan kopplat upp sig i diskussionen och föreslagit att logiken för vissa bitoperationer förÀndras.

Vi pÄminner om att de föreslagna förÀndringarna ger möjlighet att anvÀnda Rust som ett andra sprÄk för utveckling av drivrutiner och moduler för kÀrnan. Stödet för Rust presenteras som ett alternativ, inte aktiverat som standard och inte som en obligatorisk byggberoende för kÀrnan. AnvÀndningen av Rust för utveckling av drivrutiner kommer att möjliggöra skapandet av sÀkrare och högre kvalitetsdrivrutiner med minimala insatser, utan problem som att referera till minnesomrÄden efter att de har frigjorts, dereferera nullpekare och överskridning av buffertgrÀnser.

SÀker minneshantering sÀkerstÀlls i Rust vid kompilering genom kontroll av referenser, spÄrning av Àgande av objekt och beaktande av objektens livstid (synlighet), samt genom utvÀrdering av korrekt tillgÄng till minnet under kodens körning. Rust tillhandahÄller ocksÄ verktyg för skydd mot heltalsöverflöden, krÀver obligatorisk initialisering av variabelvÀrden innan anvÀndning, hanterar fel bÀttre i standardbiblioteket, tillÀmpar konceptet av oförÀnderliga (immutable) referenser och variabler som standard och erbjuder stark statisk typning för att minimera logiska fel.

De mest mÀrkbara förÀndringarna i den nya versionen av patcharna:

  • Koden för minneshantering har tagits bort frĂ„n potentiella "panic"-tillstĂ„nd vid fel, som till exempel minnesbrist. Den nyligen inkluderade versionen av Rust-biblioteket alloc har omarbetat koden för att hantera misslyckanden, men det slutliga mĂ„let Ă€r att överföra alla funktioner som behövs för kĂ€rnan till den huvudredigerade versionen av alloc (Ă€ndringarna har redan förberetts och skickats till den standard Rust-biblioteket).
  • IstĂ€llet för nattliga byggen för att kompilera kĂ€rnan med Rust-stöd kan nu beta-versioner och stabila releaser av kompilatorn rustc anvĂ€ndas. För nĂ€rvarande anvĂ€nds rustc 1.54-beta1 som referenskompilator, men efter utgivandet av version 1.54 i slutet av mĂ„naden kommer just den att stödjas som referenskompilator.
  • Stöd för att skriva tester med den hemvĂ€ndande Rust-attributet "#[test]" och möjligheten att anvĂ€nda doctests för att dokumentera tester har lagts till.
  • Stöd för ARM32- och RISCV-arkitekturer har lagts till utöver de tidigare stödda x86_64 och ARM64.
  • Implementeringarna av GCC Rust (GCC-framĂ€nda för Rust) och rustc_codegen_gcc (rustc-backend för GCC) har förbĂ€ttrats, och nu passerar de alla grundlĂ€ggande tester.
  • NivĂ„n av abstraktion har föreslagits för anvĂ€ndning i program skrivna i Rust som anvĂ€nder kĂ€rnans mekanismer, skrivna i C, som röd-svarta trĂ€d, objekt med referensrĂ€kning, skapande av filhandtag, uppgifter, filer och in-/utdata-vektorer.
  • Stödet för modulen "file_operations", makrot "module!", registreringen av makron och rudimentĂ€ra drivrutiner (probe och remove) har förbĂ€ttrats i komponenterna för utveckling av drivrutiner.
  • I Binder har stöd för överföring av filhandtag och LSM-hakar implementerats.
  • Ett mer funktionellt exempel pĂ„ en Rust-drivrutin föreslĂ„s – bcm2835-rng för den hĂ„rdvarubaserade slumpgeneratorn pĂ„ Raspberry Pi-kort.

Dessutom nÀmns projekt frÄn vissa företag kopplade till anvÀndningen av Rust i kÀrnan:

  • Microsoft har uttryckt intresse för att delta i arbetet med att integrera stöd för Rust i Linux-kĂ€rnan och Ă€r redo att inom de kommande mĂ„naderna tillhandahĂ„lla implementationer av drivrutiner för Hyper-V pĂ„ Rust.
  • ARM arbetar pĂ„ att förbĂ€ttra stödet för Rust för system baserade pĂ„ ARM-processorer. Projektet Rust har redan föreslagit Ă€ndringar som gör 64-bitars ARM-system till en av plattformarna för förstahandsstöd (Tier-1).
  • Google tillhandahĂ„ller direkt stöd för projektet Rust for Linux, utvecklar en ny implementation av mekanismen för interprocesskommunikation, Binder, pĂ„ Rust och övervĂ€ger att omskriva olika drivrutiner pĂ„ Rust. Genom ISRG (Internet Security Research Group) har Google finansierat arbetet med att integrera stöd för Rust i Linux-kĂ€rnan.
  • IBM har implementerat stöd för Rust i kĂ€rnan för PowerPC-system.
  • LSE-laboratoriet (Systems Research Laboratory) har utvecklat en SPI-drivrutin pĂ„ Rust.

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