Rust-tuki Linux-ytimelle kohtaa Torvaldsin kritiikkiä

Linus Torvalds tarkasteli korjaustiedostoja, jotka toteuttivat mahdollisuuden luoda ajureita Rust-kielellä Linux-ytimelle, ja teki joitain kriittisiä kommentteja.

Eniten valituksia aiheutti mahdollinen paniikki():n mahdollisuus virhetilanteissa, esimerkiksi kun muisti on vähissä, jolloin dynaamisen muistin allokoinnin toiminnot, myös ytimen sisällä, voivat epäonnistua. Torvalds totesi, että tällainen lähestymistapa ytimessä on pohjimmiltaan mahdotonta hyväksyä, ja jos tätä kohtaa ei ymmärretä, hän voi täysin NAKida minkä tahansa koodin, joka yrittää käyttää tällaista lähestymistapaa. Toisaalta korjaustiedoston kehittäjä myöntyi tähän ongelmaan ja pitää sitä ratkaistavana.

Toinen ongelma oli yritykset käyttää liukuluku- tai 128-bittisiä tyyppejä, jotka eivät ole hyväksyttäviä ympäristöissä, kuten Linux-ytimessä. Tämä osoittautui vakavammaksi ongelmaksi, koska tällä hetkellä Rust-ydinkirjasto on jakamaton ja edustaa yhtä suurta möykkyä - ei ole mahdollista pyytää vain osaa ominaisuuksista, mikä estää yhden tai toisen ongelmallisen toiminnallisuuden käytön. Ongelman ratkaiseminen saattaa vaatia muutoksia rust-kääntäjään ja kirjastoihin, vaikka tällä hetkellä tiimillä ei ole vielä strategiaa kielikirjastojen modularisoinnin toteuttamiseksi.

Lisäksi Torvalds huomautti, että toimitettu ajuriesimerkki oli hyödytön ja neuvoi meitä käyttämään esimerkkinä jotakin ohjainta, joka ratkaisee yhden todellisista ongelmista.

Päivitys: Google on ilmoittanut osallistuvansa aloitteeseen Rust-tuen työntämiseksi Linux-ytimeen ja on toimittanut tekniset syyt Rustin käyttöönotolle muistivirheistä johtuvien ongelmien torjumiseksi. Google uskoo, että Rust on valmis liittymään C:hen Linux-ytimen komponenttien kehittämiskieleksi. Artikkelissa on myös esimerkkejä Rust-kielen käytöstä ytimen ajurien kehittämiseen niiden käytön yhteydessä Android-alustalla (Rust on tunnustettu virallisesti tuetuksi kieleksi Android-kehityksessä).

On huomattava, että Google on valmistellut alkuperäisen prototyypin Rust-kielellä kirjoitetusta ohjaimesta Binderin prosessien välistä viestintämekanismia varten, mikä mahdollistaa Binder-toteutusten suorituskyvyn ja turvallisuuden yksityiskohtaisen vertailun C- ja Rustissa. Nykyisessä muodossaan työ ei ole vielä valmis, mutta lähes kaikille Binderin toimimiseen tarvittaville ytimen toiminnallisuuksille on tehty kerroksia näiden abstraktien käyttöä varten Rust-koodissa.

Lähde: opennet.ru

Lisää kommentti