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

Rust-for-Linux loyihasi muallifi Migel Ojeda Linux yadrosini ishlab chiquvchilari ko‘rib chiqish uchun Rust tilida qurilma drayverlarini ishlab chiqish uchun komponentlarning yangilangan versiyasini taklif qildi. Rust qo'llab-quvvatlashi eksperimental hisoblanadi, ammo Linux-keyingi filialiga kiritish uchun allaqachon kelishilgan. Yangi versiya yamoqlarning birinchi versiyasini muhokama qilish paytida qilingan izohlarni o'chirib tashlaydi. Linus Torvalds allaqachon muhokamaga qo'shildi va ba'zi bit operatsiyalarini qayta ishlash mantiqini o'zgartirishni taklif qildi.

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 versiyasidagi eng sezilarli o'zgarishlar:

  • Xotirani ajratish kodi, xotira tugashi kabi xatolar yuzaga kelganda potentsial "vahima" holatini yaratishdan ozod qilinadi. Rust alloc kutubxonasining varianti kiritilgan boʻlib, u xatoliklarni hal qilish uchun kodni qayta ishlaydi, ammo yakuniy maqsad yadro uchun zarur boʻlgan barcha funksiyalarni allocning asosiy nashriga oʻtkazishdir (oʻzgarishlar allaqachon tayyorlangan va standartga oʻtkazilgan). Rust kutubxonasi).
  • Tungi tuzilmalar oʻrniga endi Rust qoʻllab-quvvatlashi bilan yadroni kompilyatsiya qilish uchun rustc kompilyatorining beta-versiyalari va barqaror versiyalaridan foydalanishingiz mumkin. Hozirda rustc 1.54-beta1 mos yozuvlar kompilyatori sifatida foydalanilmoqda, lekin oy oxirida 1.54 versiyasi chiqarilgandan so'ng, u mos yozuvlar kompilyatori sifatida qo'llab-quvvatlanadi.
  • Rust uchun standart “#[test]” atributidan foydalangan holda testlarni yozish uchun qo‘shimcha qo‘llab-quvvatlash va testlarni hujjatlashtirish uchun doktestlardan foydalanish imkoniyati.
  • Ilgari qo'llab-quvvatlangan x32_86 va ARM64 ga qo'shimcha ravishda ARM64 va RISCV arxitekturalari uchun qo'llab-quvvatlash qo'shildi.
  • GCC Rust (Rust uchun GCC frontend) va rustc_codegen_gcc (GCC uchun rustc backend) ilovalari takomillashtirildi, ular endi barcha asosiy testlardan o‘tadi.
  • Qizil-qora daraxtlar, mos yozuvlar hisoblangan ob'ektlar, fayl deskriptorlarini yaratish, vazifalar, fayllar va kiritish-chiqarish vektorlari kabi C tilida yozilgan yadro mexanizmlarining Rust dasturlarida abstraktsiyaning yangi darajasi taklif etiladi.
  • Drayvlarni ishlab chiqish komponentlari file_operations moduli, modul! makrosi, makro ro'yxatga olish va oddiy drayverlarni (tekshirish va olib tashlash) yaxshilangan qo'llab-quvvatlashga ega.
  • Binder endi fayl deskriptorlari va LSM ilgaklarini o'tkazishni qo'llab-quvvatlaydi.
  • Rust drayverining yanada funktsional namunasi taklif etiladi - bcm2835-rng Raspberry Pi platalarining tasodifiy sonlar generatori uchun.

Bundan tashqari, yadroda Rustdan foydalanish bilan bog'liq ba'zi kompaniyalarning loyihalari qayd etilgan:

  • Microsoft kompaniyasi Rust qo'llab-quvvatlashini Linux yadrosiga integratsiyalash bo'yicha ishda ishtirok etishga qiziqish bildirdi va yaqin oylarda Hyper-V on Rust uchun drayverlarni tatbiq etishga tayyor.
  • ARM, ARM-ga asoslangan tizimlar uchun Rust-ni qo'llab-quvvatlashni yaxshilash ustida ishlamoqda. Rust loyihasi allaqachon 64-bitli ARM tizimlarini 1-darajali platformaga aylantiradigan o'zgarishlarni taklif qilgan.
  • Google to'g'ridan-to'g'ri Linux uchun Rust loyihasini qo'llab-quvvatlaydi, Rust-da Binder jarayonlararo aloqa mexanizmining yangi tatbiqini ishlab chiqmoqda va Rust-da turli drayverlarni qayta ishlash imkoniyatini ko'rib chiqmoqda. Google ISRG (Internet Security Research Group) orqali Rust-ni qo'llab-quvvatlashni Linux yadrosiga integratsiya qilish ishlarini moliyalashtirdi.
  • IBM kompaniyasi Rust for PowerPC tizimlari uchun yadro yordamini joriy qildi.
  • LSE (Systems Research Laboratory) laboratoriyasi Rustda SPI drayverini ishlab chiqdi.

Manba: opennet.ru

a Izoh qo'shish