Framework alang sa pagsulat sa luwas nga mga drayber alang sa Linux kernel sa Rust

Si Josh Triplett, nga nagtrabaho sa Intel ug naa sa komite nga nagdumala sa pag-uswag sa Crates.io, namulong sa Open Source Technology Summit gipaila usa ka working group nga gitumong sa pagdala sa Rust nga pinulongan sa pagkaparehas sa C nga pinulongan sa natad sa mga sistema sa programming.

Sa usa ka grupo nga nagtrabaho nga anaa sa proseso sa paghimo, ang mga developer sa Rust, kauban ang mga inhenyero gikan sa Intel, mag-andam sa mga detalye nga nagtino sa mga gamit nga kinahanglan ipatuman sa Rust alang sa mga sistema sa programming. Ang pagprograma sa sistema sa kasagaran nagkinahanglan og ubos nga lebel nga pagmaniobra, sama sa pagpatuman sa pribilihiyo nga mga instruksiyon sa processor ug pagkuha og detalyadong impormasyon mahitungod sa kahimtang sa processor. Sa susamang mga bahin nga naugmad na alang sa Rust, ang suporta alang sa wala hinganli nga mga istruktura, unyon, pagsal-ot sa pinulongan sa asembliya (ang “asm!” macro) ug ang BFLOAT16 floating point number format namatikdan.

Nagtuo si Josh nga ang kaugmaon sa pagprograma sa sistema iya ni Rust, ug ang C nga lengguwahe sa modernong mga kamatuoran nag-angkon sa lugar nga sa miaging mga tuig giokupar sa Assembly. Taya
dili lamang makapahupay sa mga developers gikan sa mga problema nga kinaiyanhon sa C nga pinulongan nga mitungha tungod sa ubos nga lebel sa trabaho uban sa panumduman, apan naghatag usab sa oportunidad sa paggamit niini sa pagpalambo sa modernong programming paradigms.

Atol sa mga diskusyon nga pasundayag
Si Josh nakamugna og ideya sa pagdugang sa abilidad sa pagpalambo sa mga drayber sa Linux kernel sa Rust nga pinulongan, nga magpaposible sa paghimo sa mas luwas ug mas maayo nga mga drayber nga adunay gamay nga paningkamot, nga walay mga problema sama sa pag-access sa memorya human sa pagpalaya, null pointer dereferences ug buffer overruns.

Si Greg Kroah-Hartman, kinsa responsable sa pagmentinar sa lig-on nga sanga sa Linux kernel, nagpahayag sa iyang kaandam sa pagdugang sa usa ka framework alang sa pagpalambo sa mga drayber sa Rust nga pinulongan ngadto sa kernel kon kini adunay tinuod nga mga bentaha sa C, pananglitan, kini makahatag og luwas. pagbugkos sa Kernel API. Dugang pa, gikonsiderar ni Greg ang kini nga balangkas ingon usa ka kapilian, dili aktibo sa default, aron dili maapil ang Rust ingon usa ka pagsalig sa pagtukod sa kernel.

Nahibal-an nga daghang mga koponan ang nagtrabaho na sa kini nga direksyon. Pananglitan, ang mga developer gikan sa kompanya nga "Fish in a Barrel" giandam usa ka toolkit para sa pagsulat ug loadable modules para sa Linux kernel sa Rust language, gamit ang set sa abstract layers ibabaw sa mga interface ug kernel structures aron madugangan ang seguridad. Ang mga layer awtomatik nga namugna base sa kasamtangan nga kernel header files gamit ang utility bindgen. Ang clang gigamit sa paghimo og mga lut-od. Gawas pa sa mga interlayer, ang mga gitigum nga mga module naggamit sa staticlib nga pakete.

Parallel molambo Laing proyekto nga naka-focus sa pagpalambo sa mga drayber alang sa mga embedded system ug IoT device, nga naggamit usab sa bindgen aron makamugna og mga layer base sa kernel header files. Gitugotan ka sa balangkas nga mapauswag ang seguridad sa drayber nga wala maghimo mga pagbag-o sa kernel - imbis nga maghimo dugang nga lebel sa pagkalainlain alang sa mga drayber sa kernel, gisugyot nga babagan ang mga problema sa yugto sa pagtipon, gamit ang labi ka luwas nga Rust nga sinultian. Gituohan nga ang ingon nga pamaagi mahimo’g gipangayo sa mga tiggama sa kagamitan nga nagpalambo sa mga proprietary driver nga nagdali nga wala magpahigayon usa ka tukma nga pag-audit.

Dili ang tanan nga gituyo nga pag-andar napatuman pa, apan ang balangkas angay na alang sa trabaho ug gigamit sa pagsulat sa usa ka nagtrabaho nga drayber alang sa LAN9512 USB Ethernet controller nga gihatag sa Raspberry Pi 3 board. Ang kasamtangan nga smsc95xx driver, nga gisulat sa in C nga pinulongan. Namatikdan nga ang gidak-on sa module ug overhead gikan sa mga sangkap sa runtime kung nag-develop sa usa ka drayber sa Rust dili hinungdanon, nga nagtugot sa balangkas nga magamit alang sa mga aparato nga adunay limitado nga mga kapanguhaan.

Source: opennet.ru

Idugang sa usa ka comment