Rust tilini qo'llab-quvvatlaydigan Linux yadrosi uchun yamoqlarning to'rtinchi nashri

Rust-for-Linux loyihasi muallifi Migel Ojeda Linux yadrosini ishlab chiquvchilari ko‘rib chiqish uchun Rust tilida qurilma drayverlarini ishlab chiqish uchun komponentlarning to‘rtinchi versiyasini taklif qildi. Rust qo'llab-quvvatlashi eksperimental hisoblanadi, lekin Linux-keyingi filialiga kiritish uchun allaqachon kelishilgan va yadro quyi tizimlari ustida abstraktsiya qatlamlarini yaratish, shuningdek, drayverlar va modullarni yozish bo'yicha ishlarni boshlash uchun etarlicha etuk. Ishlanma Google va ISRG (Internet Security Research Group) tomonidan moliyalashtiriladi, u Let's Encrypt loyihasining asoschisi bo'lib, HTTPS va Internet xavfsizligini yaxshilash uchun texnologiyalarni rivojlantirishga yordam beradi.

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 va uchinchi nashrlarini muhokama qilish paytida qilingan izohlarni yo'q qilishda davom etmoqda. Yangi versiyada:

  • Rust 1.58.0 barqaror versiyasidan mos yozuvlar kompilyatori sifatida foydalanishga o'tish amalga oshirildi. Hali asosiy Rust asboblar to'plamiga kiritilmagan loyiha uchun zarur bo'lgan o'zgarishlar orasida "-Zsymbol-mangling-version=v0" bayrog'i (Rust 1.59.0 da kutilgan) va "maybe_uninit_extra" rejimi (Rust 1.60.0 da kutilmoqda) .XNUMX) qayd etilgan.
  • Tegishli Rust vositalari mavjudligi uchun avtomatik tekshiruvlar qo'shildi va tizimda Rust qo'llab-quvvatlashini sinab ko'rish imkoniyati kengaytirildi.
  • Rust kodidan qurilma identifikatorlari jadvallariga (“IdArray” va “IdTable”) kirish uchun yangi abstraktsiyalar taklif qilindi.
  • Taymer bilan bog'liq funktsiyalarga kirish uchun qatlamlar qo'shildi (soat ramkasi).
  • Platforma drayverlari endi xususiyatlarni amalga oshirish orqali aniqlanadi.
  • Platforma drayverlarini ro'yxatdan o'tkazishni soddalashtirish uchun yangi makro qo'shildi va yangi umumiy drayver shablonlari taklif qilindi.
  • "dev_*" tuzilmalari uchun makroslar qo'shildi.
  • IoMem turi uchun “{read,write}*_relaxed” usullari qo‘shildi .
  • Fayl operatsiyalarini soddalashtirish uchun FileOpener xususiyati olib tashlandi.
  • "ThisModule" parametri drayverni ro'yxatdan o'tkazishda berilgan argumentlarga qo'shildi.
  • Rust tilida yadro modullarini yaratish uchun standart shablon taklif etiladi.

Manba: opennet.ru

a Izoh qo'shish