Siga na takwas na faci na Linux kernel tare da goyan bayan yaren Rust

Miguel Ojeda, marubucin aikin Rust-for-Linux, ya ba da shawarar sakin abubuwan v8 don haɓaka direbobin na'ura a cikin Yaren Rust don la'akari da masu haɓaka kernel na Linux. Wannan sigar faci ce da aka sabunta, la'akari da sigar farko, wacce aka buga ba tare da lambar sigar ba. Ana ɗaukar goyon bayan tsatsa a matsayin gwaji, amma an riga an haɗa shi a cikin reshe na gaba na Linux, yana da'awar cewa an haɗa shi cikin sakin faɗuwar 5.20/6.0, kuma ya balaga don fara aiki akan ƙirƙirar yadudduka na ƙirƙira akan tsarin kernel, da kuma rubuta direbobi. da kuma modules. Google da ISRG (Rukunin Binciken Tsaro na Intanet) ne suka dauki nauyin wannan ci gaban, wanda shine wanda ya kafa aikin Mu Encrypt kuma yana haɓaka HTTPS da haɓaka fasahar inganta tsaro ta Intanet.

A cikin sabon sigar:

  • Kayan aikin kayan aiki da bambance-bambancen ɗakin karatu na allo, wanda ba shi da yuwuwar tsara yanayin “firgita” lokacin da kurakurai suka faru, an sabunta su don sakin Rust 1.62. Idan aka kwatanta da sigar da aka yi amfani da ita a baya, Rust Toolkit ya daidaita tallafi don ayyukan const_fn_trait_bound da ake amfani da su a cikin facin kernel.
  • An raba lambar daurin zuwa cikin wani fakitin akwatuna daban daban "dauri", wanda ke sauƙaƙe sake ginawa idan an yi canje-canje ga babban fakitin "kwaya".
  • Aiwatar da macro "concat_idents!" sake rubutawa a cikin nau'i na macro na tsari wanda ba a haɗa shi da ayyukan concat_idents kuma yana ba da damar amfani da nassoshi ga masu canjin gida.
  • An sake rubuta macro na "static_assert!", yana ba da damar amfani da "core:: assert!()" a kowane mahallin maimakon madaidaicin.
  • Macro "build_error!" daidaita don aiki lokacin da aka saita yanayin "RUST_BUILD_ASSERT_{WARN,ALLOW}" don samfura.
  • Ƙara wani fayil daban tare da saitunan "kernel/configs/rust.config".
  • Fayilolin "*.i" da aka sarrafa a cikin macro an canza suna zuwa "* .rsi".
  • Goyon baya don gina abubuwan Rust tare da matakan ingantawa daban da waɗanda aka yi amfani da su don lambar C an dakatar da su.
  • Ƙara fs module, wanda ke ba da ɗauri don aiki tare da tsarin fayil. An bayar da misalin tsarin fayil mai sauƙi da aka rubuta a cikin Rust.
  • Ƙara kayan aikin layin aiki don aiki tare da layin tsarin (yana ba da ɗauri akan tsarin aiki_struct da tsarin aiki_struct kernel).
  • Ci gaban tsarin kasync ya ci gaba tare da aiwatar da hanyoyin shirye-shiryen asynchronous (async). An ƙara misalin sabar TCP mai tushe da aka rubuta a cikin Rust.
  • An ƙara ikon sarrafa katsewa a cikin yaren Tsatsa ta amfani da nau'ikan [Threaded] Handler da nau'ikan [Threaded] Rajista'.
  • Ƙara macro "#[vtable]" don sauƙaƙa aiki tare da allunan masu nunin ayyuka, kamar tsarin fayil_operations.
  • Ƙaddara aiwatar da jerin abubuwan haɗin kai biyu "lalata_lalata ::Jeri".
  • Ƙara goyon baya na farko don RCU (Karanta-kwafin-sabuntawa) da nau'in Guard don bincika ko kulle karantawa yana daure da zaren yanzu.
  • Ƙara aiki :: spawn() aiki don ƙirƙira da fara zaren kernel ta atomatik. Hakanan an ƙara hanyar Task :: wake_up().
  • An ƙara tsarin jinkiri wanda ke ba ku damar amfani da jinkiri (nannade akan msleep()).

Canje-canjen da aka gabatar sun ba da damar yin amfani da Rust azaman harshe na biyu don haɓaka direbobi da samfuran kwaya. Ana gabatar da tallafin tsatsa azaman zaɓi wanda ba a kunna shi ta tsohuwa ba kuma baya haifar da shigar da tsatsa azaman dogaron ginawa da ake buƙata don kernel. Yin amfani da Rust don haɓaka direba zai ba ku damar ƙirƙirar mafi aminci kuma mafi kyawun direbobi tare da ƙaramin ƙoƙari, 'yanci daga matsaloli kamar samun damar ƙwaƙwalwar ajiya bayan 'yantarwa, ɓangarorin maƙasudin null, da buffer overruns.

Ana ba da amincin ƙwaƙwalwar ajiya a cikin Tsatsa a lokacin tattarawa ta hanyar duba tunani, kiyaye bin diddigin mallakar abu da tsawon rayuwa (ikon), haka kuma ta hanyar kimanta daidaitaccen damar ƙwaƙwalwar ajiya yayin aiwatar da lambar. Tsatsa kuma yana ba da kariya daga ambaliya mai lamba, yana buƙatar ƙaddamar da ƙima mai mahimmanci kafin amfani, yana sarrafa kurakurai mafi kyau a cikin daidaitaccen ɗakin karatu, yana amfani da ra'ayi na nassoshi marasa canzawa da masu canji ta tsohuwa, yana ba da buga rubutu mai ƙarfi don rage kurakurai masu ma'ana.

source: budenet.ru

Add a comment