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 publikimin e komponentĂ«ve v6 pĂ«r zhvillimin e drejtorĂ«ve tĂ« pajisjeve nĂ« gjuhĂ«n Rust. Kjo Ă«shtĂ« redaktimi i shtatĂ« i patches, duke marrĂ« parasysh versionin e parĂ«, i publikuar pa numrin e versionit. MbĂ«shtetja pĂ«r Rust konsiderohet eksperimentale, por Ă«shtĂ« pĂ«rfshirĂ« tashmĂ« nĂ« degĂ«n linux-next dhe Ă«shtĂ« mjaft e avancuar pĂ«r tĂ« filluar punĂ«n nĂ« krijimin e shtresave tĂ« abstraksionit mbi nĂ«ndegĂ«t e bĂ«rthamĂ«s, si dhe pĂ«r tĂ« shkruar drejtorĂ« dhe module. 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-it dhe zhvillimin e teknologjive pĂ«r rritjen e sigurisĂ« nĂ« internet.

NĂ« versionin e ri:

  • Mjetet dhe varianti i librit alloc, i liruar nga mundĂ«sitĂ« e gjenerimit tĂ« gjendjes "panic" nĂ« rast gabimesh, janĂ« pĂ«rditĂ«suar nĂ« lĂ«shimin Rust 1.60, nĂ« tĂ« cilin mbĂ«shtetja pĂ«r modalitetin "maybe_uninit_extra" Ă«shtĂ« stabilizuar dhe aplikuar nĂ« patches pĂ«r bĂ«rthamĂ«n.
  • U shtua mundĂ«sia pĂ«r tĂ« ekzekutuar teste nga dokumentacioni (teste qĂ« pĂ«rdoren njĂ«kohĂ«sisht si shembuj nĂ« dokumentacion), pĂ«rmes transformimit gjatĂ« kompilimit tĂ« testeve tĂ« lidhura me API-nĂ« e bĂ«rthamĂ«s nĂ« teste KUnit, tĂ« cilat ekzekutohen gjatĂ« ngarkimit tĂ« bĂ«rthamĂ«s.
  • Shtohen kĂ«rkesat, sipas tĂ« cilave testet nuk duhet tĂ« çojnĂ« nĂ« njoftime tĂ« linters Clippy, si dhe kodi pĂ«r bĂ«rthamĂ«n nĂ« gjuhĂ«n Rust.
  • U propozuar njĂ« implementim fillestar i modulit "net" me funksione rrjetesh. PĂ«r kodin nĂ« gjuhĂ«n Rust ofrohet qasje nĂ« struktura rrjetesh tĂ« bĂ«rthamĂ«s, tĂ« tilla si "Namespace" (bazuar nĂ« strukturĂ«n e 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.
  • U implementua 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Ă« vepron nĂ« mod eksion asinkron pĂ«r manipulimin e TCP-socketĂ«ve: 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?; } }
  • U shtua moduli net::filter pĂ«r manipulimin e filtrave tĂ« paketave rrjetĂ«s. U shtua shembulli rust_netfilter.rs me implementimin e filtrit nĂ« gjuhĂ«n Rust.
  • U shtua implementimi i mutex-it tĂ« thjeshtĂ« smutex::Mutex, qĂ« nuk kĂ«rkon lidhje (pinning).
  • U shtua bllokimi NoWaitLock, i cili nuk shkakton kurrĂ« pritje pĂ«r çlirimin, dhe nĂ« rast se Ă«shtĂ« zĂ«nĂ« nga njĂ« thread tjetĂ«r, jep njĂ« gabim kur tentoni tĂ« merrni bllokimin nĂ« vend qĂ« tĂ« ndaloni thirrĂ«sin.
  • U shtua bllokimi RawSpinLock i barabartĂ« me raw_spinlock_t nĂ« bĂ«rthamĂ«, i cili pĂ«rdoret pĂ«r seksionet qĂ« nuk mund tĂ« jenĂ« nĂ« njĂ« gjendje pritjeje.
  • U shtua tipi ARef pĂ«r referencat nĂ« objektin, tĂ« cilit i aplikohet mekanizmi i numĂ«rimit tĂ« referencave (always-refcounted).
  • NĂ« backend-in rustc_codegen_gcc, qĂ« lejon pĂ«rdorimin e bibliotekĂ«s libgccjit nga projekti GCC si gjenerues kodi nĂ« rustc pĂ«r tĂ« siguruar mbĂ«shtetje nĂ« rustc pĂ«r arkitekturĂ«n dhe optimizimet nĂ« GCC, Ă«shtĂ« realizuar mundĂ«sia e bootstrapping-ut tĂ« kompajlerit rustc. Me bootstrapping kuptohet pĂ«rdorimi nĂ« rustc tĂ« gjeneruesit tĂ« kodit tĂ« bazuar nĂ« GCC pĂ«r ndĂ«rtimin e kompajlerit vetĂ« rustc. PĂ«r mĂ« tepĂ«r, nĂ« daljen e fundit GCC 12.1 janĂ« pĂ«rfshirĂ« rregullimet nĂ« libgccjit e nevojshme pĂ«r funksionimin e duhur tĂ« rustc_codegen_gcc. Po pĂ«rgatitet mundĂ«sia e instalimit tĂ« rustc_codegen_gcc me ndihmĂ«n e utilitarit rustup.
  • Po shĂ«nohet progresi nĂ« zhvillimin e GCC-front-end-it gccrs me implementimin e kompajlerit tĂ« gjuhĂ«s Rust mbi GCC. Aktualisht, dy zhvillues janĂ« duke punuar nĂ« gccrs nĂ« njĂ« modalitet tĂ« plotĂ« punues.

Kujtojmë se ndryshimet e propozuara japin mundësinë për të përdorur Rust si gjuhën e dytë për zhvillimin e drejtorive dhe moduleve të bërthamës. Mbështetja për Rust paraqitet si një opsion, i cili nuk është aktiv me parazgjedhje dhe nuk çon në përfshirjen e Rust në listën e varësive të detyrueshme për ndërtimin e bërthamës. Përdorimi i Rust për zhvillimin e drejtorive do të lejojë krijimin e drejtorive të sigurta dhe më të kualitetshme me minimumin e mundimeve, duke eliminuar probleme si manipulimi me hapësirën e memories pas lirimit të saj, dereferencimi i pikave null dhe tejkalimi i kufijve të tamponit.

Trajtimi i sigurt i memories garantohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve dhe marrëveshjes së kohëzgjatjes së objekteve (zona e dukshmërisë), si dhe përmes vlerësimit të saktësisë së qasjes në memory gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga mbushjet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave përpara përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton konceptin e referencave dhe variablave të pazëvendësueshëm (immutable) si standard, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.

Burimi: opennet.ru

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