Linux çekirdeği için Rust dilini destekleyen yamaların ikinci 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 güncellenmiş bir sürümünü önerdi. Rust desteğinin deneysel olduğu düşünülüyor, ancak linux-next şubesine dahil edilmesi üzerinde halihazırda anlaşmaya varıldı. Yeni sürüm, yamaların ilk sürümüyle ilgili tartışmalar sırasında yapılan yorumları ortadan kaldırıyor. Linus Torvalds zaten tartışmaya katıldı ve bazı bit işlemlerini işleme mantığını değiştirmeyi önerdi.

Ö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ündeki en dikkat çekici değişiklikler:

  • Bellek ayırma kodu, bellek yetersizliği gibi hatalar meydana geldiğinde potansiyel olarak bir "panik" durumu oluşturmaktan kurtulur. Hatalarla başa çıkmak için kodu yeniden işleyen Rust alloc kütüphanesinin bir çeşidi dahil edilmiştir, ancak nihai amaç, çekirdek için gereken tüm özellikleri alloc'un ana sürümüne aktarmaktır (değişiklikler zaten hazırlanmış ve standarda aktarılmıştır). Rust kütüphanesi).
  • Gecelik derlemeler yerine, Rust destekli bir çekirdek derlemek için artık Rust derleyicisinin beta sürümlerini ve kararlı sürümlerini kullanabilirsiniz. Şu anda referans derleyici olarak Rusc 1.54-beta1 kullanılıyor ancak ay sonunda 1.54 sürümü yayınlandıktan sonra referans derleyici olarak desteklenecek.
  • Rust için standart "#[test]" özelliğini kullanarak test yazma desteği ve testleri belgelemek için doctest kullanma yeteneği eklendi.
  • Daha önce desteklenen x32_86 ve ARM64'e ek olarak ARM64 ve RISCV mimarileri için destek eklendi.
  • Artık tüm temel testleri geçen GCC Rust (Rust için GCC ön uç) ve Rustc_codegen_gcc (GCC için Rustc arka uç) uygulamaları iyileştirildi.
  • Kırmızı-siyah ağaçlar, referans sayılan nesneler, dosya tanımlayıcı oluşturma, görevler, dosyalar ve I/O vektörleri gibi C dilinde yazılmış çekirdek mekanizmalarının Rust programlarında kullanılmak üzere yeni bir soyutlama düzeyi önerilmiştir.
  • Sürücü geliştirme bileşenleri, file_operations modülü, modül! makrosu, makro kaydı ve temel sürücüler (araştırma ve kaldırma) için geliştirilmiş desteğe sahiptir.
  • Binder artık dosya tanımlayıcılarının ve LSM kancalarının aktarılmasını destekliyor.
  • Raspberry Pi kartlarının donanım rastgele sayı üreteci için bcm2835-rng adlı Rust sürücüsünün daha işlevsel bir örneği önerilmektedir.

Ayrıca bazı firmaların çekirdekte Rust kullanımına ilişkin projelerinden de bahsediliyor:

  • Microsoft, Rust desteğini Linux çekirdeğine entegre etme çalışmalarına katılmakla ilgilendiğini ifade etti ve önümüzdeki aylarda Rust üzerinde Hyper-V için sürücü uygulamaları sağlamaya hazır.
  • ARM, ARM tabanlı sistemler için Rust desteğini geliştirmek için çalışıyor. Rust projesi halihazırda 64 bit ARM sistemlerini Tier 1 platformu haline getirecek değişiklikler önerdi.
  • Google, Rust for Linux projesine doğrudan destek sağlıyor, Rust'ta Binder süreçler arası iletişim mekanizmasının yeni bir uygulamasını geliştiriyor ve Rust'ta çeşitli sürücüleri yeniden çalıştırma olasılığını değerlendiriyor. Google, ISRG (İnternet Güvenliği Araştırma Grubu) aracılığıyla Rust desteğini Linux çekirdeğine entegre etme çalışmaları için fon sağladı.
  • IBM, PowerPC sistemleri için Rust'a yönelik çekirdek desteğini uyguladı.
  • LSE (Sistem Araştırma Laboratuvarı) laboratuvarı Rust'ta bir SPI sürücüsü geliştirdi.

Kaynak: opennet.ru

Yorum ekle