Neljäs painos korjaustiedostoja Linux-ytimelle, joka tukee Rust-kieltä

Miguel Ojeda, Rust-for-Linux-projektin kirjoittaja, ehdotti neljättä versiota komponenteista laiteajurien kehittämiseen Rust-kielellä Linux-ytimen kehittäjien harkittavaksi. Rust-tukea pidetään kokeellisena, mutta siitä on jo sovittu sisällytettäväksi linux-next-haaraan, ja se on riittävän kypsä aloittamaan työskentelyn abstraktiokerrosten luomiseksi ytimen alijärjestelmiin sekä ajurien ja moduulien kirjoittamiseen. Kehitystä rahoittavat Google ja ISRG (Internet Security Research Group), joka on Let's Encrypt -projektin perustaja ja edistää HTTPS:ää ja Internetin turvallisuutta parantavien teknologioiden kehitystä.

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.

Korjausten uusi versio poistaa edelleen kommentit, jotka on tehty keskustelun aikana korjaustiedostojen ensimmäisestä, toisesta ja kolmannesta painoksesta. Uudessa versiossa:

  • Siirtyminen Rust 1.58.0:n vakaan julkaisun käyttöön referenssikääntäjänä on tehty. Projektille välttämättömistä muutoksista, jotka eivät vielä sisälly Rust-työkalupakettiin, ovat lippu “-Zsymbol-mangling-version=v0” (odotettu Rust 1.59.0:ssa) ja “maybe_uninit_extra”-tila (odotettu Rust 1.60.0:ssa .XNUMX) on merkitty.
  • Lisätty automaattiset tarkistukset sopivien Rust-työkalujen saatavuudesta ja laajennettu kykyä testata Rust-tukea järjestelmässä.
  • Uusia abstraktioita on ehdotettu laitetunnistetaulukoiden ("IdArray" ja "IdTable") käyttämiseen Rust-koodista.
  • Lisätty tasot ajastimeen liittyvien toimintojen käyttämiseen (kellokehys).
  • Alustan ajurit määritellään nyt ominaisuustoteutusten avulla.
  • Uusi makro on lisätty yksinkertaistamaan alustaohjainten rekisteröintiä, ja uutta yleistä ohjainmallia on ehdotettu.
  • Lisätty makrot "dev_*"-rakenteille.
  • Lisätty "{read,write}*_relaxed" menetelmät IoMem-tyypille .
  • FileOpener-ominaisuus poistettiin tiedostotoimintojen yksinkertaistamiseksi.
  • Parametri "ThisModule" on lisätty ajurin rekisteröinnin yhteydessä välitettyihin argumentteihin.
  • Ydinmoduulien luomiseen Rust-kielellä ehdotetaan vakiomallia.

Lähde: opennet.ru

Lisää kommentti