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

Rust-for-Linux layihəsinin müəllifi Migel Ojeda Linux nüvəsi tərtibatçılarının nəzərdən keçirməsi üçün Rust dilində cihaz drayverlərinin hazırlanması üçün üçüncü komponent variantı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. İ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 və ikinci versiyalarının müzakirəsi zamanı edilən şərhləri aradan qaldırmağa davam edir. Ən nəzərə çarpan dəyişikliklər:

  • İstinad tərtibçisi kimi Rust 1.57-nin stabil buraxılışından istifadəyə keçid edilib və Rust 2021 dilinin stabilləşdirilmiş nəşrinə keçid təmin edilib. Əvvəllər yamalar Rust-un beta filialına bağlanıb və bəzi dil xüsusiyyətlərindən istifadə edilib. qeyri-sabit kimi təsnif edildi. Rust 2021 spesifikasiyasına keçid bizə const_fn_transmute, const_panic, const_unavailable_unchecked və core_panic və try_reserve kimi yamaqlarda qeyri-sabit funksiyaların istifadəsinin qarşısını almaq üçün işə başlamağa imkan verdi.
  • Yamaqlara daxil olan Rust kitabxanasının ayırma versiyasının inkişafı davam etdi, yaddaşın boşalması kimi səhvlər baş verdikdə "çaxnaşma" vəziyyətinin mümkün nəsil yaddaş ayırma funksiyalarını aradan qaldırmaq üçün dəyişdirildi. Yeni versiya kernel Rust kodunda istifadə olunmayan funksionallığı aradan qaldırmaq üçün “no_rc” və “no_sync” seçimlərini tətbiq edərək kitabxananı daha modul edir. Kernel üçün lazım olan dəyişiklikləri əsas kitabxanaya köçürməyə yönəlmiş əsas ayırma tərtibatçıları ilə iş davam edir. Kitabxananın nüvə səviyyəsində işləməsi üçün tələb olunan “no_fp_fmt_parse” seçimi Rust baza kitabxanasına (əsas) köçürüldü.
  • CONFIG_WERROR rejimində nüvəni qurarkən mümkün kompilyator xəbərdarlıqlarından xilas olmaq üçün kod təmizlənmişdir. Rust-da kod qurarkən əlavə kompilyator diaqnostik rejimləri və Clippy linter xəbərdarlıqları aktivləşdirilir.
  • Abstraksiyalar ardıcıl bloklamalar (ardıcıllıq kilidləri), gücün idarə edilməsi üçün geri çağırışlar, I/O Yaddaş (readX/writeX), kəsmə və mövzu işləyiciləri, GPIO, cihazlara, sürücülərə və etimadnaməyə giriş üçün Rust kodunda istifadə üçün təklif olunur.
  • Sürücülərin inkişafı üçün alətlər dəyişdirilə bilən mutexeslər, bit iteratorları, sadələşdirilmiş göstərici bağlamaları, təkmilləşdirilmiş nasazlıq diaqnostikası və məlumat avtobusundan müstəqil infrastruktur daxil olmaqla genişləndirilib.
  • Referansların sayılması üçün eyni adlı kernel API-dən istifadə edən refcount_t backend əsasında sadələşdirilmiş Ref növündən istifadə etməklə keçidlərlə təkmilləşdirilmiş iş. Standart ayırma kitabxanasında təqdim olunan Arc və Rc növləri üçün dəstək silindi və nüvə səviyyəsində icra edilən kodda mövcud deyil (kitabxananın özü üçün bu növləri söndürən seçimlər hazırlanmışdır).
  • Yamalar Rust-da yenidən yazılmış PL061 GPIO sürücüsünün versiyasını ehtiva edir. Sürücünün özəlliyi ondan ibarətdir ki, onun icrası demək olar ki, sətir-sətir C dilində mövcud GPIO sürücüsünü təkrarlayır. Rust-da drayverlərin yaradılması ilə tanış olmaq istəyən tərtibatçılar üçün C kodunun Rust-da hansı konstruksiyalara çevrildiyini anlamağa imkan verən sətir-sətir müqayisəsi hazırlanmışdır.
  • Əsas Rust kod bazası libgccjit kitabxanasından istifadə edərək vaxtından əvvəl (AOT) tərtibini həyata keçirən GCC üçün rustc backend olan rustc_codegen_gcc-i qəbul etmişdir. Backendin düzgün inkişafı ilə o, GCC-dən istifadə edərək nüvədə iştirak edən Rust kodunu toplamağa imkan verəcək.
  • ARM, Google və Microsoft-dan əlavə Red Hat Linux nüvəsində Rust dilindən istifadə etməkdə maraqlı olduğunu bildirib. Xatırladaq ki, 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. Microsoft Hyper-V üçün drayverləri Rust-da tətbiq etməyə başlayıb. ARM, ARM əsaslı sistemlər üçün Rust dəstəyini təkmilləşdirmək üzərində işləyir. IBM PowerPC sistemləri üçün nüvədə Rust dəstəyini tətbiq etmişdir.

Mənbə: opennet.ru

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