Versioni i gjashtë i patches për bërthamën Linux me mbështetje për gjuhën Rust

Miguel Ojeda, autori i projektit Rust-for-Linux, propozoi pĂ«r shqyrtim nga zhvilluesit e bĂ«rthamĂ«s Linux lĂ«shimin e komponentĂ«ve v6 pĂ«r zhvillimin e drejtorĂ«ve tĂ« pajisjeve nĂ« gjuhĂ«n Rust. Ky Ă«shtĂ« edicioni i shtatĂ« i patches qĂ« merr parasysh variantin e parĂ«, i botuar pa numĂ«r versioni. MbĂ«shtetja pĂ«r Rust konsiderohet eksperimentale, por tashmĂ« Ă«shtĂ« pĂ«rfshirĂ« nĂ« degĂ«n linux-next dhe Ă«shtĂ« mjaft e zhvilluar pĂ«r t'u filluar puna pĂ«r krijimin e niveleve tĂ« abstraksionit mbi nĂ«n-sistemĂ«t e bĂ«rthamĂ«s, si dhe pĂ«r shkrimin e drejtorĂ«ve dhe moduleve. Zhvillimi financohet nga kompania Google dhe organizata ISRG (Internet Security Research Group), e cila Ă«shtĂ« themeluesi i projektit Let’s Encrypt dhe ndihmon nĂ« promovimin e HTTPS dhe zhvillimin e teknologjive pĂ«r tĂ« rritur sigurinĂ« e internetit.

Në këtë version të ri:

  • Instrumenti dhe varianti i bibliotekĂ«s alloc, i çliruar nga gjenerimet e mundshme tĂ« gjendjes "panic" nĂ« rast tĂ« gabimeve, janĂ« pĂ«rditĂ«suar nĂ« lĂ«shimin Rust 1.60, nĂ« tĂ« cilin Ă«shtĂ« stabilizuar mbĂ«shtetja pĂ«r modin "maybe_uninit_extra", e cila pĂ«rdoret nĂ« patches pĂ«r bĂ«rthamĂ«n.
  • Shtuar mundĂ«sia e ekzekutimit tĂ« testeve nga dokumentacioni (testet, tĂ« pĂ«rdorura gjithashtu si shembuj nĂ« dokumentacion), pĂ«rmes transformimit gjatĂ« kompilimit tĂ« testeve tĂ« lidhura me API-nĂ« e bĂ«rthamĂ«s, nĂ« teste KUnit, tĂ« ekzekutuara gjatĂ« ngarkimit tĂ« bĂ«rthamĂ«s.
  • Pranohen kĂ«rkesat, sipas tĂ« cilave testet nuk duhet tĂ« çojnĂ« nĂ« daljen e paralajmĂ«rimit tĂ« analizuesit Clippy, ashtu si edhe kodi pĂ«r bĂ«rthamĂ«n nĂ« gjuhĂ«n Rust.
  • Propozohet njĂ« implementim fillestar i moduli "net" me funksione rrjetesh. PĂ«r kodin nĂ« gjuhĂ«n Rust ofrohet akses nĂ« struktura rrjeti tĂ« bĂ«rthamĂ«s, si "Namespace" (nĂ« bazĂ« tĂ« strukturĂ«s sĂ« bĂ«rthamĂ«s "struct net"), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) dhe ekuivalentĂ«t e tyre pĂ«r IPv6.
  • Implementohet mbĂ«shtetje fillestare pĂ«r metodat e programimit asinkron (async), e realizuar nĂ« formĂ«n e modulit kasync. PĂ«r shembull, mund tĂ« krijoni kod qĂ« funksionon nĂ« mĂ«nyrĂ« asinkrone pĂ«r manipulimin me TCP-sockets: 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?; } }
  • Shtuar moduli net::filter pĂ«r manipulimin e filtreve tĂ« paketave rrjetike. Shtuar njĂ« shembull rust_netfilter.rs me implementimin e filtrit nĂ« gjuhĂ«n Rust.
  • Shtuar implementimi i njĂ« mutexi tĂ« thjeshtĂ« smutex::Mutex, qĂ« nuk kĂ«rkon lidhje (pinning).
  • Shtuar njĂ« bllokim NoWaitLock, i cili kurrĂ« nuk çon nĂ« pritje pĂ«r çlirimin, dhe nĂ« rast se merret nga njĂ« thread tjetĂ«r çon nĂ« daljen e njĂ« gabimi kur pĂ«rpiqet tĂ« marrĂ« bllokimin nĂ« vend tĂ« ndaljes sĂ« thirrĂ«sit.
  • Shtuar njĂ« bllokim RawSpinLock i identifikuar me raw_spinlock_t nĂ« bĂ«rthamĂ«, e cila aplikohet nĂ« seksionet qĂ« nuk mund tĂ« jenĂ« nĂ« gjendje pritjeje.
  • Shtuar tipin ARef pĂ«r referencat nĂ« objektin, duke aplikuar mekanizmin e numĂ«rimit tĂ« referencave (always-refcounted).
  • NĂ« backend-in rustc_codegen_gcc, qĂ« lejon pĂ«rdorimin e bibliotekĂ«s libgccjit nga projekti GCC si njĂ« gjenerator kodi nĂ« rustc pĂ«r tĂ« siguruar mbĂ«shtetje nĂ« rustc pĂ«r arkitekturĂ«n dhe optimizimet e disponueshme nĂ« GCC, Ă«shtĂ« realizuar mundĂ«sia e bootstrapping-ut tĂ« kompilerit rustc. Bootstrapping e kompilerit nĂ«nkupton mundĂ«sinĂ« e pĂ«rdorimit nĂ« rustc tĂ« gjeneratorit tĂ« kodit tĂ« bazuar nĂ« GCC pĂ«r ndĂ«rtimin e vetĂ« kompilerit rustc. PĂ«r mĂ« tepĂ«r, nĂ« lĂ«shimin e fundit tĂ« GCC 12.1 janĂ« pĂ«rfshirĂ« rregullimet nĂ« libgccjit, tĂ« nevojshme pĂ«r funksionimin e duhur tĂ« rustc_codegen_gcc. Po pĂ«rgatitet mundĂ«sia e instalimit tĂ« rustc_codegen_gcc pĂ«rmes utilitetit rustup.
  • Raportohet pĂ«rparimi nĂ« zhvillimin e front-end-it GCC gccrs me implementimin e kompilerit tĂ« gjuhĂ«s Rust tĂ« bazuar nĂ« GCC. Aktualisht, mbi gccrs janĂ« duke punuar dy zhvillues nĂ« modin e plotĂ« tĂ« punĂ«s.

Kujtojme se ndryshimet e propozuara ofrojnë mundësinë e përdorimit të Rust si gjuhë të dytë për zhvillimin e drejtuesve dhe moduleve të bërthamës. Mbështetja për Rust paraqitet si një opsion, i cili nuk aktivizohet nga parazgjedhja dhe nuk çon në përfshirjen e Rust në numrin e varësive të detyrueshme për ndërtimin e bërthamës. Përdorimi i Rust për zhvillimin e drejtuesve do të lejojë krijimin e drejtuesve të sigurt dhe më të kualitetshëm me përpjekje minimale, duke eliminuar probleme si përdorimi i hapësirës së memories pas lirimit të saj, dereferencimi i treguesve null dhe tejkalimi i kufijve të tamponit.

Funksionaliteti i sigurt i punës me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve dhe llogaritjes së kohëzgjatjes së jetës së objekteve (fusha e dukshmërisë), si dhe përmes vlerësimit të saktësisë së aksesit në memorie gjatë ekzekutimit të kodit. Rust ofron gjithashtu mjete për mbrojtjen nga tejkalimet e numrave të tërë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton konceptin e referencave dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron një tipizim statik të fortë për të minimizuar gabimet logjike.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster