Ник Дезагнер (), ки дар Google барои таъмин кор мекунад сборки ядра Linux с использованием компилятора Clang и также ислоҳи хатогиҳо дар compiler Rust, дар конфронс баргузор мекунанд ҷаласа барои муҳокима кардани имкони таҳияи ҷузъҳои ядро дар Rust. Ник як конфронси хурдеро, ки ба LLVM бахшида шудааст, ташкил мекунад ва чунин мешуморад, ки хуб мебуд, ки ҷанбаҳои техникии ҳамгироии эҳтимолии дастгирии Rust ба ядро мебошад (ӯ аллакай як прототипи корӣ барои KBuild омода кардааст) ва фаҳманд, ки оё ин дастгирӣ бояд умуман илова карда шавад ва кадом махдудиятхои истифодаи рустро кабул кардан лозим аст.
Напомним, что в недавней дискуссии на конференции «Open Source Summit and Embedded Linux» Линус Торвалдс пайдоиши пайвандҳо барои рушди зерсистемаҳои ядроии ғайриаслӣ (масалан, драйверҳо) дар забонҳо ба монанди Rust. Қобилияти таҳияи драйверҳо дар Rust ба мо имкон медиҳад, ки ронандагони бехатартар ва беҳтарро бо саъю кӯшиши ҳадди ақал эҷод кунем, ки бидуни мушкилот ба монанди дастрасии хотира пас аз озодкунӣ, истинодҳои нул нишондиҳанда ва изофаи буферӣ. Барои татбиқи ин хусусият аллакай якчанд лоиҳаҳои тарафи сеюм мавҷуданд:
- Таҳиягарон аз ширкати "Фиш дар баррел" инструментарий для написания загружаемых модулей для ядра Linux на языке Rust, используя для повышения защиты набор абстрактных прослоек над интерфейсами и структурами ядра. Прослойки автоматически генерируются на базе имеющихся заголовочных файлов ядра при помощи утилиты . Clang барои сохтани қабатҳо истифода мешавад. Модулҳои ҷамъшуда ба ғайр аз қабатҳои байнисоҳавӣ бастаи staticlib-ро истифода мебаранд.
- Муҳаққиқони Донишгоҳи Чин дар Ҳонконг лоиҳа барои таҳияи драйверҳо барои системаҳои дарунсохташуда ва дастгоҳҳои Интернети ашё дар Rust, ки он ҳамчунин bindgen-ро барои тавлиди қабатҳо дар асоси файлҳои сарлавҳаи ядро истифода мебарад. Чаҳорчӯба ба шумо имкон медиҳад, ки бехатарии драйверҳоро бе ворид кардани тағирот ба ядро беҳтар кунед - ба ҷои эҷод кардани сатҳҳои изолятсияи иловагӣ барои драйверҳо дар ядро, пешниҳод карда мешавад, ки мушкилот дар марҳилаи компиляция бо истифода аз забони бехатартари Rust масдуд карда шаванд. Тахмин меравад, ки чунин равиш аз ҷониби истеҳсолкунандагони таҷҳизот, ки ронандагони хусусиро шитобкорона бидуни гузаронидани аудити дуруст таҳия мекунанд, талаб карда мешавад.
- Таҳиягарони чаҳорчӯба барои пахши рамзи C ба Rust, таҷрибаҳо оид ба табдил додани модулҳои ядро бо ҳадди ақали таҳрирҳои дастӣ. Яке аз мушкилоти зикршуда ин истифода дар бисёр қисматҳои ядрои код мебошад, ки васеъшавии GCC-ро истифода мебарад, ки ҳанӯз дар C2Rust дастгирӣ намешаванд. Барои ҳалли ин мушкилот, C2Rust ба нақша гирифтааст, ки дастгирии атрибутҳои GCC-ро дар дохили, хунук, тахаллус, истифодашуда ва қисмат илова кунад, инчунин имкониятҳои ассемблерҳои дохилиро васеъ кунад ва мушкилотро бо сохторҳое, ки ҳам мувофиқ ва ҳам печонида шудаанд (масалан, xregs_state) ҳал кунад. . Мушкилоти муҳиме, ки кори дастиро талаб мекунанд, имконнопазирии тарҷумаи макросҳои ғайримаъмулии C ба макросҳои Rust ва зарурати аз нав муайян кардани намудҳоро дар бар мегиранд, зеро C2Rust намудҳои C-ро ба таърифҳо дар бастаи libc тарҷума мекунад, аммо ин бастаро дар модулҳои ядро истифода кардан мумкин нест.
Манбаъ: opennet.ru
