Migel Ojeda, "Rust-for-" loyihasi muallifiLinux, yadro ishlab chiquvchilari tomonidan ko'rib chiqish uchun taklif qilingan Linux пятый вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.
Eslatib o'tamiz, taklif etilayotgan o'zgarishlar Rust tilidan drayverlar va yadro modullarini ishlab chiqish uchun ikkinchi til sifatida foydalanish imkonini beradi. Zangni qo'llab-quvvatlash sukut bo'yicha yoqilmagan variant sifatida taqdim etiladi va Rust yadro uchun zarur bo'lgan qurilish bog'liqligi sifatida kiritilishiga olib kelmaydi. Drayvlarni ishlab chiqish uchun Rust-dan foydalanish sizga minimal kuch sarflagan holda xavfsizroq va yaxshiroq drayverlarni yaratishga imkon beradi, ular bo'shatilgandan so'ng xotiraga kirish, null ko'rsatkichni o'zgartirish va buferni ortiqcha yuklash kabi muammolardan xoli bo'ladi.
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.
Yamoqlarning yangi versiyasi yamoqlarning birinchi, ikkinchi, uchinchi va to'rtinchi nashrlarini muhokama qilish paytida qilingan izohlarni yo'q qilishda davom etmoqda. Yangi versiyada:
- Intel tomonidan qo'llab-quvvatlanadigan 0DAY/LKP botga asoslangan uzluksiz integratsiya tizimiga Rust-ni qo'llab-quvvatlash uchun komponent testlari qo'shildi va sinov hisobotlarini nashr etish boshlandi. Biz Rust yordamini KernelCI avtomatlashtirilgan sinov tizimiga integratsiya qilishga tayyorlanmoqdamiz. GitHub CI asosidagi sinov konteynerlardan foydalanishga o'tkazildi.
- Rust yadro modullari “#![no_std]” va “#![feature(…)]” sandiq atributlarini aniqlash zaruratidan ozod qilingan.
- Yagona montaj maqsadlari (.o, .s, .ll va .i) uchun qoʻshimcha yordam.
- Kod ko'rsatmalari sharhlarni ("//") va hujjatlashtirish kodini ("///") ajratish qoidalarini belgilaydi.
- is_rust_module.sh skripti qayta ishlangan.
- "CONFIG_CONSTRUCTORS" ilovasiga asoslangan statik (global umumiy o'zgaruvchi) sinxronizatsiya primitivlari uchun qo'shimcha yordam.
- Qulfni boshqarish soddalashtirilgan: Guard va GuardMut birlashtirilgan va bitta parametrlangan tur.
- Qurilmalarni ro'yxatdan o'tkazishda qo'shimcha parametrlarni aniqlash mumkin.
- rw_semaphore C tuzilmasi ustidan oʻram vazifasini oʻtaydigan “RwSemaphore” abstraksiyasi qoʻshildi.
- Mmapdan foydalanish uchun yangi mm moduli va VMA abstraksiyasi qo'shildi (vm_area_struct strukturasi ustidagi o'ram).
- GPIO PL061 drayveri “dev_*!” makrosidan foydalanishga o‘tkazildi.
- Kodni umumiy tozalash amalga oshirildi.
Manba: opennet.ru
