WD драйвери NVMe-ро дар Rust таҳия мекунад. Озмоиш бо Rust дар FreeBSD

Дар конфронси Linux Plumbers 2022, ки ин рӯзҳо баргузор мешавад, муҳандис аз Western Digital дар бораи таҳияи драйвери таҷрибавӣ барои дискҳои SSD бо интерфейси NVM-Express (NVMe), ки бо забони Rust навишта шудааст ва дар ядрои Linux кор мекунад, муаррифӣ кард. сатҳи. Сарфи назар аз он, ки лоиҳа ҳанӯз дар марҳилаи аввали рушд қарор дорад, санҷиш нишон дод, ки кори драйвери NVMe дар забони Rust ба драйвери NVMe бо забони C навишта шудааст, ки дар ядро ​​мавҷуд аст, мувофиқат мекунад.

WD драйвери NVMe-ро дар Rust таҳия мекунад. Озмоиш бо Rust дар FreeBSD
WD драйвери NVMe-ро дар Rust таҳия мекунад. Озмоиш бо Rust дар FreeBSD

Дар гузориш гуфта мешавад, ки драйвери кунунии NVMe дар C барои таҳиягарон комилан қаноатбахш аст, аммо зерсистемаи NVMe як платформаи хубест барои омӯхтани имконпазирии таҳияи драйверҳо дар Rust, зеро он хеле содда, ба таври васеъ истифодашаванда, талаботи баланди иҷроиш дорад ва дорои татбиқи истинодҳои исботшуда барои муқоиса ва интерфейсҳои гуногунро дастгирӣ мекунад (dev, pci, dma, blk-mq, gendisk, sysfs).

Қайд карда мешавад, ки драйвери PCI NVMe барои Rust аллакай функсияҳои заруриро барои кор таъмин мекунад, аммо ҳанӯз барои истифодаи васеъ омода нест, зеро он такмилдиҳии инфиродӣ талаб мекунад. Нақшаҳои оянда аз тоза кардани коди блокҳои мавҷудаи хатарнок, дастгирии бартарафсозии дастгоҳ ва боркунии драйвер, дастгирии интерфейси sysfs, амалисозии ибтидоии танбал, эҷоди драйвер барои blk-mq ва таҷриба бо истифода аз модели барномасозии асинхронӣ барои queue_rq иборатанд.

Илова бар ин, мо метавонем таҷрибаҳои аз ҷониби NCC Group барои таҳияи драйверҳо бо забони Rust барои ядрои FreeBSD гузаронидашударо қайд кунем. Ҳамчун мисол, мо як драйвери оддии эхо-ро, ки маълумоти ба файли /dev/rustmodule навишташударо бармегардонад, муфассал баррасӣ мекунем. Дар марҳилаи навбатии озмоишҳо, гурӯҳи NCC имкони коркарди ҷузъҳои аслии ядро ​​​​бо забони Rust барои беҳтар кардани амнияти шабака ва амалиёти файлро баррасӣ мекунад.

Бо вуҷуди ин, гарчанде нишон дода шудааст, ки бо забони Rust модулҳои оддӣ эҷод кардан мумкин аст, ҳамгироии сахттари Rust ба ядрои FreeBSD кори иловагиро талаб мекунад. Масалан, онҳо зарурати эҷоди як қатор қабатҳои абстраксияро дар болои зерсистемаҳо ва сохторҳои ядроӣ, ки ба изофаҳое, ки лоиҳаи Rust for Linux омода кардааст, ёдовар мешаванд. Дар оянда, мо нақша дорем, ки таҷрибаҳои шабеҳро бо ядрои Illumos гузаронем ва абстраксияҳои маъмулро дар Rust муайян кунем, ки метавонанд дар драйверҳои дар Rust барои Linux, BSD ва Illumos навишташуда истифода шаванд.

Мувофиқи маълумоти Microsoft ва Google, тақрибан 70% осебпазирии маҳсулоти нармафзори онҳо дар натиҷаи коркарди бехатари хотира ба вуҷуд омадааст. Интизор меравад, ки истифодаи забони Rust хатари осебпазириро, ки дар натиҷаи кори хатарнок бо хотира ба вуҷуд омадааст, коҳиш дода, пайдоиши иштибоҳҳо, аз қабили дастрасӣ ба минтақаи хотира пас аз озод шудани он ва аз ҳад зиёди буферро аз байн мебарад.

Муомилоти аз хотираи бехатар дар Rust дар вақти тартибдиҳӣ тавассути санҷиши истинод, нигоҳ доштани моликияти объект ва мӯҳлати умри объект (миқёс), инчунин тавассути арзёбии дурустии дастрасии хотира ҳангоми иҷрои код таъмин карда мешавад. Rust инчунин муҳофизатро аз фаромадани ададҳо таъмин мекунад, пеш аз истифода оғозкунии ҳатмии арзишҳои тағирёбандаро талаб мекунад, хатогиҳоро дар китобхонаи стандартӣ беҳтар идора мекунад, консепсияи истинодҳо ва тағирёбандаҳоро ба таври нобаёнӣ татбиқ мекунад, чопкунии қавии статикиро барои кам кардани хатогиҳои мантиқӣ пешниҳод мекунад.

Манбаъ: opennet.ru

Илова Эзоҳ