Linuxi tuuma kuuenda versiooni plaastrid Rust keele toe jaoks

Miguel Ojeda, Rust-for-Linux projekti autor, pakkus Linuxi tuuma arendajatele arutamiseks vĂ€lja Rusti seadmete draiverite arendamiseks mĂ”eldud komponentide versiooni 6. See on seitsmes versioonikandmata plaastrite vĂ€ljaanne, mis pĂ”hineb esimesel variandil, mis avaldati versioonita. Rusti tugi on eksperimenteerimise all, kuid see on juba lisatud linux-next haru ja on piisavalt arenenud, et alustada abstraktsioonikihtide loomist tuuma alamsĂŒsteemide ĂŒle ning kirjutada draivereid ja mooduleid. Arendust toetab Google ja ISRG (Internet Security Research Group), kes on Let's Encrypt projekti asutaja ja toetab HTTPS-i, edendades tehnoloogiaid interneti turvalisuse suurendamiseks.

Uues versioonis:

  • Tööriistakomplekt ja alloc-teegi variant, mis on vabastatud vĂ”imalusest, et tekkida vĂ”ib «panic» olek, on vĂ€rskendatud Rusti versioonile 1.60, kus stabiliseerus toetus «maybe_uninit_extra» reĆŸiimile, mida kasutatakse tuuma plaastrites.
  • Dokumendist testide kĂ€ivitamise vĂ”imalus on lisatud (testid, mida kasutatakse samal ajal dokumentatsiooni nĂ€idistena), transformeerides tuuma API-le toetuvad testid KUnit testideks, mida kĂ€itatakse tuuma laadimise ajal.
  • NĂ”uded on vastu vĂ”etud, mille kohaselt testid ei tohi pĂ”hjustada Clippy linteri hoiatusi, nagu ka Rusti keeles kirjutatud tuuma kood.
  • Pakuti vĂ€lja «net» mooduli algne rakendus, mis sisaldab vĂ”rgufunktsioone. Rusti koodile on antud juurdepÀÀs tuuma sellistele vĂ”rgu struktuuridele nagu «Namespace» (tuginedes tuuma struktuurile «struct net»), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) ning nende vastetele IPv6 jaoks.
  • Ellu on viidud algne tugi asĂŒnkroonsete programmeerimismeetodite (async) jaoks, mis on rakendatud kasync mooduli kujul. NĂ€iteks on vĂ”imalik luua asĂŒnkroonselt töötav kood TCP-soketite manipuleerimiseks: async fn echo_server(stream: TcpStream) -> Result { let mut buf = [0u8; 1024]; loop { let n = stream.read(&mut buf).await?; if n == 0 { return Ok(()); } stream.write_all(&buf[..n]).await?; } }
  • Lisatud moodul net::filter vĂ”rgu paketifiltrite manipuleerimiseks. Lisatud nĂ€ide rust_netfilter.rs, mis Ń€Đ”Đ°Đ»ĐžĐ·ŃƒĐ”Ń‚ Ń„ĐžĐ»ŃŒŃ‚Ń€ ĐœĐ° ŃĐ·Ń‹ĐșĐ” Rust.
  • Lisatud lihtsa mĂŒĂŒri smutex::Mutex teostus, mis ei nĂ”ua sidumist (pinning).
  • Lisatud lukustus NoWaitLock, mis ei pĂ”hjusta kunagi ootamise vabastamist, ja kui mĂ”ni muu lĂ”ng on hĂ”ivatud, nĂ€itab see lukustuse saamise katse korral viga, selle asemel et peatada kutset.
  • Lisatud RawSpinLock, mis on seotud raw_spinlock_t tuumaga, ja seda kasutatakse sektsioonides, mis ei saa olla ooteolekus.
  • Lisatud ARef tĂŒĂŒp objektide viidetele, millele rakendatakse viidete arvu arvestamise mehhanism (always-refcounted).
  • Rustc_codegen_gcc tagab, et rakendus GCC raamatukogu libgccjit on rustc koodi generaator, et toetada mevcut GCC arhitektuure ja optimeerimisi. Rustc kompilaatori bootstrappingu vĂ”imalus on ellu viidud, mis tĂ€hendab, et rustc kasutab GCC pĂ”hjal pĂ”hinevat koodi generaatorit enda kokku panemiseks. Lisaks, hiljutises GCC 12.1 vĂ€ljaandes on tehtud parandusi libgccjit-is, mis on rustc_codegen_gcc korrektse töö tagamiseks vajalikud. Preparatsioonid rustc_codegen_gcc installimise vĂ”imaluse loomiseks rustupi tööriista kaudu on kĂ€imas.
  • GCC esiotsa gccrs arendamine on mĂ€rkimisvÀÀrselt edenenud, rakendades Rust keele kompilaatorit GCC alusel. Praegu töötab gccrs-i tĂ€ieliku töö reĆŸiimis kaks arendajat.

Tuletame meelde, et ettepanekud muudatused vĂ”imaldavad kasutada Rusti teise keele kui draiverite ja tuuma moodulite arendamiseks. Rusti toetus on esitatud valikuna, mis pole vaikimisi aktiveeritud ja ei too kaasa Rusti lisamist tuuma kohustuslikesse koostamise sĂ”ltuvustesse. Rusti kasutamine draiverite arendamiseks vĂ”imaldab minimaalse vaevaga luua turvalisi ja kvaliteetseid draivereid, vabanedes sellistest probleemidest nagu mĂ€luprobleemide juurde pÀÀsemine pĂ€rast nende vabastamist, nullviidete de-referentsimine ja mĂ€lupuhvri piiride ĂŒletamine.

Rust tagab mĂ€luga ohutu töö kompileerimise ajal viidete kontrollimise, objektide omandi jĂ€lgimise ja objektide eluea (nĂ€htavuse) arvestamise kaudu ning hindab koodi kĂ€ivitamise ajal mĂ€lule juurdepÀÀsu Ă”igust. Rust pakub ka vahendeid tĂ€isarvude ĂŒletĂ€itumise kaitsmiseks, nĂ”uab muutuja vÀÀrtuste kohustuslikku algvÀÀrtustamist enne kasutamist, kĂ€sitleb vigu paremini standardraamatukogus, rakendab muutujaid ja viiteid vaikimisi muutumatuks (immutable) ning pakub tugevat staatilist tĂŒĂŒbi mÀÀramist loogiliste vigade vĂ€hendamiseks.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster