Rust dili desteğiyle Linux çekirdeğine yönelik yamaların dördüncü sürümü

Rust-for-Linux projesinin yazarı Miguel Ojeda, Linux çekirdek geliştiricilerinin değerlendirmesi için Rust dilinde aygıt sürücüleri geliştirmeye yönelik bileşenlerin dördüncü bir versiyonunu önerdi. Rust desteğinin deneysel olduğu düşünülüyor, ancak linux-sonraki dalına dahil edilmesi üzerinde halihazırda anlaşmaya varıldı ve sürücü ve modül yazmanın yanı sıra çekirdek alt sistemleri üzerinde soyutlama katmanları oluşturma çalışmalarına başlamak için yeterince olgunlaştı. Geliştirme, Google ve Let's Encrypt projesinin kurucusu olan ISRG (İnternet Güvenliği Araştırma Grubu) tarafından finanse ediliyor ve HTTPS'yi ve İnternet güvenliğini artıracak teknolojilerin geliştirilmesini destekliyor.

Önerilen değişikliklerin Rust'un sürücü ve çekirdek modüllerini geliştirmek için ikinci bir dil olarak kullanılmasını mümkün kıldığını hatırlayın. Rust desteği, varsayılan olarak etkin olmayan bir seçenek olarak sunulur ve Rust'un çekirdek için gerekli bir yapı bağımlılığı olarak dahil edilmesine yol açmaz. Sürücü geliştirme için Rust'u kullanmak, minimum çabayla, serbest bırakma sonrasında belleğe erişim, boş işaretçi referansları ve arabellek aşımları gibi sorunlardan arınmış, daha güvenli ve daha iyi sürücüler oluşturmanıza olanak tanır.

Rust'ta derleme zamanında referans kontrolü, nesne sahipliği ve nesne ömrünün (kapsam) izlenmesi ve ayrıca kod yürütme sırasında bellek erişiminin doğruluğunun değerlendirilmesi yoluyla güvenli bellek kullanımı sağlanır. Rust ayrıca tamsayı taşmalarına karşı koruma sağlar, kullanımdan önce değişken değerlerinin zorunlu olarak başlatılmasını gerektirir, standart kitaplıkta hataları daha iyi işler, değişmez referanslar ve değişkenler kavramını varsayılan olarak uygular, mantıksal hataları en aza indirmek için güçlü statik yazım sunar.

Yamaların yeni versiyonu, yamaların birinci, ikinci ve üçüncü baskıları tartışılırken yapılan yorumları ortadan kaldırmaya devam ediyor. Yeni versiyonda:

  • Referans derleyici olarak Rust 1.58.0'ın kararlı sürümünün kullanılmasına geçiş yapıldı. Proje için gerekli olan ve henüz ana Rust araç setine dahil edilmeyen değişiklikler arasında “-Zsymbol-mangling-version=v0” bayrağı (Rust 1.59.0'da bekleniyor) ve “maybe_uninit_extra” modu (Rust 1.60.0'da bekleniyor) yer alıyor. .XNUMX) not edilir.
  • Uygun Rust araçlarının kullanılabilirliği için otomatik kontroller eklendi ve sistemdeki Rust desteğini test etme yeteneği genişletildi.
  • Rust kodundan cihaz tanımlayıcı tablolara (“IdArray” ve “IdTable”) erişim için yeni soyutlamalar önerildi.
  • Zamanlayıcıyla ilgili işlevlere (saat çerçevesi) erişim için katmanlar eklendi.
  • Platform sürücüleri artık özellik uygulamaları aracılığıyla tanımlanıyor.
  • Platform sürücülerinin kaydını kolaylaştırmak için yeni bir makro eklenmiş ve yeni bir genel sürücü şablonu önerilmiştir.
  • "dev_*" yapıları için makrolar eklendi.
  • IoMem türü için "{read,write}*_relaxed" yöntemleri eklendi .
  • Dosya işlemlerini basitleştirmek için FileOpener özelliği kaldırıldı.
  • Sürücü kaydı sırasında iletilen argümanlara “ThisModule” parametresi eklendi.
  • Rust dilinde çekirdek modülleri oluşturmak için standart bir şablon önerilmektedir.

Kaynak: opennet.ru

Yorum ekle