Qhov thib yim version 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 thov kev tso tawm v8 cov khoom siv rau kev tsim cov cuab yeej tsav tsheb hauv Rust lus rau kev txiav txim siab los ntawm Linux kernel developers. Qhov no yog qhov hloov kho version ntawm thaj ua rau thaj, coj mus rau hauv tus account thawj version, luam tawm yam tsis muaj tus lej version. Kev txhawb nqa xeb yog suav tias yog kev sim, tab sis twb tau suav nrog hauv linux-tom ntej ceg, thov kom muab tso rau hauv lub caij nplooj zeeg tso tawm ntawm 5.20 / 6.0, thiab paub tab txaus los pib ua haujlwm ntawm kev tsim cov txheej txheem abstraction hla kernel subsystems, nrog rau kev sau ntawv tsav tsheb. thiab modules. Txoj kev loj hlob yog nyiaj txiag los ntawm Google thiab ISRG (Internet Security Research Group), uas yog tus tsim ntawm Let's Encrypt project thiab txhawb HTTPS thiab kev tsim cov thev naus laus zis los txhim kho Internet kev ruaj ntseg.

Hauv qhov tshiab version:

  • Cov cuab yeej thiab qhov sib txawv ntawm cov tsev qiv ntawv alloc, tsis muaj peev xwm ua tau ntawm lub xeev "kev ntshai" thaum muaj teeb meem tshwm sim, tau hloov kho rau kev tso tawm ntawm Rust 1.62. Piv nrog rau cov khoom siv yav dhau los, Rust toolkit tau ruaj khov kev txhawb nqa rau const_fn_trait_bound functionality siv nyob rau hauv kernel thaj ua rau thaj.
  • Txoj cai khi tau muab cais rau hauv ib lub pob crate cais "bindings", uas yooj yim rov tsim dua yog tias kev hloov pauv tsuas yog ua rau lub pob tseem ceeb "kernel".
  • Kev nqis tes ua ntawm macro "concat_idents!" rewritten nyob rau hauv daim ntawv ntawm ib tug txheej txheem macro uas tsis khi rau lub concat_ident functionality thiab tso cai rau siv cov ntaub ntawv mus rau lub zos variables.
  • Qhov "static_assert!" macro tau sau dua tshiab, tso cai siv "core:: assert!()" hauv txhua lub ntsiab lus tsis yog qhov qub.
  • Macro "build_error!" hloov mus ua haujlwm thaum "RUST_BUILD_ASSERT_{WARN, ALLOW}" hom yog teem rau modules.
  • Ntxiv cov ntaub ntawv cais nrog kev teeb tsa "kernel/configs/rust.config".
  • Cov ntaub ntawv "*.i" ua tiav hauv macro hloov pauv tau hloov npe rau "*.rsi".
  • Kev them nyiaj yug rau lub tsev Rust Cheebtsam nrog optimization theem sib txawv ntawm cov siv rau C code tau raug txiav lawm.
  • Ntxiv fs module, uas muab kev khi rau kev ua haujlwm nrog cov ntaub ntawv. Ib qho piv txwv ntawm cov ntaub ntawv yooj yim sau hauv Rust yog muab.
  • Ntxiv workqueue module rau kev ua hauj lwm nrog system queues (muab bindings tshaj lub work_struct thiab workqueue_struct kernel qauv).
  • Kev txhim kho ntawm kasync module txuas ntxiv nrog kev siv cov txheej txheem asynchronous programming (async). Ntxiv ib qho piv txwv ntawm cov tub ntxhais-theem TCP server sau hauv Rust.
  • Ntxiv lub peev xwm los tswj kev cuam tshuam hauv cov lus Rust siv [Threaded]Handler hom thiab [Threaded]Registration` hom.
  • Ntxiv cov txheej txheem macro "#[vtable]" kom yooj yim rau kev ua hauj lwm nrog cov ntxhuav ntawm kev ua haujlwm pointers, xws li cov qauv file_operations.
  • Ntxiv kev nqis tes ua ntawm cov npe txuas bidirectional "unsafe_list::List".
  • Ntxiv kev txhawb nqa thawj zaug rau RCU (Nyeem-coj-hloov tshiab) thiab Guard hom los xyuas seb qhov kev nyeem ntawv kaw puas raug khi rau cov xov tam sim no.
  • Ntxiv Task::spawn() muaj nuj nqi los tsim thiab cia li pib kernel threads. Kuj tseem ntxiv Txoj Haujlwm::wake_up() txoj kev.
  • Ntxiv qhov ncua sij hawm uas tso cai rau koj siv ncua sij hawm (ib lub wrapper tshaj msleep()).

Cov kev hloov pauv uas tau hais tseg ua rau nws muaj peev xwm 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.

Tau qhov twg los: opennet.ru

Ntxiv ib saib