Rust geliştirme araçlarının Linux çekirdeğine eklenmesi sorununun tartışılması önerisi

Nick Desagnier (Nick Desaulniers), sağlamak için Google'da çalışan destek Clang derleyicisini kullanarak Linux çekirdeğini oluşturmak ve ayrıca yardım ediyor Rust derleyicisindeki hataları düzeltin, önerilen bir konferansta bulunmak Linux Tesisatçıları Konferansı 2020 Rust'ta çekirdek bileşenleri geliştirmeyi mümkün kılmanın tartışıldığı oturum. Nick, LLVM'ye adanmış bir mikro konferans düzenliyor ve Rust desteğinin çekirdeğe olası entegrasyonunun teknik yönlerini tartışmanın (zaten KBuild için çalışan bir prototip hazırladı) ve böyle bir desteğin gerekli olup olmadığını anlamanın güzel olacağına inanıyor. eklenmesi ve Rust kullanımına ilişkin hangi kısıtlamaların kabul edilmesi gerektiği.

Açık Kaynak Zirvesi ve Gömülü Linux konferansındaki yakın tarihli bir tartışmada Linus Torvalds'ın şunu hatırlayalım: dışlamadı Rust gibi dillerde çekirdek olmayan çekirdek alt sistemlerinin (örneğin sürücüler) geliştirilmesine yönelik bağlamaların ortaya çıkışı. Rust'ta sürücü geliştirme yeteneği, minimum çabayla, serbest bırakma sonrasında belleğe erişim, boş işaretçi referansları ve arabellek aşımları gibi sorunlar olmadan daha güvenli ve daha iyi sürücüler oluşturmamıza olanak tanıyacaktır. Bu özelliği uygulayacak birçok üçüncü taraf projesi zaten mevcut:

  • “Fıçıda Balık” şirketinden geliştiriciler подготовили Güvenliği artırmak için arayüzler ve çekirdek yapıları üzerinde bir dizi soyut katman kullanarak, Rust dilinde Linux çekirdeği için yüklenebilir modüller yazmaya yönelik bir araç seti. Katmanlar, yardımcı program kullanılarak mevcut çekirdek başlık dosyalarına göre otomatik olarak oluşturulur. bağlama. Clang katmanları oluşturmak için kullanılır. Ara katmanlara ek olarak, birleştirilen modüller staticlib paketini kullanır.
  • Hong Kong Çin Üniversitesi'nden araştırmacılar geliştirmek Rust'ta gömülü sistemler ve Nesnelerin İnterneti aygıtları için sürücüler geliştirmeye yönelik bir proje; bu proje aynı zamanda çekirdek başlık dosyalarına dayalı katmanlar oluşturmak için bağlamayı da kullanıyor. Çerçeve, çekirdekte değişiklik yapmadan sürücü güvenliğini artırmanıza olanak tanır - çekirdekteki sürücüler için ek izolasyon seviyeleri oluşturmak yerine, daha güvenli Rust dilini kullanarak derleme aşamasında sorunların engellenmesi önerilir. Böyle bir yaklaşımın, uygun bir denetim yapmadan aceleyle özel sürücüler geliştiren ekipman üreticileri tarafından talep edilebileceği varsayılmaktadır.
  • Çerçeve geliştiricileri C2Pas C kodunu Rust'a yayınlamak için, davranış minimum manuel düzenlemeyle çekirdek modüllerini dönüştürmeye yönelik deneyler. Belirtilen sorunlardan biri, kod çekirdeğinin birçok bölümünde henüz C2Rust'ta desteklenmeyen GCC uzantılarının kullanılmasıdır. Bu sorunu çözmek için C2Rust, satır içi, soğuk, takma ad, kullanılan ve bölüm GCC nitelikleri için destek eklemenin yanı sıra satır içi derleyicinin yeteneklerini genişletmeyi ve hem hizalanmış hem de paketlenmiş yapılarla (örneğin, xregs_state) sorunları çözmeyi planlıyor. . Manuel çalışma gerektiren önemli sorunlar arasında önemsiz olmayan C makrolarının Rust makrolarına çevrilememesi ve C2Rust'un C türlerini libc paketindeki tanımlara çevirmesi nedeniyle türlerin yeniden tanımlanması ihtiyacı yer alır, ancak bu paket çekirdek modüllerinde kullanılamaz.

Kaynak: opennet.ru

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster