Rust dilini dəstəkləyən Linux nüvəsi üçün yamaqların beşinci 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 beşinci versiyasını təklif etdi. Rust dəstəyi eksperimental sayılır, lakin artıq Linux-növbəti filialına daxil edilib və nüvə alt sistemləri üzərində abstraksiya qatlarının yaradılması, həmçinin drayverlərin və modulların yazılması üzərində işə başlamaq üçün kifayət qədər işlənib hazırlanıb. İnkişaf Google və Let's Encrypt layihəsinin yaradıcısı olan və HTTPS-i və internet təhlükəsizliyini yaxşılaşdırmaq üçün texnologiyaların inkişafını təşviq edən ISRG (İnternet Təhlükəsizliyi Araşdırma Qrupu) tərəfindən maliyyələşdirilir.

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ı yamaqların birinci, ikinci, üçüncü və dördüncü nəşrlərinin müzakirəsi zamanı edilən şərhləri aradan qaldırmağa davam edir. Yeni versiyada:

  • Rust dəstəyi üçün komponent testi Intel tərəfindən dəstəklənən 0DAY/LKP bot əsasında davamlı inteqrasiya sisteminə əlavə edildi və sınaq hesabatlarının nəşrinə başlandı. Rust dəstəyini KernelCI avtomatlaşdırılmış sınaq sisteminə inteqrasiya etməyə hazırlaşırıq. GitHub CI əsasında sınaq konteynerlərin istifadəsinə keçirilib.
  • Rust kernel modulları “#![no_std]” və “#![xüsusiyyət(…)]” sandıq atributlarını təyin etmək ehtiyacından azad edilir.
  • Tək montaj hədəfləri üçün əlavə dəstək (.o, .s, .ll və .i).
  • Kod təlimatları şərhləri (“//”) və sənədləşdirmə kodunu (“///”) ayırmaq qaydalarını müəyyən edir.
  • is_rust_module.sh skripti yenidən işlənib.
  • "CONFIG_CONSTRUCTORS" tətbiqinə əsaslanan statik (qlobal paylaşılan dəyişən) sinxronizasiya primitivləri üçün əlavə dəstək.
  • Kilidin idarə edilməsi sadələşdirilmişdir: Guard və GuardMut birləşdirilmişdir və bir parametrləşdirilmiş tipdir.
  • Cihazların qeydiyyatı zamanı əlavə parametrləri müəyyən etmək mümkündür.
  • rw_semaphore C strukturu üzərində sarğı rolunu oynayan "RwSemaphore" abstraksiyasını əlavə etdi.
  • mmap-dan istifadə etmək üçün yeni mm modulu və VMA abstraksiya əlavə edilmişdir (vm_area_struct strukturu üzərində sarğı).
  • GPIO PL061 sürücüsü “dev_*!” makrosundan istifadə etmək üçün çevrilmişdir.
  • Kodun ümumi təmizlənməsi aparıldı.

Mənbə: opennet.ru

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