Prispela je osma različica popravkov za podporo gonilnikov Rust v sistemu Linux

Miguel Ojeda, avtor projekta Rust-for-Linux izdal osmo izdajo o razvoju popravkov jedra Linuxa s podporo za jezik Rust za razvijalce jedra Linuxa.

To velja za deveto izdajo popravkov (ob upoštevanju prve izdane različice brez številke različice). Podpora za rjo velja za eksperimentalno, vendar je že vključen v vejo linux-next, zahteva integracijo v jesenski izdaji 5.20/6.0 in je dovolj napreden, da začne delati na ustvarjanju abstraktnih plasti na vrhu podsistemov jedra, kot tudi na pisanju krmilnikov in modulov.

Razvoj financirata Google in ISRG (Internet Security Research Group), ki je ustanovitelj projekta Let's Encrypt in promovira HTTPS ter razvoj tehnologij za povečanje internetne varnosti.

Predlagane spremembe omogočajo uporabo Rusta kot drugega jezika za razvoj gonilnikov in modulov jedra. Podpora za Rust je predstavljena kot možnost, ki privzeto ni omogočena in ne povzroči, da je Rust vključen med zahtevane odvisnosti gradnje za jedro. Uporaba Rusta za razvoj gonilnikov vam bo omogočila ustvarjanje boljših in varnejših gonilnikov z minimalnim naporom, brez težav, kot so dostop do pomnilniškega območja po njegovem osvoboditvi, razvrščanje ničelnih kazalcev in prelivanja medpomnilnika.

Varnost pomnilnika je v Rustu zagotovljena v času prevajanja s preverjanjem referenc, sledenjem lastništvu objektov in življenjske dobe objekta (obseg), kot tudi z ocenjevanjem pravilnosti dostopa do pomnilnika med izvajanjem kode.

Kaj je novega v tej osmi izdaji?

V tem novem predlogu, ki je bil objavljen, je omenjeno, da različica knjižnice alloc, ki je odpravil morebitno generiranje "paničnega" stanja ob napakah, posodobljen na različico Rust 1.62. V primerjavi s prejšnjo različico ima komplet orodij Rust stabilizirano podporo za funkcionalnost const_fn_trait_bound, ki se uporablja v popravkih jedra.

Poleg tega koda vezave je ločena v sveženj polj »vezi«. ločeno, kar olajša vnovično izgradnjo, če se spremeni samo glavni paket jedra.

The implementacija makra "concat_idents!", Prepisan kot proceduralni makro, ki ni vezan na funkcionalnost concat_idents in dovoljuje uporabo referenc lokalnih spremenljivk.

Poleg tega je omenjeno, da makro "static_assert!" je bil prepisan tako, da omogoča "core::assert!()" se uporablja v katerem koli kontekstu namesto konstant, medtem ko makro "construction_error!" je prilagojen za delovanje pri nastavitvi načina "RUST_BUILD_ASSERT_{WARN,ALLOW}" za module.

dodan modul fs ki ponuja povezave za delo z datotečnimi sistemi. Predlaga se primer enostavnega datotečnega sistema, napisanega v Rustu, kot tudi modul čakalne vrste opravil, dodan za delo s sistemskimi čakalnimi vrstami.

Od ostalih sprememb ki izstopajo iz tega novega predloga:

  • Dodana ločena konfiguracijska datoteka "kernel/configs/rust.config".
  • Datoteke »*.i«, obdelane v zamenjavah makrov, so bile preimenovane v »*.rsi«.
  • Odstranjena je podpora za gradnjo komponent Rust z ravnmi optimizacije, ki niso uporabljene za kodo C.
  • Razvoj modula kasync se je nadaljeval z implementacijo metod asinhronega programiranja (async).
  • Dodan primer strežnika TCP na ravni jedra, napisanega v Rustu, in dodana možnost obravnavanja prekinitev v Rustu.
  • Dodan je makro procedure za lažje delo s tabelami kazalcev funkcij, kot je struktura file_operations.
  • Dodana implementacija dvosmernega povezanega seznama "unsafe_list::List".
  • Dodana začetna podpora za RCU in tip Guard za preverjanje, ali je zaklep branja vezan na trenutno nit.
  • Dodana funkcija Task::spawn() za samodejno ustvarjanje in zagon niti jedra.
  • Dodana je tudi metoda Task::wake_up().
  • Dodan modul zakasnitve

Končno če vas zanima več o tem, lahko preverite podrobnosti V naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.