Чаҳорчӯба барои навиштани драйверҳои бехатар барои ядрои Linux дар Rust

Ҷош Триплетт, ки дар Intel кор мекунад ва дар кумита оид ба рушди Crates.io назорат мекунад, дар Саммити технологияҳои кушодаасос суханронӣ мекунад муаррифӣ кард як гурӯҳи корӣ, ки ҳадафи он ба баробар кардани забони руст бо забони Си дар соҳаи барномасозии система мебошад.

Дар як гурӯҳи корӣ, ки дар ҷараёни таъсисёбӣ қарор дорад, таҳиягарони Rust дар якҷоягӣ бо муҳандисони Intel, мушаххасоти мушаххасеро таҳия мекунанд, ки функсияҳоеро муайян мекунанд, ки бояд дар Rust барои барномасозии системаҳо татбиқ карда шаванд. Барномасозии система аксар вақт манипуляцияи сатҳи пастро талаб мекунад, ба монанди иҷрои дастурҳои имтиёзноки протсессор ва гирифтани маълумоти муфассал дар бораи ҳолати протсессор. Аз хусусиятҳои шабеҳе, ки аллакай барои Rust таҳия шудаанд, дастгирии сохторҳои беном, иттифоқҳо, замимаҳои забони ассемблер (макроси "asm!") ва формати рақами шинокунандаи BFLOAT16 қайд карда шудааст.

Ҷош мӯътақид аст, ки ояндаи барномасозии система ба Rust тааллуқ дорад ва забони Си дар воқеиятҳои муосир ҷойеро, ки дар солҳои гузашта Ассамблея ишғол мекард, даъво мекунад. Rust
таҳиягаронро на танҳо аз мушкилоти хоси забони Си, ки дар натиҷаи кори сатҳи паст бо хотира ба вуҷуд меоянд, раҳо мекунад, балки имкони истифодаи онро дар таҳияи парадигмаҳои муосири барномасозӣ фароҳам меорад.

Дар давоми мубоҳисаҳо спектакльхо
Ҷош идеяи илова кардани қобилияти таҳияи драйверҳо дар ядрои Linux бо забони Rust -ро пешниҳод кард, ки имкон медиҳад драйверҳои бехатартар ва беҳтарро бо кӯшиши ҳадди аққал, аз мушкилоте ба монанди дастрасии хотира пас аз озод кардан, озод созанд, null беэътибор донистани нишондод ва изофаи буфер.

Грег Кроа-Хартман, ки барои нигоҳ доштани шохаи устувори ядрои Linux масъул аст, изҳор дошт, ки омодагии худро барои илова кардани чаҳорчӯбаи таҳияи драйверҳо бо забони Rust ба ядро, агар он нисбат ба C бартариҳои воқеӣ дошта бошад, масалан, он бехатариро таъмин хоҳад кард. пайвандҳо бар API Kernel. Илова бар ин, Грег ин чаҳорчӯбаро танҳо ҳамчун вариант мешуморад, ки бо нобаёнӣ фаъол нест, то Rust-ро ҳамчун вобастагии сохтмон аз ядро ​​дохил накунад.

Маълум шуд, ки дар ин рох аллакай якчанд бригада кор карда истодаанд. Масалан, таҳиягарон аз ширкати "Фиш дар баррел" омода кардааст маҷмӯаи асбобҳо барои навиштани модулҳои пурборшаванда барои ядрои Linux бо забони Rust бо истифода аз маҷмӯи қабатҳои абстрактӣ дар болои интерфейсҳо ва сохторҳои ядро ​​барои баланд бардоштани амният. Қабатҳо дар асоси файлҳои мавҷудаи сарлавҳаи ядро ​​​​бо истифода аз утилита ба таври худкор тавлид мешаванд биндген. Clang барои сохтани қабатҳо истифода мешавад. Модулҳои ҷамъшуда ба ғайр аз қабатҳои байнисоҳавӣ бастаи staticlib-ро истифода мебаранд.

Параллелӣ рушд карда истодааст Лоиҳаи дигар ба таҳияи драйверҳо барои системаҳои дарунсохт ва дастгоҳҳои IoT нигаронида шудааст, ки он ҳамчунин bindgen-ро барои тавлиди қабатҳо дар асоси файлҳои сарлавҳаи ядро ​​истифода мебарад. Чаҳорчӯба ба шумо имкон медиҳад, ки бехатарии драйверҳоро бе ворид кардани тағирот ба ядро ​​беҳтар кунед - ба ҷои эҷод кардани сатҳҳои изолятсияи иловагӣ барои драйверҳо дар ядро, пешниҳод карда мешавад, ки мушкилот дар марҳилаи компиляция бо истифода аз забони бехатартари Rust масдуд карда шаванд. Тахмин меравад, ки чунин равиш аз ҷониби истеҳсолкунандагони таҷҳизот, ки ронандагони хусусиро шитобкорона бидуни гузаронидани аудити дуруст таҳия мекунанд, талаб карда мешавад.

На ҳама функсияҳои пешбинишуда ҳанӯз амалӣ карда шудаанд, аммо чаҳорчӯба аллакай барои кор комилан мувофиқ аст ва барои навиштани драйвери корӣ барои контроллери LAN9512 USB Ethernet, ки дар тахтаи Raspberry Pi 3 дода шудааст, истифода шудааст. Драйвери мавҷудаи smsc95xx, ки дар Забони C. Қайд карда мешавад, ки андозаи модул ва сарбории ҷузъҳои вақти корӣ ҳангоми таҳияи драйвер дар Rust ночиз аст, ки ин имкон медиҳад чаҳорчӯба барои дастгоҳҳои дорои захираҳои маҳдуд истифода шавад.

Манбаъ: opennet.ru

Илова Эзоҳ