Toinen painos korjaustiedostoja Linux-ytimelle, joka tukee Rust-kieltä

Miguel Ojeda, Rust-for-Linux-projektin kirjoittaja, ehdotti päivitettyä versiota komponenttien laiteajureiden kehittämiseen Rust-kielellä Linux-ytimen kehittäjien harkittavaksi. Ruostukea pidetään kokeellisena, mutta se on jo sovittu sisällytettäväksi linux-next-haaraan. Uusi versio eliminoi korjaustiedostojen ensimmäisestä versiosta käydyn keskustelun aikana tehdyt kommentit. Linus Torvalds on jo osallistunut keskusteluun ja ehdottanut joidenkin bittitoimintojen käsittelylogiikkaa muuttamaan.

Muista, että ehdotetut muutokset mahdollistavat Rustin käytön toisena kielenä ohjaimien ja ydinmoduulien kehittämisessä. Ruosteen tuki esitetään vaihtoehtona, joka ei ole oletusarvoisesti käytössä, eikä se johda ruosteen sisällyttämiseen ytimen pakollisena koontiriippuvuutena. Rustin käyttäminen ajurien kehittämiseen mahdollistaa turvallisempien ja parempien ohjainten luomisen vähällä vaivalla, ilman ongelmia, kuten muistin käyttöä vapauttamisen jälkeen, nollaosoittimen viittauksia ja puskurin ylityksiä.

Muistiturvallista käsittelyä tarjotaan Rustissa käännöshetkellä referenssitarkistuksen, objektin omistajuuden ja objektin käyttöiän (laajuus) seurantaan sekä muistin käytön oikeellisuuden arviointiin koodin suorittamisen aikana. Ruoste tarjoaa myös suojan kokonaislukujen ylivuodoilta, vaatii muuttujien arvojen pakollisen alustamisen ennen käyttöä, käsittelee virheet paremmin standardikirjastossa, soveltaa oletusarvoisesti muuttumattomien viitteiden ja muuttujien käsitettä, tarjoaa vahvan staattisen kirjoittamisen loogisten virheiden minimoimiseksi.

Merkittävimmät muutokset korjaustiedostojen uudessa versiossa:

  • Muistin varauskoodi vapautetaan mahdollisesta "paniikki"-tilan luomisesta, kun ilmenee virheitä, kuten muistin loppuminen. Mukana on muunnos Rust alloc -kirjastosta, joka muokkaa koodin uudelleen käsittelemään vikoja, mutta perimmäisenä tavoitteena on siirtää kaikki ytimen tarvitsemat ominaisuudet allocin pääversioon (muutokset on jo valmisteltu ja siirretty standardiin Rust kirjasto).
  • Yöversioiden sijaan voit nyt käyttää rustc-kääntäjän beetaversioita ja vakaita julkaisuja ytimen kääntämiseen Rust-tuella. Tällä hetkellä rustc 1.54-beta1 on käytössä viitekääntäjänä, mutta 1.54-julkaisun jälkeen kuun lopussa sitä tuetaan viitekääntäjänä.
  • Lisätty tuki testien kirjoittamiseen käyttämällä Rustin standardia #[testi]-attribuuttia ja mahdollisuus käyttää doctesteja testien dokumentointiin.
  • Lisätty tuki ARM32- ja RISCV-arkkitehtuureille aiemmin tuettujen x86_64- ja ARM64-arkkitehtuurien lisäksi.
  • Parannetut GCC Rust (GCC frontend for Rust) ja rustc_codegen_gcc (rustc backend for GCC) toteutukset, jotka nyt läpäisevät kaikki perustestit.
  • Uutta abstraktiotasoa ehdotetaan käytettäväksi C-kielellä kirjoitettujen ydinmekanismien Rust-ohjelmissa, kuten puna-mustat puut, viittauksilla lasketut objektit, tiedostokuvaajan luonti, tehtävät, tiedostot ja I/O-vektorit.
  • Ohjainten kehityskomponenteissa on parannettu tukea file_operations-moduulille, module!-makrolle, makrojen rekisteröinnille ja alkeellisille ajureille (tarkista ja poista).
  • Binder tukee nyt tiedostokuvainten ja LSM-koukkujen välittämistä.
  • Toimivampaa esimerkkiä Rust-ohjaimesta ehdotetaan - bcm2835-rng Raspberry Pi -levyjen laitteiston satunnaislukugeneraattorille.

Lisäksi mainitaan joidenkin yritysten ruosteen käyttöön ytimessä liittyvät projektit:

  • Microsoft on ilmaissut kiinnostuksensa osallistua työhön Rust-tuen integroimiseksi Linux-ytimeen ja on valmis toimittamaan ajureiden toteutuksia Hyper-V on Rustille tulevina kuukausina.
  • ARM pyrkii parantamaan Rust-tukea ARM-pohjaisille järjestelmille. Rust-projekti on jo ehdottanut muutoksia, jotka tekisivät 64-bittisistä ARM-järjestelmistä Tier 1 -alustan.
  • Google tukee suoraan Rust for Linux -projektia, kehittää uutta Binder-prosessien välisen viestintämekanismin toteutusta Rustissa ja harkitsee mahdollisuutta muokata eri ajureita Rustissa. ISRG:n (Internet Security Research Group) kautta Google tarjosi rahoitusta työhön Rust-tuen integroimiseksi Linux-ytimeen.
  • IBM on ottanut käyttöön ytimen tuen Rustille PowerPC-järjestelmille.
  • LSE (Systems Research Laboratory) -laboratorio on kehittänyt SPI-ajurin Rustissa.

Lähde: opennet.ru

Lisää kommentti