Rust hizkuntzarako euskarria duen Linux nukleorako adabakien hirugarren edizioa

Miguel Ojedak, Rust-for-Linux proiektuaren egileak, Rust hizkuntzan gailu kontrolatzaileak garatzeko hirugarren osagai aukera bat proposatu du Linux kerneleko garatzaileek kontuan hartu dezaten. Rust-en euskarria esperimentaltzat jotzen da, baina dagoeneko adostu da linux-next adarrean sartzea. Garapena Googlek eta ISRGk (Internet Security Research Group) finantzatzen dute, Let's Encrypt proiektuaren sortzailea dena eta HTTPS eta Interneten segurtasuna hobetzeko teknologien garapena sustatzen du.

Gogoratu proposatutako aldaketek Rust bigarren hizkuntza gisa erabiltzeko aukera ematen dutela kontrolatzaileak eta nukleoaren moduluak garatzeko. Rust-en euskarria lehenespenez gaituta ez dagoen aukera gisa aurkezten da eta ez du eragiten Rust nukleorako beharrezko eraikitze-menpekotasun gisa sartzea. Rust kontrolatzaileak garatzeko erabiltzeak gidari seguruagoak eta hobeak sortzea ahalbidetuko du esfortzu minimoarekin, askatu ondoren memoriarako sarbidea, erakusle nuluen deserreferentziak eta buffer gainditzeak bezalako arazorik gabe.

Memoria segurua den manipulazioa Rust-en eskaintzen da konpilazio garaian erreferentziak egiaztatzen, objektuen jabetzaren eta objektuaren bizitzaren (esparrua) jarraipena eginez, baita kodearen exekuzioan memoriarako sarbidearen zuzentasunaren ebaluazioaren bidez ere. Rust-ek osoko gainezkatzeen aurkako babesa eskaintzen du, erabili aurretik aldagaien balioak derrigorrezko hasieratzea eskatzen du, liburutegi estandarrean akatsak hobeto kudeatzen ditu, erreferentzia eta aldagai aldaezinen kontzeptua lehenespenez aplikatzen du, idazketa estatiko sendoa eskaintzen du akats logikoak minimizatzeko.

Adabakien bertsio berriak adabakien lehen eta bigarren bertsioen eztabaidan egindako iruzkinak ezabatzen jarraitzen du. Aldaketa nabarmenenak:

  • Rust 1.57-ren bertsio egonkorra erreferentzia-konpilatzaile gisa erabiltzeko trantsizioa egin da eta Rust 2021 lengoaiaren edizio egonkorretarako esteka eman da. Aurretik, adabakiak Rust-en beta adarra lotzen ziren eta hizkuntza-eginbide batzuk erabiltzen zituzten. ezegonkor gisa sailkatu ziren. Rust 2021 zehaztapenerako trantsizioak aukera eman zigun lana abiarazteko, besteak beste, const_fn_transmute, const_panic, const_unavailable_unchecked eta core_panic eta try_reserve bezalako ezaugarri ezegonkorrak erabiltzea saihesteko.
  • Adabakietan sartutako Rust liburutegiaren alloc bertsioaren garapenak aurrera jarraitu du, akatsak gertatzen direnean memoria esleitzeko funtzioak "izua" egoera sor daitekeenetik kentzeko, hala nola memoriarik gabe. Bertsio berriak "no_rc" eta "no_sync" aukerak inplementatzen ditu nukleoaren Rust kodean erabiltzen ez diren funtzionalitateak desgaitzeko, liburutegia modularagoa bihurtuz. Lanak jarraitzen du alloc garatzaile nagusiekin, nukleorako beharrezkoak diren aldaketak liburutegi nagusira transferitzeko helburuarekin. Liburutegiak nukleo mailan lan egiteko beharrezkoa den β€œno_fp_fmt_parse” aukera Rust oinarrizko liburutegira (nukleoa) eraman da.
  • Kodea garbitu da konpiladoreen abisu posibleak kentzeko, nukleoa CONFIG_WERROR moduan eraikitzean. Rust-en kodea eraikitzean, konpiladoreen diagnostiko modu gehigarriak eta Clippy linter abisuak gaituta daude.
  • Abstrakzioak Rust kodean erabiltzeko proposatzen dira seqlocks (sekuentzia blokeoak), potentzia kudeatzeko deia itzultzeko deiak, I/O Memoria (readX/writeX), eten eta hari kudeatzaileak, GPIO, gailuetarako sarbidea, kontrolatzaileak eta kredentzialak.
  • Gidariak garatzeko tresnak zabaldu egin dira lekuz alda daitezkeen mutexak, bit iteratzaileak, erakusleen lotura sinplifikatuak, akatsen diagnostiko hobetuak eta datu-busen azpiegitura independenteak barne.
  • Erreferentzia mota sinplifikatua erabiliz estekekin lan hobetu da, refcount_t backend-ean oinarrituta, erreferentziak zenbatzeko izen bereko kernel APIa erabiltzen duena. Aloc liburutegi estandarrean emandako Arc eta Rc moten euskarria kendu egin da eta ez dago erabilgarri nukleo mailan exekutatutako kodean (mota hauek desgaitzen dituzten liburutegirako aukerak prestatu dira).
  • Adabakiek PL061 GPIO kontrolatzailearen bertsioa dute, Rust-en berridatzia. Gidariaren ezaugarri berezi bat da bere ezarpenak ia lerroz lerro lehendik dagoen GPIO kontrolatzailea C hizkuntzan errepikatzen duela. Rust-en kontrolatzaileak sortzen ezagutu nahi duten garatzaileentzat, lerroz lerroko konparaketa bat prestatu da, Rust-en C kodea zein eraikuntzatan bihurtzen den ulertzeko.
  • Rust kode-base nagusiak rustc_codegen_gcc hartu du, libgccjit liburutegia erabiliz ahead-of-time (AOT) konpilazioa inplementatzen duen GCCrako rustc backend bat. Backendaren garapen egokiarekin, nukleoan parte hartzen duen Rust kodea GCC erabiliz biltzeko aukera emango dizu.
  • ARM, Google eta Microsoftez gain, Red Hat-ek Linux nukleoan Rust hizkuntza erabiltzeko interesa agertu du. Gogora dezagun Google-k zuzenean eskaintzen duela Rust for Linux proiekturako, Binder prozesuen arteko komunikazio-mekanismoaren inplementazio berri bat garatzen ari dela Rust-en eta Rust-en hainbat kontrolatzaile birlantzeko aukera aztertzen ari dela. Microsoft Rust-en Hyper-V-rako kontrolatzaileak inplementatzen hasi da. ARM ARM oinarritutako sistemetarako Rust-en euskarria hobetzeko lanean ari da. IBM-k kernelaren euskarria ezarri du Rust-erako PowerPC sistemetarako.

Iturria: opennet.ru

Gehitu iruzkin berria