Josh Triplett, care lucrează la Intel și face parte din comitetul care supraveghează dezvoltarea Crates.io, a declarat la conferința Open Source Technology Summit un grup de lucru destinat aducerii limbajului Rust la paritate cu limbajul C în domeniul programării sistemice.
În grupul de lucru, care este în proces de formare, dezvoltatorii Rust, împreună cu inginerii de la Intel, vor elabora specificații care stabilesc funcționalitățile ce trebuie implementate în Rust pentru programarea sistemică. Programarea sistemică necesită adesea manipulări de nivel scăzut, cum ar fi executarea instrucțiunilor privilegiate ale procesorului și obținerea detaliilor despre starea acestuia. Printre posibilitățile deja dezvoltate pentru Rust se numără suportul pentru structuri fără nume, uniuni (union), inserții în asamblor (macro „asm!”) și formatul de numere în virgulă mobilă BFLOAT16.
Josh consideră că viitorul programării sistemice aparține Rust, iar limbajul C, în realitățile contemporane, aspiră la locul pe care în anii trecuți îl ocupa Asamblorul. Rust
nu doar că îi scutește pe dezvoltatori de problemele întâmpinate în limbajul C datorită manipulării de nivel scăzut a memoriei, dar oferă și oportunități de aplicare în dezvoltarea paradigmelor moderne de programare.
În cursul a discursului
Josh a propus adăugarea în nucleul Linux a posibilității de a dezvolta drivere în limbajul Rust, ceea ce va permite crearea de drivere sigure și de calitate superioară cu un efort minim, fără probleme precum accesul la zone de memorie după ce aceasta a fost eliberată, dereferirea pointerilor nuli și depășirea limitelor buffer-ului.
Greg Kroah-Hartman, responsabil pentru suportul versiunii stabile a nucleului Linux, a exprimat disponibilitatea de a adăuga un cadru pentru dezvoltarea driverelor în limbajul Rust în nucleu, dacă acesta va avea avantaje reale comparativ cu C, de exemplu, va oferi legături sigure peste API-ul nucleului. În plus, Greg consideră că acest cadru ar trebui să fie o opțiune, nu activă din start, pentru a nu include Rust în lista dependențelor de compilare ale nucleului.
Se pare că mai multe echipe lucrează deja în această direcție. De exemplu, dezvoltatorii de la "Fish in a Barrel" Instrumente pentru scrierea modulelor încărcabile pentru kernelul Linux în limbajul Rust, folosind un set de straturi abstracte peste interfețele și structurile kernelului pentru a spori securitatea. Straturile sunt generate automat pe baza fișierelor de antet existente ale kernelului cu ajutorul utilitarului . Pentru compilarea stratelor se folosește Clang. Modulele compilate, pe lângă straturi, utilizează pachetul staticlib.
Paralel un alt proiect, axat pe dezvoltarea de drivere pentru sisteme încorporate și dispozitive IoT, care utilizează de asemenea bindgen pentru generarea stratelor pe baza fișierelor de antet ale kernelului. Framework-ul permite îmbunătățirea securității driverelor fără a face modificări în kernel — în loc să se creeze niveluri suplimentare de izolare în kernel pentru drivere, se propune blocarea problemelor în etapa de compilare, folosind un limbaj mai sigur, Rust. Se consideră că o astfel de abordare ar putea fi solicitată de producătorii de hardware care dezvoltă drivere proprietare rapid, fără a efectua un audit adecvat.
Nu toată funcționalitatea planificată este implementată încă, dar framework-ul este deja suficient de util pentru a fi folosit și a fost utilizat pentru a scrie un driver de lucru pentru controlerul Ethernet LAN9512 USB, livrat pe placa Raspberry Pi 3. Ca implementare de referință pentru scrierea driverului în Rust a fost utilizat driverul existent smsc95xx, scris în limbajul C. Se observă că dimensiunea modulului și costurile de runtime ale componentelor în dezvoltarea driverului în Rust sunt insignifiante, ceea ce permite utilizarea framework-ului pentru dispozitive cu resurse limitate.
Sursa: opennet.ro
