Redaktimi i tretë i patch-eve 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 një variant të tretë të komponentëve për zhvillimin e drejtorive të pajisjeve në gjuhën Rust. Mbështetja për Rust konsiderohet si eksperimenti, por tashmë është miratuar për t'u përfshirë në degën linux-next. Zhvillimi financohet nga kompania Google dhe organizata ISRG (Grupi për Kërkimin e Sigurisë në Internet), e cila është themeluesi i projektit Let’s Encrypt dhe nxit avancimin e HTTPS dhe zhvillimin e teknologjive për përmirësimin e sigurisë së internetit.

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.

Në variantin e ri të patch-eve vazhdohet përmirësimi i vërejtjeve të shprehura gjatë diskutimeve të versioneve të para dhe të dyta të patch-eve. Ndryshimet më të dukshme janë:

  • Êshtë realizuar kalimi në përdorimin si kompilator referencë të versionit stabil Rust 1.57 dhe është siguruar lidhja me versionin e stabilizuar të gjuhës Rust 2021. Më parë, patch-et ishin lidhur me degën beta të Rust dhe përdornin disa mundësi të gjuhës që përfshiheshin në kategorinë e paqëndrueshme. Kalimi në specifikimin Rust 2021 lehuar të fillonte punën për të dalë nga përdorimi në patch-e të mundësive të paqëndrueshme si const_fn_transmute, const_panic, const_unreachable_unchecked dhe core_panic dhe try_reserve.
  • Është vazhduar zhvillimi i versionit të bibliotekës Rust alloc, i integruar në patches, i modifikuar për të eliminuar funksionet e shpërndarjes së memories nga gjeneratat e mundshme të gjendjes "panic" në rast të gabimeve, siç është mungesa e memories. Në versionin e ri janë realizuar opsionet "no_rc" dhe "no_sync" për të ç aktivizuar funksionalitetin që nuk përdoret në kodin Rust për kernelin, duke e bërë bibliotekën më modulare. Vazhdon puna me zhvilluesit kryesorë të alloc, e cila ka si qëllim transferimin e ndryshimeve të nevojshme për kernelin në përbërjen kryesore të bibliotekës. Opsioni "no_fp_fmt_parse", i nevojshëm për funksionimin e bibliotekës në nivelin e kernelit, është transferuar në bibliotekën bazë Rust (core).
  • Është bërë pastrimi i kodit për të eliminuar njoftimet e mundshme të kompilatorit gjatë ndërtimit të kernelit në mënyrën CONFIG_WERROR. Gjatë ndërtimit të kodit në gjuhën Rust janë përfshirë modet diagnostikuese shtesë të kompilatorit dhe njoftime të linters Clippy.
  • Janë propozuar abstraksione për përdorim në kodin Rust të bllokimeve seqlock (bllokime sekuencash), thirrjeve callback për menaxhimin e energjisë, I/O Memory (readX/writeX), përpunuesve të ndërprerjeve dhe këndvështrimeve, GPIO, aksesin në pajisje, drejtuesit dhe kredencialet.
  • Janë zgjeruar mjetet për zhvillimin e drejtuesve duke angazhuar mutex të zhvendosur, iterues të bitëve, lidhje të thjeshta mbi treguesit, diagnostikë të përmirësuar të dështimeve dhe një infrastrukturë të pavarur nga autobusi i të dhënave.
  • Është përmirësuar puna me referencat përmes një tipi të thjeshtuar Ref, i bazuar në backendin refcount_t, i cili përdor API-në e njëjtë të kernelit për numërimin e referencave. Mbështetje për tipet Arc dhe Rc, të ofruara në bibliotekën standarde alloc, është hequr dhe nuk është e disponueshme në kodin që ekzekutohet në nivelin e kernelit (për bibliotekën vetë janë përgatitur opsione për të ç aktivizuar këto tipe).
  • Në përbërjen e patches është shtuar një variant drejtuesi PL061 GPIO, i ri-shkruar në Rust. Veçoria e drejtuesit është se realizimi i tij përsërit praktikisht rresht për rresht drejtuesin ekzistues GPIO në gjuhën C. Për zhvilluesit që dëshirojnë të njohin krijimin e drejtuesve në Rust, është përgatitur një krahasim rresht për rresht, që lejon të kuptojnë se në cilat konstrukte në Rust është transformuar kodi në C.
  • Në bazën e kodit kryesor të Rust është pranuar rustc_codegen_gcc, backend-i rustc për GCC, që implementon mundësinë e kompilimit të parashikueshëm (AOT) duke përdorur bibliotekën libgccjit. Me zhvillimin e duhur të backend-it, ai do të lejojë ndërtimin e kodit të angazhuar në bërthama Rust duke përdorur GCC.
  • Përveç kompanive ARM, Google dhe Microsoft, interesi për përdorimin e gjuhës Rust në bërthamën Linux është shprehur nga kompania Red Hat. Kujtojmë se Google ofron mbështetje të drejtpërdrejtë për projektin Rust for Linux, zhvillon një realizim të ri të mekanizmit të ndërveprimit midis proceseve Binder në Rust dhe shqyrton mundësinë e ripërpunimit të disa driverëve të ndryshëm në Rust. Kompania Microsoft ka filluar implementimin e driverëve për Hyper-V në Rust. Kompania ARM po punon për të përmirësuar mbështetje për Rust për sistemet e bazuara në procesorët ARM. Kompania IBM ka realizuar mbështetje për Rust në bërthamë për sistemet PowerPC.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster