Qhov thib ob tsab ntawm thaj ua rau thaj rau Linux ntsiav nrog kev txhawb nqa rau cov lus Rust

Miguel Ojeda, tus sau ntawm Rust-for-Linux project, tau npaj ib qho kev hloov kho tshiab ntawm cov khoom siv rau kev tsim cov cuab yeej tsav tsheb hauv Rust lus rau kev txiav txim siab los ntawm Linux kernel developers. Kev txhawb nqa xeb yog suav tias yog kev sim, tab sis twb tau pom zoo rau kev suav nrog hauv linux-tom ntej ceg. Tus tshiab version tshem tawm cov lus hais thaum lub sij hawm sib tham ntawm thawj version ntawm thaj ua rau thaj. Linus Torvalds twb tau koom nrog kev sib tham thiab tau thov hloov lub logic rau kev ua haujlwm me ntsis.

Nco qab tias cov kev hloov pauv tau ua rau nws tuaj yeem siv Rust ua hom lus thib ob rau kev tsim cov tsav tsheb thiab cov kernel modules. Kev txhawb nqa xeb yog nthuav tawm raws li qhov kev xaiv uas tsis tau qhib los ntawm lub neej ntawd thiab tsis ua rau Rust suav nrog raws li qhov yuav tsum tau muaj kev vam khom rau cov kernel. Siv Rust rau kev txhim kho tus neeg tsav tsheb yuav tso cai rau koj los tsim kom muaj kev nyab xeeb thiab zoo dua tsav tsheb nrog kev siv zog tsawg, tsis muaj teeb meem xws li kev nkag mus rau lub cim xeeb tom qab tso tawm, tsis muaj qhov taw qhia tsis zoo, thiab tsis muaj kev cuam tshuam.

Kev tuav pov hwm kev nco yog muab rau hauv Rust ntawm lub sijhawm los ntawm kev siv tshuaj xyuas, ua raws li cov tswv cuab ntawm cov khoom thiab lub neej ntawm cov khoom (scope), nrog rau kev ntsuas qhov tseeb ntawm kev nkag mus rau lub cim xeeb thaum lub sijhawm ua tiav cov lej. Rust kuj tseem muab kev tiv thaiv tus naj npawb overflows, yuav tsum tau pib pib ntawm qhov sib txawv ntawm qhov tseem ceeb ua ntej siv, tuav cov kev ua yuam kev zoo dua hauv cov tsev qiv ntawv tus qauv, siv lub tswv yim ntawm cov ntaub ntawv tsis hloov pauv thiab cov kev hloov pauv los ntawm lub neej ntawd, muaj kev ntaus ntawv zoo li qub kom txo qis cov kev ua yuam kev.

Cov kev hloov pauv pom tau zoo tshaj plaws hauv qhov tshiab version ntawm thaj ua rau thaj:

  • Lub cim xeeb faib code yog tso tawm los ntawm qhov muaj peev xwm tsim tau lub xeev "panic" thaum muaj teeb meem xws li tawm ntawm lub cim xeeb. Ib qho txawv ntawm cov tsev qiv ntawv Rust alloc suav nrog, uas rov ua haujlwm cov cai los daws qhov ua tsis tiav, tab sis lub hom phiaj kawg yog hloov tag nrho cov yam ntxwv xav tau rau cov ntsiav mus rau qhov tseem ceeb ntawm alloc (cov kev hloov pauv tau npaj thiab xa mus rau tus qauv. Rust tsev qiv ntawv).
  • Hloov chaw ua haujlwm hmo ntuj, tam sim no koj tuaj yeem siv beta tso tawm thiab tso tawm ruaj khov ntawm rustc compiler los suav cov ntsiav nrog Rust txhawb. Tam sim no, rustc 1.54-beta1 yog siv los ua cov ntaub ntawv siv, tab sis tom qab 1.54 tso tawm thaum kawg ntawm lub hli, nws yuav tau txais kev txhawb nqa raws li kev siv compiler.
  • Ntxiv kev txhawb nqa rau kev xeem sau ntawv siv tus qauv "#[test]" tus cwj pwm rau Rust thiab muaj peev xwm siv doctests los sau cov ntawv xeem.
  • Ntxiv kev txhawb nqa rau ARM32 thiab RISCV architectures ntxiv rau yav dhau los kev txhawb nqa x86_64 thiab ARM64.
  • Txhim kho kev siv ntawm GCC Rust (GCC frontend for Rust) thiab rustc_codegen_gcc (rustc backend for GCC), uas tam sim no dhau tag nrho cov kev xeem yooj yim.
  • Ib theem tshiab ntawm abstraction yog npaj rau siv nyob rau hauv Rust cov kev pab cuam ntawm kernel mechanisms sau nyob rau hauv C, xws li liab-dub ntoo, siv-suav khoom, ntaub ntawv descriptor creation, hauj lwm, cov ntaub ntawv, thiab I/O vectors.
  • Kev txhim kho tsav tsheb tau txhim kho kev txhawb nqa rau file_operations module, lub module! macro, macro register, thiab rudimentary drivers (probe and remove).
  • Binder tam sim no txhawb nqa cov ntaub ntawv dhau los thiab LSM hooks.
  • Ib qho piv txwv ua haujlwm ntau dua ntawm tus neeg tsav tsheb Rust tau npaj siab - bcm2835-rng rau cov khoom siv hluav taws xob random tooj ntawm Raspberry Pi boards.

Tsis tas li ntawd, qee lub tuam txhab cov haujlwm ntsig txog kev siv Rust hauv cov ntsiav tau hais:

  • Microsoft tau qhia txog kev txaus siab rau kev koom tes hauv kev ua haujlwm los koom ua ke Rust kev txhawb nqa rau hauv Linux ntsiav thiab npaj txhij los muab kev siv tsav tsheb rau Hyper-V ntawm Rust hauv lub hlis tom ntej.
  • ARM tab tom ua haujlwm los txhim kho Rust kev txhawb nqa rau ARM-based systems. Lub phiaj xwm Rust twb tau thov cov kev hloov pauv uas yuav ua rau 64-ntsis ARM systems ua Tier 1 platform.
  • Google ncaj qha muab kev txhawb nqa rau Rust rau Linux qhov project, tab tom tsim qhov kev siv tshiab ntawm Binder interprocess kev sib txuas lus mechanism hauv Rust, thiab tab tom txiav txim siab txog qhov muaj peev xwm rov ua haujlwm ntau yam tsav tsheb hauv Rust. Los ntawm ISRG (Internet Security Research Group), Google muab nyiaj txiag rau kev ua haujlwm los koom ua ke Rust kev txhawb nqa rau hauv Linux kernel.
  • IBM tau siv kernel txhawb rau Rust rau PowerPC systems.
  • Lub LSE (Systems Research Laboratory) tau tsim ib tus neeg tsav tsheb SPI hauv Rust.

Tau qhov twg los: opennet.ru

Ntxiv ib saib