Rja v jedru Linuxa: Zakaj je to pomembno in kaj se dogaja naslednje

  • Sep 04, 2023

Rust za Linux? Premik, da bi Rust postal drugi jezik za razvoj jedra Linuxa, pridobiva zagon. Toda pred nami so še izzivi.

Tri desetletja je bil Linux napisan v programskem jeziku C. Toda sprememba bi lahko prišla.

Vse večji je zagon prizadevanj, da bi programski jezik Rust postal drugi jezik poleg C za jedro Linuxa. Google je podpora projekt, ki ga vodi razvijalec Miguel Ojeda in predvideva uporabo Rusta za pisanje elementov jedra Linuxa, ki zdaj podpira nekatere najbolj kritičnih delov internetne infrastrukture danes.

ZDNET Priporoča

Kje se naučiti najbolj priljubljenih programskih jezikov

Tukaj je pogled na tečaje, ki jih boste potrebovali za učenje teh programskih jezikov.

Preberi zdaj

Google trdi, da bi moral Rust pomagati zmanjšati pomnilniške napake, ki vodijo do varnostnih ranljivosti, ki sestavljajo večino napak, ki jih tehnološka podjetja in odprtokodni projekti odpravijo v vsakem nadgradnja. Cilj ni ponovno napisati vseh 30 milijonov vrstic kode C v Rust, ampak namesto tega napisati novo kodo v Rust.

GLEJ: Hiring Kit: razvijalec za Python (TechRepublic Premium)

Kljub nekaterim možnim koristim pa še vedno ni jasno, ali bo prizadevanje, da Rust postane drugi jezik za razvoj jedra, uspelo. Vsaj na Rust za Linux je treba gledati kot na dolgoročni projekt in skoraj zagotovo ne bo vključen v jedro Linuxa v različici 5.14 – različici trenutno v razvoju in bo predvidoma stabilen okoli tretjega četrtletja 2021.

"Projekt še ni končan, vendar smo pripravljeni na vključitev, če vzdrževalci na visoki ravni sprejmejo trenutne spremembe in raje delajo znotraj jedra," je Ojeda povedal za ZDNet. "Večina dela je še pred nami."

rja, izlegel pri Mozilli, je bil uporabljen za izdelavo mehanizma za upodabljanje Servo za Firefox in je pridobil oprijem Spletne storitve Amazon, Microsoft, Google in Facebook za sistemsko programiranje – pogosto za gradnjo na velikih kodnih bazah C in C++.

Zaradi te vse večje priljubljenosti je zamisel o Rust v jedru pridobila podporo nekaterih velikih tehnoloških podjetij.

Toda kljub nekaterim potencialnim prednostim oboževalci Rusta ne morejo preprosto sami narediti programskega jezika za jedro Linuxa. Potrebuje odobritev Linusa Torvaldsa in vzdrževalcev na visoki ravni, ki vodijo razvoj jedra.

In Torvalds ni navedel, ali bi odobril zahtevo za vlečenje (PR) za združitev najnovejših popravkov Rust za Linux v glavno jedro Linuxa.

Ojeda je objavil prvo zahtevo za komentar (RFC) na poštni seznam jedra Linuxa aprila in v začetku julija je sledil nabor predlaganih popravkov za katerega so on in njegovi kolegi upali, da bo vključen v jedro Linuxa.

Ojedin prvi RFC je vključeval primere gonilnikov Rust, vendar Torvaldsov odgovor na gonilnike za Linux ni bil pozitiven: rekel je, da je panika zaradi napak med izvajanjem – vrsta napake – "temeljna težava".

Torvaldsov komentar je poudaril dolgo pot pred projektom Rust za Linux. Kot pri ZDNet-u Steven J. Vaughan-Nichols je poročal marca, Torvalds čaka in vidi, da bo Rust uvedel v jedro Linuxa: ni ne za ne proti Rustu, vendar želi preveriti, ali se njegove obljubljene koristi dejansko izkažejo.

"Mislim, da ga poganjajo ljudje, ki so zelo navdušeni nad Rustom, in želim videti, kako se potem dejansko konča delo v praksi,« je za ZDNet povedal Torvalds in dodal, da se zdi, da so vozniki najbolj očitna tarča za Rja.

Ojeda priznava Torvaldsovo zaskrbljenost zaradi panike, vendar pravi tudi, da ekipa razvijalcev, ki poskuša Rust prenesti v Linux, obravnava težave.

Pravi, da je odstranjevanje nepotrebne panike ključna skrb skupnosti jedra Linuxa, vendar verjame, da je "večinoma tehnična ovira in je bila rešena." 

"Drugi je pridobivanje modulov jedra, napisanih kot dokaz koncepta," pravi Ojeda.

»Jedrni modul Rust Binder deluje in preliminarni rezultati zmogljivosti, ki jih imamo v trivialnem merilu uspešnosti zakasnitve, so boljši od različice C, kar je zelo spodbudno; čeprav smo še vedno v procesu izboljševanja kode in čiščenja stvari. Delamo tudi na pisanju modulov, ki poganjajo dejansko strojno opremo, in pripravljamo načine za izboljšanje ergonomije okoli tega."

Toda večja ovira, pravi Ojeda, je pridobiti sodelavce jedra Linuxa, ki že desetletja kodirajo v C, da se naučijo Rusta in njegovih konceptov.

"Po mojem mnenju je večja ovira učljivost. Rust je bolj zapleten kot C," pravi.

Linux

  • Najboljši prenosniki Linux za potrošnike in razvijalce
  • Želite rešiti svoj starajoči se računalnik? Preizkusite teh 5 distribucij Linuxa
  • Najboljše distribucije za začetnike
  • Kako omogočiti Linux na vašem Chromebooku (in zakaj bi morali)

Tudi to ni majhna težava, glede na stotine popravkov in sprememb, ki pridejo v vsako novo različico jedra. Nekdo jih mora napisati – in razvijalci zdaj lahko čutijo, da se morajo naučiti Rusta, ko že delajo po natrpanem urniku. Opozoriti je treba, da projekt vzdrževalcev Linuxa ne sili v uporabo Rust-a, temveč ponuja možnost pisanja nove podsistemske kode v Rust-u. To jim bo pomagalo vzdrževati in sami pisati popravke, pravi Ojeda.

GLEJ: Tečaji računalništva v letu 2021: Celovit pregled

Nekateri koncepti v Rustu so tuji v drugih jezikih, na primer 'izposoditi čeker', s katerim se razvijalci pogosto borijo, ko poskušajo razumeti, kdaj se koda ne prevede po pričakovanjih; drug koncept tujcev je Rustova delitev varno/nevarno.

"Razvijalci jedra so zelo pametni, a tudi zelo zaposleni. Ni lahko pritegniti vseh k sodelovanju in razložiti, zakaj menimo, da je uvedba drugega jezika vredna stroškov kompleksnosti,« pravi Ojeda.

Vse to pomeni, da se zdi, da ima projekt Rust za Linux še nekaj časa, preden se njegovi popravki združijo. Po novih popravkih je vzdrževalec stabilnega jedra Linuxa Greg Kroah-Hartman od projekta zahteval "konkreten" gonilnik za Linux, napisan v Rustu.

Tako kot Torvalds je verjel, da so gonilniki jedra smiselni, ker so "'končni listi' drevesa odvisnosti v viru jedra." 

In če so paketi Rust za Linux zavrnjeni, je razmišljanje o jedru z manj napakami v pomnilniku samo sebi namen.

»Tudi če bi projekt dobil trdi ne – da sploh ni možnosti, da bi projekt uspel zdaj ali v prihodnosti – projekt ne bi bil izgubljen čas,« pravi Ojeda.

"Vaja dodajanja drugega jezika v jedro je zanimiva in je sprožila precej razprav. Tudi če ne bi bil Rust, je dobro imeti vse te izkušnje, če želi drug jezik to poskusiti.

"Najpomembneje je, da mislim, da je ozaveščanje o jamstvih za varnost spomina, ki jih lahko prinese uporaba novega pristopa, že ključno. Po mojem mnenju, če želimo imeti kakršen koli drugi jezik v jedru, bi moral biti takšen, ki bistveno izboljša stanje v tem pogledu."

Razvijalec

Spet je konec programiranja, kot ga poznamo
Razvijalci se počutijo varne v svojih službah, vendar še vedno razmišljajo o odpovedi
Prihodnost spleta bo potrebovala drugačno vrsto razvijalca programske opreme
Najboljši prenosniki Linux za potrošnike in razvijalce
  • Spet je konec programiranja, kot ga poznamo
  • Razvijalci se počutijo varne v svojih službah, vendar še vedno razmišljajo o odpovedi
  • Prihodnost spleta bo potrebovala drugačno vrsto razvijalca programske opreme
  • Najboljši prenosniki Linux za potrošnike in razvijalce