Nooca lixaad ee patches ee kernel Linux oo taageero u ah luqadda Rust

Miguel Ojeda, oo ah qoraaga mashruuca Rust-for-Linux, ayaa soo jeediyay sii deynta qaybaha v6 ee horumarinta aaladaha wadayaasha luqadda Rust si ay tixgaliyaan horumariyeyaasha kernel Linux. Tani waa daabacaaddii toddobaad ee balastarrada, iyadoo la tixgelinayo nuqulkii ugu horreeyay, oo la daabacay iyada oo aan lahayn lambarka nooca. Taageerada miridhku waxa loo tixgaliyaa inay tahay tijaabo, laakiin waxa ay horeba ugu jirtay laanta linux-xigta oo si ku filan loo horumariyay si ay u bilawdo abuurista lakabyo la taaban karo oo ka koraya nidaamyada kernel-ka, iyo sidoo kale qorista darawalada iyo cutubyada. Horumarinta waxaa maalgeliya Google iyo ISRG (Kooxda Cilmi-baarista Amniga Internetka), oo ah aasaasaha mashruuca Aynu Encryption oo kor u qaada HTTPS iyo horumarinta tignoolajiyada si loo hagaajiyo amniga internetka.

Nooca cusub:

  • Qalabka iyo nooc ka mid ah maktabadda alloc, oo laga xoreeyay jiilka suurtagalka ah ee xaalad "argagax" marka khaladaad dhacaan, ayaa la cusboonaysiiyay siidaynta Rust 1.60, kaas oo dejinaya taageerada qaabka "maybe_uninit_extra" ee loo isticmaalo xirmooyinka kernel-ka.
  • Waxaa lagu daray awoodda lagu socodsiiyo imtixaannada dukumeentiyada (tijaabooyin sidoo kale loo adeegsaday tusaale ahaan dukumeentiyada), iyada oo loo marayo isu-beddelka waqtiga-waqtiga ee imtixaannada ku xidhan kernel API ee imtixaannada KUnit ee la fuliyay inta lagu jiro rarka kernel.
  • Shuruudaha ayaa la ansixiyay oo ah in imtixaanadu aysan keenin digniinta Clippy linter, sida code kernel code.
  • Hirgelinta bilowga ah ee moduleka "net" oo leh hawlaha shabakada ayaa la soo jeediyay. Koodhka miridhku wuxuu marin u leeyahay qaab dhismeedka shabakada kernel sida Namespace (oo ku saleysan qaab dhismeedka kernel-ka qaab dhismeedka), SkBuff (qaab dhismeedka sk_buff), TcpListener, TcpStream (goob dhismeed), Ipv4Addr (qaab dhismeedka in_addr), SocketAddrV4 (qaab dhismeedka sockaddr_6) iyo IPsvent. .
  • Waxaa jira taageero bilow ah oo loogu talagalay farsamooyinka barnaamijka asynchronous (async), oo lagu hirgeliyay qaabka kasync moduleka. Tusaale ahaan, waxaad qori kartaa koodka asynchronous si aad u maamusho saldhigyada TCP: async fn echo_server( durdur: TcpStream) -> Natiijooyinka { let mut buf = [0u8; 1024]; loop { ha n = qulqulka. akhri (& mut buf). sug?; haddii n == 0 {soo celi Ok(()); } durdurrada.qor_dhammaan(&buf[..n]) sug?; }
  • Shabakadda lagu daray :: moduleka filter si loo maareeyo filtarrada xirmada shabakada Tusaalaha lagu daray rust_netfilter.rs oo leh shaandhaynta shaandhaynta luqadda Rust
  • Ku darida fulinta smutex mutex fudud :: Mutex, kaas oo aan u baahnayn dhejis.
  • NoWaitLock oo lagu daray, oo aan waligood sugin quful, iyo haddii dun kale lagu qabto, waxay sababtaa khalad in la soo sheego marka la isku dayo in la helo qufulka halkii laga joojin lahaa soo wacaha.
  • RawSpinLock lagu daray, oo lagu aqoonsaday raw_spinlock_t ee kernel-ka, si loogu dabaqo qaybaha aan shaqayn karin.
  • Nooca AREf ee lagu daray tixraacyada shay kaas oo habka tirinta tixraaca loo isticmaalo (had iyo jeer dib loo tiriyo).
  • Rustc_codegen_gcc dhabarka dambe, kaas oo kuu ogolaanaya inaad isticmaasho maktabadda libgccjit ee mashruuca GCC sida koodhka koodhka ee rustc si ay u bixiso rustc taageero naqshadaha iyo hagaajinta laga heli karo GCC, ayaa hirgelisay awoodda bootstrapping compiler rustc. Dhiirigelinta isku-darka macneheedu waa awoodda lagu isticmaalo koodhka ku-salaysan GCC ee rustc si loo dhiso isku-dariyaha rustc laftiisa. Intaa waxaa dheer, sii deynta dhawaanta ee GCC 12.1 waxaa ku jira hagaajinta libgccjit lagama maarmaanka u ah rustc_codegen_gcc inuu si sax ah u shaqeeyo. Diyaargarow ayaa socda si loo bixiyo awoodda lagu rakibo rustc_codegen_gcc iyadoo la adeegsanayo utility rustup.
  • Horumarka laga gaaray horumarinta GCC frontend gccrs iyadoo la adeegsanayo isku-dubaridaha luqadda Rust ee ku salaysan GCC waa la xusay. Waxaa hadda jira laba horumariye oo waqti-buuxa ah oo ka shaqeeya gccrs.

Xusuusnow in isbeddellada la soo jeediyay ay suurtogal ka dhigayaan in la isticmaalo Rust sida luqadda labaad ee horumarinta darawallada iyo qaybaha kernel-ka. Taageerada miridhku waxa loo soo bandhigay sidii ikhtiyaar aan si toos ah u shaqayn oo aan keenin in miridhku lagu daro sidii ku-tiirsanaanta loo baahan yahay ee kernel-ka. Isticmaalka Rust ee horumarinta darawalka waxay kuu oggolaan doontaa inaad abuurto darawallo badbaado leh oo ka wanaagsan oo leh dadaal yar, oo ka madax bannaan dhibaatooyinka sida gelitaanka xusuusta ka dib markii la sii daayo, tilmaameyaal aan waxba lahayn, iyo xad-dhaaf ah.

Badbaadada xusuusta waxaa lagu bixiyaa miridhku marka la ururiyo wakhtiga iyada oo la hubinayo tixraaca, la socodka lahaanshaha shay iyo cimriga shayga (baaxadda), iyo sidoo kale iyada oo loo marayo qiimaynta saxda ah ee helitaanka xusuusta inta lagu jiro fulinta koodka. Daxalku sidoo kale wuxuu ka ilaaliyaa qulqulka isdhaafsiga, wuxuu u baahan yahay bilawga qasabka ah ee qiyamka doorsoomka ka hor intaan la isticmaalin, wuxuu si fiican u maareeyaa khaladaadka maktabadda caadiga ah, wuxuu dabaqaa fikradda tixraacyada aan bedeli karin iyo doorsoomayaasha si caadi ah, waxay bixisaa qorid adag oo adag si loo yareeyo khaladaadka macquulka ah.

Source: opennet.ru

Add a comment