Rust dilini destekleyen Linux çekirdeği için yamaların üçüncü sürümü

Rust-for-Linux projesinin yazarı Miguel Ojeda, Linux çekirdek geliştiricilerinin dikkate alması için Rust dilinde aygıt sürücüleri geliştirmeye yönelik üçüncü bir bileşen seçeneği önerdi. Rust desteğinin deneysel olduğu düşünülüyor, ancak linux-next şubesine dahil edilmesi üzerinde halihazırda anlaşmaya varıldı. 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 sürümü, yamaların birinci ve ikinci versiyonları tartışılırken yapılan yorumları ortadan kaldırmaya devam ediyor. En dikkat çekici değişiklikler:

  • Rust 1.57'nin kararlı sürümünün referans derleyici olarak kullanılmasına geçiş yapıldı ve Rust 2021 dilinin kararlı sürümüne bağlantı sağlandı. Daha önce yamalar Rust'un beta dalına bağlanıyordu ve bazı dil özelliklerini kullanıyordu. kararsız olarak sınıflandırıldı. Rust 2021 spesifikasyonuna geçiş, const_fn_transmute, const_panic, const_unavailable_unchecked ve core_panic ve try_reserve gibi kararsız özelliklerin yamalarda kullanılmasını önlemek için çalışma başlatmamıza olanak sağladı.
  • Yamalara dahil edilen Rust kütüphanesinin tahsis versiyonunun geliştirilmesine devam edildi ve hafızanın yetersiz olması gibi hatalar meydana geldiğinde olası "panik" durumu oluşumundan hafıza tahsis fonksiyonlarını ortadan kaldıracak şekilde değiştirildi. Yeni sürüm, çekirdek Rust kodunda kullanılmayan işlevleri devre dışı bırakmak için "no_rc" ve "no_sync" seçeneklerini uygulayarak kitaplığı daha modüler hale getiriyor. Çekirdek için gereken değişikliklerin ana kütüphaneye aktarılmasına yönelik ana alloc geliştiricileriyle çalışmalar devam ediyor. Kütüphanenin kernel düzeyinde çalışması için gerekli olan “no_fp_fmt_parse” seçeneği Rust temel kütüphanesine (çekirdek) taşındı.
  • Çekirdek CONFIG_WERROR modunda oluşturulurken olası derleyici uyarılarından kurtulmak için kod temizlendi. Rust'ta kod oluştururken ek derleyici teşhis modları ve Clippy linter uyarıları etkinleştirilir.
  • Seqlock'lar (sıra kilitleri), güç yönetimi için geri arama çağrıları, G/Ç Belleği (readX/writeX), kesme ve iş parçacığı işleyicileri, GPIO, cihazlara, sürücülere ve kimlik bilgilerine erişim için Rust kodunda kullanılmak üzere soyutlamalar önerilmektedir.
  • Sürücü geliştirme araçları, yeri değiştirilebilen muteksleri, bit yineleyicileri, basitleştirilmiş işaretçi bağlamalarını, gelişmiş hata tanılamayı ve veri yolundan bağımsız altyapıyı içerecek şekilde genişletildi.
  • Referansları saymak için aynı adı taşıyan çekirdek API'sini kullanan refcount_t arka ucunu temel alan basitleştirilmiş bir Ref türü kullanan bağlantılarla çalışma iyileştirildi. Standart alloc kütüphanesinde sağlanan Arc ve Rc türlerine yönelik destek kaldırılmıştır ve çekirdek seviyesinde çalıştırılan kodlarda mevcut değildir (kütüphanenin kendisi için bu türleri devre dışı bırakan seçenekler hazırlanmıştır).
  • Yamalar, PL061 GPIO sürücüsünün Rust'ta yeniden yazılan bir sürümünü içerir. Sürücünün özel bir özelliği, uygulamasının C dilinde mevcut GPIO sürücüsünü neredeyse satır satır tekrarlamasıdır. Rust'ta sürücü oluşturmayı öğrenmek isteyen geliştiriciler için, C kodunun Rust'ta hangi yapılara dönüştürüldüğünü anlamalarını sağlayan satır satır bir karşılaştırma hazırlandı.
  • Ana Rust kod tabanı, GCC için libgccjit kütüphanesini kullanarak önceden (AOT) derleme uygulayan bir Rust arka ucu olan Rustc_codegen_gcc'yi benimsemiştir. Arka ucun doğru şekilde geliştirilmesi, GCC'yi kullanarak çekirdeğe dahil olan Rust kodunu toplamanıza olanak tanır.
  • ARM, Google ve Microsoft'un yanı sıra Red Hat, Linux çekirdeğinde Rust dilinin kullanılmasıyla ilgilendiğini ifade etti. Google'ın Rust for Linux projesine doğrudan destek sağladığını, Rust'ta Binder süreçler arası iletişim mekanizmasının yeni bir uygulamasını geliştirdiğini ve Rust'ta çeşitli sürücüleri yeniden çalıştırma olasılığını düşündüğünü hatırlayalım. Microsoft, Rust'ta Hyper-V sürücülerini uygulamaya başladı. ARM, ARM tabanlı sistemler için Rust desteğini geliştirmek için çalışıyor. IBM, PowerPC sistemleri için çekirdekte Rust desteğini uyguladı.

Kaynak: opennet.ru

Yorum ekle