A Linux 7.2 bevezeti a Rust Zerocopy könyvtárat, hogy még több „unsafe” kódot száműzzön

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A Rust változtatások most különösen nagyok, mert bekerül a „zerocopy” könyvtár. Ez lehetővé teszi, hogy további „unsafe” Rust kódrészeket dobjanak ki a kernel-ból. A Rust pull request így foglalja össze a Zerocopy integrálását:


„Támogatást vezetünk be a ‘zerocopy’ könyvtárhoz:

Gyors, biztonságos, fordítási hiba. Válassz kettőt.

A Zerocopy erőfeszítés nélkül teszi lehetővé a nulla költségű memóriakezelést. Mi írjuk meg az unsafe részeket, hogy neked ne kelljen.

Lényegében származtatható traitek (például ‘FromBytes’) és makrók (például ‘transmute!’) készletét adja, amelyekkel bájtsorozatok és más típusok között lehet biztonságosan konvertálni. Ilyen támogatással több ‘unsafe’ kódot is el tudunk távolítani.

A Rust crate-ek egyik leggyakrabban letöltött darabja, és magát a Rust fordítót is használja.

A licence: „BSD-2-Clause OR Apache-2.0 OR MIT”.

A crate-eket gyakorlatilag változtatás nélkül vettük át (csak +2/-3 sort kellett hozzáaptni), plusz az SPDX azonosítókat. Az upstream azóta szintén hozzáadta az SPDX azonosítókat, illetve az egyik módosítást a kérésemre, így a jövőbeni diffjeink az update-eknél kisebbek lesznek – a részleteket a szokásos élő listáink egyikében vezetem.

Összesen nagyjából ~39 ezer új sor került be, ~32 ezer, ha nem számoljuk a ‘benches/’ könyvtárat, ami csak dokumentációs célokat szolgál.

A sorozat tartalmaz néhány Kbuild- és Rust-analyzer-fejlesztést, valamint egy példajavítást a Novához, amely egy ‘unsafe impl’-et távolít el.

Ellenőriztem, hogy egy elszigetelt példafüggvény (ami hasonlít a Nova patchre) kódgenerálása gyakorlatilag azonos. Ráadásul kiderült, hogy (ebben a konkrét esetben) a ‘zerocopy’-s változatnak, még ‘debug-assertions’ bekapcsolása mellett sincs több futásidejű pánikja, szemben a jelenlegi kóddal (mivel a fordító statikusan be tudja bizonyítani a megmaradt ‘ub_checks’ helyességét).

Vagyis a „gyors, biztonságos” ígéretük tényleg megállja a helyét – legalábbis ebben az esetben.”

A Zerocopy beemelése mellett, amely a konverziók körüli „unsafe” kód kezelését javítja, a Linux 7.2 Rust kódja már támogatja az AutoFDO-t is. A Rust kernel kód így kihasználhatja a fordító Automatic Feedback Directed Optimization képességeit, ami jobb teljesítményt eredményez. A Rust Binder kód esetében körülbelül 13%-os teljesítménykülönbséget mértek. Megjelent a Rust támogatás a szoftveres, tag-alapú kernel Address Sanitizerhez (KASAN), a közelgő Rust 1.98 release támogatása, valamint további fejlesztések is. A Linux 7.2 merge windowjára beküldött Rust funkcióváltoztatások teljes listája elérhető itt: beolvasztási kérelem.