Shu kunlarda bo'lib o'tayotgan konferensiyada Linux Plumbers 2022 инженер из компании Western Digital выступил с докладом о разработке экспериментального драйвера для SSD-накопителей с интерфейсом NVM-Express (NVMe), написанного на языке Rust и работающего на уровне ядра Linux. Несмотря на то, что проект пока находится на раннем этапе развития, проведённое тестирование показало, что производительность NVMe-драйвера на языке Rust соответствует имеющемуся в ядре NVMe-драйверу, написанному на языке Си.


Hisobotda aytilishicha, C tilidagi joriy NVMe drayveri ishlab chiquvchilar uchun to'liq qoniqarli, ammo NVMe quyi tizimi Rustda drayverlarni ishlab chiqish imkoniyatlarini o'rganish uchun yaxshi platformadir, chunki u juda oddiy, keng qo'llaniladi, yuqori ishlash talablari va bor taqqoslash uchun tasdiqlangan mos yozuvlar ilovasi va turli interfeyslarni qo'llab-quvvatlaydi (dev, pci, dma, blk-mq, gendisk, sysfs).
Ta'kidlanishicha, Rust uchun PCI NVMe drayveri allaqachon ishlash uchun zarur bo'lgan funksionallikni ta'minlagan, biroq hozircha keng foydalanishga tayyor emas, chunki u individual yaxshilanishlarni talab qiladi. Kelajakdagi rejalarga mavjud xavfli bloklar kodini olib tashlash, qurilmani olib tashlash va drayverni tushirish operatsiyalarini qo'llab-quvvatlash, sysfs interfeysini qo'llab-quvvatlash, dangasa ishga tushirishni amalga oshirish, blk-mq uchun drayverni yaratish va queue_rq uchun asinxron dasturlash modelidan foydalanish bilan tajriba o'tkazish kiradi.

Bundan tashqari, FreeBSD yadrosi uchun Rust tilida drayverlarni ishlab chiqish bo'yicha NCC Group tomonidan o'tkazilgan tajribalarni qayd etishimiz mumkin. Misol sifatida, biz /dev/rustmodule fayliga yozilgan ma'lumotlarni qaytaradigan oddiy echo drayverini batafsil ko'rib chiqamiz. Tajribaning navbatdagi bosqichida NCC Group tarmoq va fayl operatsiyalari xavfsizligini yaxshilash uchun yadroning asosiy komponentlarini Rust tilida qayta ishlash imkoniyatini ko‘rib chiqmoqda.
При этом, несмотря на то, что показана возможность создания простых модулей на языке Rust, более плотная интеграция Rust в ядро FreeBSD потребует проведения дополнительной работы. Например, упоминается необходимость создания набора слоёв абстракции над подсистемами и структурами ядра, похожих на надстройки, подготовленные проектом Rust for Linux. В дальнейшем планируется провести похожие эксперименты с ядром Illumos и выделить общие абстракции на Rust, которые могли бы использоваться в написанных на Rust драйверах для Linux, BSD и Illumos.
Microsoft va Google ma'lumotlariga ko'ra, ularning dasturiy mahsulotlaridagi zaifliklarning qariyb 70 foizi xotirani xavfsiz ishlatishdan kelib chiqadi. Rust tilidan foydalanish xotira bilan xavfli ishlash natijasida yuzaga keladigan zaifliklar xavfini kamaytirishi va xotira maydoni bo'shatilgandan so'ng unga kirish va buferni haddan tashqari oshirib yuborish kabi xatolar yuzaga kelishini bartaraf etishi kutilmoqda.
Rust kompilyatsiya vaqtida xotira xavfsizligini mos yozuvlarni tekshirish, ob'ektga egalik qilish va ob'ektning ishlash muddatini kuzatish (ko'lamlar) va ish vaqtida xotiraga kirishning to'g'riligini baholash orqali amalga oshiradi. Rust shuningdek, butun sonlarning to'lib ketishidan himoya qiladi, foydalanishdan oldin o'zgaruvchan qiymatlarni ishga tushirishni talab qiladi, standart kutubxonada xatolarni yaxshiroq boshqarishga ega, sukut bo'yicha o'zgarmas havolalar va o'zgaruvchilar tushunchasidan foydalanadi va mantiqiy xatolarni minimallashtirish uchun kuchli statik yozishni taklif qiladi.
Manba: opennet.ru
