Rust-en Linux nukleorako kontrolatzaile seguruak idazteko esparrua

Josh Triplett, Intel-en lan egiten duena eta Crates.io-ren garapena gainbegiratzen duen batzordean dagoena, Open Source Technology Summit-en hitz egiten aurkeztu Rust lengoaia C lengoaiarekin parekotasunera ekartzea helburu duen lantalde bat sistemen programazioaren alorrean.

Sortze-prozesuan dagoen lan-talde batean, Rust-eko garatzaileek, Intel-eko ingeniariekin batera, Rust-en sistemen programaziorako ezarri behar diren funtzionalitateak definitzen dituzten zehaztapenak prestatuko dituzte. Sistemaren programazioak maila baxuko manipulazioa eskatzen du sarritan, hala nola, prozesadore pribilegiatuaren instrukzioak exekutatzea eta prozesadorearen egoerari buruzko informazio zehatza lortzea. Dagoeneko Rust-erako garatzen ari diren antzeko ezaugarrietatik, izenik gabeko egituretarako, batasunetarako, muntaia-lengoaiaren txertatzeetarako ("asm!" makroa) eta BFLOAT16 koma mugikorreko zenbaki-formatua aipatzen da.

Josh-ek uste du sistemaren programazioaren etorkizuna Rust-i dagokiola, eta C lengoaia errealitate modernoetan azken urteetan Assembly-k okupatu zuen lekua aldarrikatzen ari da. Herdoila
memoriarekin maila baxuko lanaren ondorioz sortzen diren C lengoaiaren berezko arazoetatik garatzaileak arintzeaz gain, programazio paradigma modernoen garapenean erabiltzeko aukera ere ematen du.

Zehar eztabaidak emanaldiak
Josh-ek Rust hizkuntzan Linux nukleoan kontrolatzaileak garatzeko gaitasuna gehitzeko ideia izan zuen, eta horrek gidari seguruagoak eta hobeak sortzea ahalbidetuko luke esfortzu minimoarekin, askatu ondoren memoriarako sarbidea bezalako arazoetatik aske, null. erakusleen deserreferentziak eta buffer gainditzeak.

Greg Kroah-Hartman, Linux nukleoaren adar egonkorra mantentzeaz arduratzen dena, Rust hizkuntzan kontrolatzaileak garatzeko marko bat gehitzeko prest agertu zen nukleoan C-ren aurrean benetako abantailak baditu, adibidez, segurua emango duela. Kernel APIaren gaineko loturak. Horrez gain, Gregek marko hau aukera gisa hartzen du, lehenespenez aktibo ez dena, Rust nukleoaren mendekotasun gisa ez sartzeko.

Kontua da jada hainbat talde lanean ari direla ildo horretan. Adibidez, "Fish in a Barrel" konpainiako garatzaileek prestatuta Linux nukleorako moduluak Rust hizkuntzan idazteko tresna-kit bat, interfazeen eta nukleoaren egituren gaineko geruza abstraktu multzo bat erabiliz, segurtasuna areagotzeko. Geruzak automatikoki sortzen dira erabilgarritasuna erabiliz dauden nukleoaren goiburuko fitxategietan oinarrituta bindgen. Clang geruzak eraikitzeko erabiltzen da. Intergeruzez gain, muntatutako moduluek staticlib paketea erabiltzen dute.

Paraleloa garatzen da Beste proiektu bat sistema txertatuetarako eta IoT gailuetarako kontrolatzaileak garatzera bideratu zen, bindgen-a ere erabiltzen baitu nukleoko goiburuko fitxategietan oinarritutako geruzak sortzeko. Esparruak gidarien segurtasuna hobetzeko aukera ematen du nukleoan aldaketarik egin gabe - nukleoan kontrolatzaileentzako isolamendu maila gehigarriak sortu beharrean, arazoak konpilazio fasean blokeatzea proposatzen da, Rust hizkuntza seguruagoa erabiliz. Suposatzen da ikuspegi hori eska dezaketela ekipo-fabrikatzaileek kontrolatzaile jabedunek presaka garatzen dituzten auditoria egokirik egin gabe.

Aurreikusitako funtzionaltasun guztiak ez dira oraindik inplementatu, baina markoa nahiko egokia da jada lanerako eta Raspberry Pi 9512 plakan hornitutako LAN3 USB Ethernet kontrolagailurako funtzionatzen duen kontrolatzaile bat idazteko erabili zen. Lehendik dagoen smsc95xx kontrolatzailea, urtean idatzia. C hizkuntza. Kontuan izan behar da Rust-en kontrolatzaile bat garatzean moduluaren tamaina eta exekuzio-denborako osagaien gainkostuak hutsalak direla, eta horrek baliabide mugatuak dituzten gailuetarako esparrua erabiltzeko aukera ematen du.

Iturria: opennet.ru

Gehitu iruzkin berria