Josh Triplett, zaposlenik tvrtke Intel i član odbora koji nadzire razvoj Crates.io, na svom je izlaganju na konferenciji Open Source Technology Summit formirao radnu grupu usmjerenu na dovođenje jezika Rust do pariteta s jezikom C u području sistemskog programiranja.
U radnoj grupi koja se trenutno formira, programeri Rusta zajedno s inženjerima iz tvrtke Intel pripremit će specifikacije koje definiraju funkcionalnosti koje je potrebno implementirati u Rust za sistemsko programiranje. Sistemsko programiranje često zahtijeva nisko razine manipulacije, poput izvršavanja privilegiranih procesorskih instrukcija i dobivanja detaljnih informacija o stanju procesora. Od mogućnosti koje se već razvijaju za Rust, ističe se podrška za neimenovane strukture, unije (union), asembler umetke (makro „asm!“) i format brojeva s pomičnom točkom BFLOAT16.
Josh smatra da je budućnost sistemskog programiranja u Rustu, dok je jezik C u današnjim okolnostima lišen pozicije koju je prije zauzimao Assembler. Rust
ne samo da oslobađa programere od problema inherentnih jeziku C koji proizlaze iz niskog nivoa rada s memorijom, već nudi i mogućnost primjene u razvoju modernih paradigmi programiranja.
Tijekom nastupa
Josh je iznosio ideju o dodavanju mogućnosti razvoja drajvera na jeziku Rust u Linux kernel, što će omogućiti stvaranje sigurnih i kvalitetnijih drajvera s minimalnim naporom, oslobađajući ih problema poput pristupanja memoriji nakon što je oslobođena, dereferenciranja nulte pokazivače i prekoračenja granica bafera.
Greg Kroah-Hartman, zadužen za podršku stabilnoj grani Linux kernela, izrazio je spremnost dodati framework za razvoj drajvera na jeziku Rust u kernel, ako će imati stvarne prednosti u odnosu na C, na primjer, pružanjem sigurnih omota preko kernel API-ja. Osim toga, Greg ovaj framework razmatra samo kao opciju, koja nije aktivna prema zadanim postavkama, kako ne bi uključio Rust među stvaralačke ovisnosti kernela.
Ispostavilo se da nekoliko timova već radi na ovom pravcu. Na primjer, programeri iz tvrtke „Fish in a Barrel“ alat za pisanje učitljivih modula za Linux jezgru u Rust jeziku, koristeći skup apstraktnih slojeva iznad sučelja i struktura jezgre za poboljšanje sigurnosti. Slojevi se automatski generiraju na temelju postojećih zaglavlja jezgre pomoću alata . Za izradu slojeva koristi se Clang. Učitani moduli uz slojeve koriste paket staticlib.
Paralelno još jedan projekt fokusiran na razvoj drajvera za ugrađene sustave i uređaje interneta stvari, koji također koristi bindgen za generiranje slojeva na temelju zaglavlja jezgre. Okvir omogućuje poboljšanje sigurnosti drajvera bez izmjena u jezgru — umjesto kreiranja dodatnih razina izolacije unutar jezgre, predlaže se rješavanje problema već u fazi kompilacije, koristeći sigurniji jezik Rust. Očekuje se da bi takav pristup mogao biti zanimljiv proizvođačima hardvera koji razvijaju vlasničke drajvere u žurbi bez odgovarajuće revizije.
Nije sva zamišljena funkcionalnost još uvijek realizirana, ali okvir je već sasvim prikladan za rad i korišten je za pisanje radnog drajvera za Ethernet kontroler LAN9512 USB, isporučenog s pločicom Raspberry Pi 3. Kao referentna implementacija za pisanje Rust drajvera korišten je postojeći drajver smsc95xx, napisan na jeziku C. Primijećeno je da su veličina modula i troškovi od runtime komponenata pri razvoju drajvera na Rust-u neznatni, što omogućuje korištenje okvira za uređaje s ograničenim resursima.
Izvor: opennet.ru
