Nick Desagnier (), sağlamak için Google'da çalışan Clang derleyicisini kullanarak Linux çekirdeğini oluşturmak ve ayrıca Rust derleyicisindeki hataları düzeltin, bir konferansta bulunmak 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: 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. . 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 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 C kodunu Rust'a yayınlamak için, 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
