Rust dilini dəstəkləyən Linux nüvəsi üçün yamaqların ikinci nəşri

Rust-for-Linux layihəsinin müəllifi Migel Ojeda Linux nüvəsi tərtibatçıları tərəfindən nəzərdən keçirilməsi üçün Rust dilində cihaz drayverlərinin hazırlanması üçün komponentlərin yenilənmiş versiyasını təklif etdi. Rust dəstəyi eksperimental sayılır, lakin artıq Linux-növbəti filialına daxil olmaq üçün razılaşdırılıb. Yeni versiya yamaqların ilk versiyasının müzakirəsi zamanı edilən şərhləri aradan qaldırır. Linus Torvalds artıq müzakirəyə qoşulub və bəzi bit əməliyyatlarının emalı üçün məntiqin dəyişdirilməsini təklif edib.

Xatırladaq ki, təklif olunan dəyişikliklər Rust dilini drayverlərin və nüvə modullarının hazırlanması üçün ikinci dil kimi istifadə etməyə imkan verir. Rust dəstəyi defolt olaraq aktivləşdirilməyən və kernel üçün tələb olunan qurma asılılıqları sırasına Rust-un daxil edilməsi ilə nəticələnməyən seçim kimi təqdim olunur. Sürücüləri inkişaf etdirmək üçün Rust-dan istifadə sizə minimum səylə yaddaş sahəsinə daxil olmaq, boş göstəricilərə istinad etmək və bufer aşmaq kimi problemlərdən azad olaraq daha təhlükəsiz və daha yaxşı drayverlər yaratmağa imkan verəcək.

Yaddaşın təhlükəsiz işləməsi Rust-da kompilyasiya zamanı istinad yoxlaması, obyekt sahibliyi və obyektin istifadə müddətini (əhatə dairəsini) izləmək, həmçinin kodun icrası zamanı yaddaşa girişin düzgünlüyünün qiymətləndirilməsi vasitəsilə təmin edilir. Rust həmçinin tam ədədlərin daşmasına qarşı qorunma təmin edir, istifadə etməzdən əvvəl dəyişən dəyərlərin məcburi işə salınmasını tələb edir, standart kitabxanada səhvləri daha yaxşı idarə edir, dəyişməz istinadlar və dəyişənlər konsepsiyasını standart olaraq tətbiq edir, məntiqi səhvləri minimuma endirmək üçün güclü statik yazma təklif edir.

Yamaların yeni versiyasında ən nəzərə çarpan dəyişikliklər:

  • Yaddaşın ayrılması kodu, yaddaş tükənməsi kimi səhvlər baş verdikdə potensial olaraq "çaxnaşma" vəziyyəti yaratmaqdan azad edilir. Uğursuzluqları idarə etmək üçün kodu yenidən işləyən Rust alloc kitabxanasının bir variantı daxil edilmişdir, lakin əsas məqsəd kernel üçün lazım olan bütün xüsusiyyətləri alloc-un əsas nəşrinə köçürməkdir (dəyişikliklər artıq hazırlanmış və standarta köçürülmüşdür). Rust kitabxanası).
  • Gecə qurmaları əvəzinə, Rust dəstəyi ilə nüvəni tərtib etmək üçün indi rustc kompilyatorunun beta buraxılışlarından və stabil buraxılışlarından istifadə edə bilərsiniz. Hazırda rustc 1.54-beta1 istinad tərtibçisi kimi istifadə olunur, lakin ayın sonunda 1.54 buraxılışı buraxıldıqdan sonra o, istinad tərtibçisi kimi dəstəklənəcək.
  • Rust üçün standart “#[test]” atributundan istifadə edərək testlərin yazılması üçün əlavə dəstək və testləri sənədləşdirmək üçün doktestlərdən istifadə etmək imkanı.
  • Əvvəllər dəstəklənən x32_86 və ARM64-ə əlavə olaraq ARM64 və RISCV arxitekturaları üçün əlavə dəstək.
  • İndi bütün əsas testlərdən keçən GCC Rust (Rust üçün GCC frontend) və rustc_codegen_gcc (GCC üçün rustc backend) proqramlarının təkmilləşdirilmiş tətbiqləri.
  • Qırmızı-qara ağaclar, istinadla hesablanan obyektlər, fayl deskriptorunun yaradılması, tapşırıqlar, fayllar və giriş/çıxış vektorları kimi C dilində yazılmış nüvə mexanizmlərinin Rust proqramlarında istifadə üçün yeni abstraksiya səviyyəsi təklif olunur.
  • Sürücü inkişaf komponentləri file_operations modulu, modul!
  • Binder indi fayl deskriptorlarını və LSM qarmaqlarını ötürməyi dəstəkləyir.
  • Rust sürücüsünün daha funksional bir nümunəsi təklif olunur - Raspberry Pi lövhələrinin aparat təsadüfi say generatoru üçün bcm2835-rng.

Bundan əlavə, nüvədə Rust istifadəsi ilə bağlı bəzi şirkətlərin layihələri qeyd olunur:

  • Microsoft şirkəti Rust dəstəyinin Linux nüvəsinə inteqrasiyası üzrə işlərdə iştirak etməkdə maraqlı olduğunu bildirib və yaxın aylarda Hyper-V on Rust üçün sürücü tətbiqlərini təqdim etməyə hazırdır.
  • ARM, ARM əsaslı sistemlər üçün Rust dəstəyini təkmilləşdirmək üzərində işləyir. Rust layihəsi artıq 64 bitlik ARM sistemlərini Tier 1 platformasına çevirəcək dəyişikliklər təklif edib.
  • Google birbaşa olaraq Rust for Linux layihəsinə dəstək verir, Rust-da Binder proseslərarası kommunikasiya mexanizminin yeni tətbiqini hazırlayır və Rust-da müxtəlif drayverlərin yenidən işlənməsi imkanlarını nəzərdən keçirir. ISRG (İnternet Təhlükəsizliyi Araşdırma Qrupu) vasitəsilə Google Rust dəstəyini Linux nüvəsinə inteqrasiya etmək üçün işlərə maliyyə ayırdı.
  • IBM şirkəti Rust for PowerPC sistemləri üçün nüvə dəstəyini həyata keçirmişdir.
  • LSE (Sistem Tədqiqat Laboratoriyası) laboratoriyası Rustda SPI sürücüsünü hazırlayıb.

Mənbə: opennet.ru

Добавить комментарий