Iphrojekthi ye-Chromium izosekela ukusetshenziswa kwamalabhulali e-Rust

Chromium

, iphrojekthi ye-Chromium izosekela ukusetshenziswa kwelabhulali yenkampani yangaphandle ye-C++ Rust ku-Chromium

Muva nje i-Google imemezele ukuthi ithimba elisemuva kwephrojekthi yeChromium lisebenza ekwengezeni i -Rust toolchain yokukhiqiza ohlelweni lwayo lokwakha.

Kulabo abangakayiqapheli i-Rust, kufanele bayikhumbule kahle ngoba lolu limi lokuhlela, olwakhiwa yi-Mozilla ngokukhethekile ukuze lusetshenziswe ekubhaleni isiphequluli, seluqalile ukungena futhi lwamukeleka phakathi kwamaphrojekthi amaningi abalulekile, enye yazo i- I-Rust Kernel. Linux.

Lokhu kuzosivumela ukuthi sifake ikhodi yokugqwala kubambambili be-Chrome onyakeni olandelayo. Umgomo uwukuqala kancane futhi ubeke okulindelekile okucacile lapho imitapo yolwazi izocatshangelwa khona uma isilungile.

Kunengqondo-ke ukuthi iChromium ekugcineni isiqala ukuthuthukisa lobu buchwepheshe. Ku-Google, ukwethulwa kweRust kuChromium kuzofeza umgomo wokunikeza indlela elula nephephile yokufeza "umthetho wabantu ababili," oqukethe ukusheshisa intuthuko nokuthuthukisa ukuphepha kweChrome. Ngaphezu kwalokho, kuthuthukisa ukuphepha ngokuqeda amaphutha enkumbulo nokunciphisa ubuningi beziphazamisi kukhodi.

Siyazi ukuthi i-C++ neRust zingasebenza kahle kakhulu ndawonye, ​​ngenxa yamathuluzi afana ne-cxx, i-autocxx bindgen, i-cbindgen, i-diplomat, kanye (nokuhlola) crubit. Nokho, kukhona futhi ukulinganiselwa. Singalindela ukuthi umumo wale mikhawulo ushintshe ngokuhamba kwesikhathi ngamathuluzi amasha noma athuthukisiwe, kodwa izinqumo nezincazelo lapha zisekelwe esimweni samanje sobuchwepheshe.

Lesi sinqumo senziwe njengengxenye yesinyathelo sokuvimbela amaphutha ememori ukuthi angaveli ku-codebase ye-Chrome. Ngokwezibalo ezinikezwe eminyakeni emibili edlule, ama-70% ezinkinga zokuphepha ezibucayi neziyingozi ku-Chromium zibangelwa amaphutha ememori.

Ukusebenzisa ulimi lwe-Rust, olugxile ekuphathweni kwememori okuphephile futhi oluhlinzeka ngokuphathwa kwememori okuzenzakalelayo, kuzonciphisa ingozi yobuthakathaka obubangelwa izinkinga ezifana nokufinyelela indawo yememori ngemva kokuba isikhululiwe kanye nokuchichima kwe-buffer.

Umgomo wokuletha i-Rust ku-Chromium ukuhlinzeka ngendlela elula (ayikho i-IPC) futhi ephephile (engaphansi kwe-C++ eyinkimbinkimbi ngokujwayelekile, azikho izimbungulu zokuphepha zememori ye-sandboxed) indlela yokwanelisa umthetho wokubili, ukuze kusheshiswe intuthuko (ikhodi encane okufanele ibhalwe , amadokhumenti edizayini ambalwa, iziqeshana zokuphepha ezimbalwa) kanye nokuthuthukisa ukuphepha (imigqa eminingi yekhodi engenazo iziphazamisi zokuphepha kumemori, ukuminyana kweziphazamisi zekhodi ephansi) ye-Chrome. Ukwengeza, inkampani iqinisekile ukuthi singasebenzisa imitapo yolwazi ye-Rust yenkampani yangaphandle ukufeza lo mgomo.

Ekuqaleni kuka-2022, ithimba leChromium lase livele lizame iRust futhi, ngemva kwezinyanga ezimbalwa, laphetha ngokuthi ekuqaleni lolu limi alufaneleki njengokufaka esikhundleni se-C++ emisebenzini eyinkimbinkimbi enekhodi engahambisani nekhodi edinga ukusebenza kanye nekhodi ekhona.

Ngakho-ke, ukusetshenziswa okuhleliwe kwe-Rust ku-Chromium kusobala ukuthi kunqunyelwe ekuqaleni . Ngakolunye uhlangothi, ukusebenzisana kuzohamba ohlangothini olulodwa kuphela: kusukela ku-C++ kuya ku-Rust. Ngakolunye uhlangothi, ekuqaleni kuvunyelwe ukusetshenziswa kwemitapo yolwazi yangaphandle kuphela. Lokhu kusebenza njengezingxenye ezizimele futhi kuzimele kwizingxenye zangaphakathi ze-Chromium. Imitapo yolwazi kumele ibe ne-API elula yomsebenzi wayo othize. Ithimba le-Chromium lizobe selibuyekeza imitapo yolwazi.

Okokugcina, kufanelekile ukusho ukuthi ukwengeza ukwesekwa ku-Chromium kuzovumela ikhodi ye-Rust ukuthi ithuthwe kuma-binaries e-Chrome kusukela ngonyaka ozayo. Lesi sinqumo siqhutshwa kakhulu yizinkinga zokuphepha: I-Rust inikeza ukuphepha okukhulu lapho ibhalela kwimemori kune-C++ futhi ivimbela ukuziphatha okungaba yingozi njengokufunda iziguquguquki ezingabhalwanga, ukufinyelela amanani angaphezu kwemingcele ebekwe ama-array, ukususa ukubhekisela kuma-null noma ama-invalid pointers, nokusebenzisa ama-iterators angavumelekile.

Uma unesithakazelo sokufunda okwengeziwe, ungathola imininingwane kusixhumanisi esilandelayo.


Engeza njengomthombo okhethwayo ku-Google