Twazyèm edisyon patch pou nwayo Linux ak sipò pou lang Rust la

Miguel Ojeda, otè pwojè Rust-for-Linux, te pwopoze yon opsyon twazyèm eleman pou devlope chofè aparèy nan lang Rust pou devlopè nwayo Linux yo konsidere. Yo konsidere sipò Rust kòm eksperimantal, men li deja dakò pou enkli nan branch linux-next la. Devlopman an finanse pa Google ak ISRG (Gwoup Rechèch Sekirite Entènèt), ki se fondatè pwojè Let's Encrypt epi ankouraje HTTPS ak devlopman teknoloji pou amelyore sekirite Entènèt.

Sonje byen, chanjman yo pwopoze yo fè li posib pou itilize Rust kòm yon dezyèm lang pou devlope chofè ak modil nwayo. Yo prezante sipò Rust kòm yon opsyon ki pa aktive pa default epi ki pa lakòz yo enkli Rust kòm yon depandans konstriksyon obligatwa pou nwayo a. Sèvi ak Rust pou devlopman chofè pral pèmèt ou kreye chofè ki pi an sekirite ak pi bon ak efò minim, san pwoblèm tankou aksè memwa apre yo fin libere, dereferans pointeur nil, ak depase tanpon.

Sekirite memwa yo bay nan Rust nan moman konpile atravè tcheke referans, kenbe tras nan pwopriyetè objè a ak tout lavi objè a (dimansyon), osi byen ke nan evalyasyon kòrèk aksè nan memwa pandan ekzekisyon kòd. Rust tou bay pwoteksyon kont debòde nonb antye relatif, mande pou inisyalizasyon obligatwa nan valè varyab anvan ou itilize, okipe erè pi byen nan bibliyotèk estanda a, aplike konsèp nan referans imuiabl ak varyab pa default, ofri fò sezisman estatik pou minimize erè lojik.

Nouvo vèsyon patch yo kontinye elimine kòmantè yo te fè pandan diskisyon premye ak dezyèm vèsyon patch yo. Chanjman ki pi remakab yo:

  • Yo te fè yon tranzisyon pou sèvi ak lage ki estab nan Rust 1.57 kòm konpilatè referans la epi yo te bay yon lyen ak edisyon estabilize nan lang Rust 2021. Anvan sa, patch yo te mare nan branch beta nan Rust epi yo te itilize kèk karakteristik lang ki yo te klase kòm enstab. Tranzisyon an nan spesifikasyon Rust 2021 te pèmèt nou kòmanse travay pou evite itilize karakteristik enstab sa yo nan plak tankou const_fn_transmute, const_panic, const_unavailable_unchecked ak core_panic ak try_reserve.
  • Devlopman vèsyon alok nan bibliyotèk Rust ki enkli nan plak yo kontinye, modifye pou elimine fonksyon alokasyon memwa posib jenerasyon eta "panik" lè erè rive, tankou memwa. Nouvo vèsyon an aplike opsyon "no_rc" ak "no_sync" pou enfim fonksyonalite ki pa itilize nan kòd Rust nwayo a, sa ki fè bibliyotèk la plis modilè. Travay ap kontinye ak devlopè alok prensipal yo, ki vize a transfere chanjman ki nesesè pou nwayo a nan bibliyotèk prensipal la. Opsyon "no_fp_fmt_parse" ki nesesè pou bibliyotèk la travay nan nivo nwayo a, te deplase nan bibliyotèk baz Rust (nwayo).
  • Yo netwaye kòd la pou debarase m de avètisman konpilatè posib lè w ap bati nwayo a nan mòd CONFIG_WERROR. Lè kòd konstriksyon nan Rust, lòt mòd dyagnostik du ak avètisman Clippy linter yo aktive.
  • Abstraksyon yo pwopoze pou itilize nan kòd Rust pou seqlocks (lock sekans), apèl callback pou jesyon pouvwa, I/O memwa (readX/writeX), entèwonp ak moun kap okipe fil, GPIO, aksè nan aparèy, chofè ak kalifikasyon.
  • Zouti yo pou devlopman chofè yo te elaji pou enkli mutex relocatable, bit iterators, senplifye lyezon pointeur, amelyore dyagnostik fay, ak done otobis endepandan enfrastrikti.
  • Travay amelyore ak lyen lè l sèvi avèk yon kalite Ref senplifye, ki baze sou refcount_t backend la, ki itilize API nwayo a ki gen menm non pou konte referans. Yo retire sipò pou kalite Arc ak Rc yo bay nan bibliyotèk estanda allok la epi li pa disponib nan kòd ki egzekite nan nivo nwayo (yo te prepare opsyon pou bibliyotèk la li menm ki enfim kalite sa yo).
  • Patch yo gen ladan yon vèsyon chofè PL061 GPIO, reekri nan Rust. Yon karakteristik espesyal nan chofè a se ke aplikasyon li prèske liy pa liy repete chofè a GPIO ki deja egziste nan lang C a. Pou devlopè ki vle fè konesans ak kreye chofè nan Rust, yo te prepare yon konparezon liy pa liy ki pèmèt yo konprann ki konstriksyon nan Rust kòd C konvèti an.
  • Kodbaz prensipal Rust la te adopte rustc_codegen_gcc, yon backend rustc pou GCC ki aplike konpilasyon avan lè (AOT) lè l sèvi avèk bibliyotèk libgccjit. Avèk bon devlopman nan backend la, li pral pèmèt ou kolekte kòd la Rust ki enplike nan nwayo a lè l sèvi avèk GCC.
  • Anplis ARM, Google ak Microsoft, Red Hat te eksprime enterè pou itilize lang Rust nan nwayo Linux la. Se pou nou sonje ke Google dirèkteman bay sipò pou Rust pou pwojè Linux la, ap devlope yon nouvo aplikasyon nan mekanis kominikasyon entèprosesis Binder nan Rust, epi li ap konsidere posiblite pou retravay divès chofè nan Rust. Microsoft te kòmanse aplike chofè pou Hyper-V nan Rust. ARM ap travay pou amelyore sipò Rust pou sistèm ki baze sou ARM. IBM te aplike sipò Rust nan nwayo a pou sistèm PowerPC.

Sous: opennet.ru

Add nouvo kòmantè