11 puan yazan GN⁺ 2025-02-21 | 24 yorum | WhatsApp'ta paylaş

Rust neden Linux çekirdeğine dahil edilmeli?

  • Son 15 yılda neredeyse tüm Linux çekirdeği hata düzeltmelerini ve güvenlik sorunlarını incelemiş biri olarak, Rust’un neden gerekli olduğundan söz etmek istiyorum
  • Her hata düzeltmesi kararlı sürüm ağacına girmiyor, ancak önemli olanlar genellikle giriyor ve ben de tüm çekirdek CVE’lerini kontrol eden bir konumdayım

C’nin sınırları ve Rust’un avantajları

  • Linux çekirdeğinde ortaya çıkan hataların büyük kısmı C dilinin yapısal sınırlamalarından kaynaklanıyor
  • Özellikle, basit hatalardan doğan bug’lar çok yaygın ve bu tür sorunlar Rust’ta neredeyse hiç görülmüyor
    • Bellek üzerine yazma (Rust her durumu yakalamasa da bunun önemli bir bölümünü çözebilir)
    • Hata yolu temizliği sorunları
    • Hata değeri kontrolünün atlanması
    • Use-after-free (serbest bırakıldıktan sonra kullanım) hataları
  • Rust çekirdeğe dahil edildiğinde geliştiriciler ve bakımcılar bu tür temel hatalarla uğraşmak yerine gerçek anlamda zor problemlere (mantık hataları, yarış durumları vb.) odaklanabilir

Mevcut C kod tabanı da korunmalı

  • Bugünkü Linux çekirdeği 30 milyondan fazla satır C kodundan oluşuyor ve bunun kısa sürede Rust ile değiştirilmesi mümkün değil
  • Bu nedenle Kees, Gustavo ve diğer geliştiricilerin yürüttüğü C kodunu daha güvenli hale getirme çalışmaları gerekli ve sürdürülmeli
  • İdeal yaklaşım, Rust’un mevcut kodu tamamen değiştirmesi değil, yeni kodun (özellikle sürücülerin) Rust ile yazılarak sorunların azaltılması

Rust’un sunduğu API güvenliği

  • Rust, çekirdek içi API’lerin daha güvenli ve daha kolay kullanılacak şekilde tasarlanmasını sağlar
  • Mevcut C tabanlı çekirdek API’leri karmaşık, hata yapmaya açık ve bakımcıların çok ayrıntılı inceleme yapmasını gerektiren bir yapıda
  • Örneğin struct cdev gibi yapıları güvenli kullanmanın birden fazla yolu var ve bunu doğru uygulamak için ciddi deneyim gerekiyor
  • Rust ile API’ler daha net tanımlanabildiği için geliştiricilerin hata yapma olasılığı büyük ölçüde azaltılabilir
  • Bu yalnızca Rust kullananlar için değil, mevcut C kodunu kullananlar için de faydalı bir değişim
Reklam

Rust’u benimsemenin zor olacağı yönündeki endişelere yanıt

  • Rust her şeyi çözen sihirli bir araç değil → ancak mevcut sorunların önemli bir bölümünü çözebilir
  • Bakımcıların yükü artacak → ancak Rust’un çekirdeğe girmesini isteyen geliştiriciler bu işi doğrudan kendileri yapıyor
  • Karma dilli bir kod tabanını bakımının zor olması → ancak Linux çekirdeği şimdiye kadar bundan çok daha zor sorunları çözdü

Sonuç

  • Linux, dünyanın dört bir yanında sayısız geliştiricinin sorun çözmek için kullandığı bir araç ve
  • artık donanım için güvenli kod yazmak isteyen geliştiricilerin talebi varsa, bu talep göz ardı edilmemeli
  • Linux geliştirme modeli, kimsenin öngöremediği bir ölçekte büyüyerek olağanüstü bir mühendislik yetkinliği gösterdi
  • Artık Rust’u benimseyerek önümüzdeki 20 yıldan fazlası için ilerleme zamanı

Yeni teknolojileri ve fikirleri benimsemeli, toplulukla birlikte başarıya ulaşmak için çalışmalıyız.

24 yorum

 
bus710 2025-02-23

Rust’un benimsenmesi, memory safety düşünüldüğünde kaçınılması zor bir değişiklik gibi görünüyor. Muhtemelen uygun bir orta yol bulunarak yeniden toparlanmaya çalışılacaktır.

Ama kişisel olarak Rust’ın anahtar sözcükleri gözüme pek tanıdık gelmiyor; uzun zaman sonra tekrar baktığımda da hatırlamak zor oluyor, bu yüzden bir türlü elim gitmiyor ;;;; Hepsinin gerekli olduğunu biliyorum ama bazen İngilizcedeki düzensiz fiilleri zorla ezberliyormuşum gibi hissettiriyor. Buna rağmen Rust ile yazılmış çıktıların sahada daha az sorun çıkardığı da bir gerçek olunca.....

 
lostid 2025-02-22

Henüz olgunlaşmamış bir dili çekirdeğe dahil etmek istememenin bu kadar eleştirilecek bir şey olup olmadığından emin değilim. Şu anda çevrenizde Rust’a gerçekten hakim birini bulmaya kalksanız neredeyse yok denecek kadar az değil mi? Bana kalırsa dil biraz daha olgunlaştığında ve kullanıcı tabanı da eski dillerin kullanıcıları kadar olmasa bile yeterince oluştuğunda dahil edilse de geç kalınmış sayılmaz. Rust dilinin faydalı olduğu, Linux çekirdeğine uygulanmasa bile fazlasıyla kanıtlanabilir diye düşünüyorum.

 
pcpenpal 2025-02-22

Rust’ın şu anki haliyle bile "hâlâ olgunlaşmamış bir dil" denmesini duymak başlı başına şaşırtıcı ama, bundan ayrı olarak, çekirdekte hâlâ güvenli olmayan dillerin ağırlığını azaltmaya çalışmanın bu kadar yerilmesi gereken bir şey olup olmadığını da sorguluyorum. Hemen çevrenizde, C dilinde çekirdeğe katkı yapabilecek düzeyde ustalaşmış ve güvenli kod yazabilen çok kişi var mı gerçekten? C dilinden daha fazla olgunlaşma beklemektense, yeni çağın gereksinimlerinin yeterince netleştiği bugün tam da geç kalınmamış bir zaman gibi görünüyor.

Rust zaten hâlihazırda faydalı; çekirdeğe dahil olmaya çalışmasının nedeni de faydalı olduğunu kanıtlamak olmayacaktır.

 
aer0700 2025-02-22

İlk başta Rust’ı kullanmaya karar verdiklerinde, muhtemelen bununla ilgili bazı tartışmalar olmuştur.
C konusunda yetkin olanlarla Rust konusunda yetkin olanların hangisinin havuzunun daha geniş olduğunu düşünürsek, C tarafı ezici biçimde daha büyük görünüyor.
Alan bilgisine zaten tamamen sahip bir programcının bir dil daha öğrenmesi o kadar da büyük bir mesele mi diye düşünülebilir,
ama çekirdek üzerinde çalışan kişilerin talep ettiği yetkinlik seviyesi bambaşka bir konu olsa gerek...

 
roxie 2025-02-22

Bu görüş de güzelmiş.

 
nemo1275 2025-02-21

Forklayıp ayrılsın denmesini hiç anlayamıyorum. Linus neden Linux'tan fork alıp ayrılsın ki?

 
regentag 2025-02-22

Linus'a “forklayıp ayrıl” diyen biri var mı? Bu tartışmada bunu söyleyen birini görmedim sanırım..

 
cloverhearts 2025-02-21

Ben de bir Rust kullanıcısıyım, ancak Rust kodu ile C kodu iç içe geçtiğinde, açık kaynakta Rust koduna ne ölçüde izin verileceğine dair çok sıkı kurallar olmadıkça bunun kontrol edilemez hâle geleceğini ya da en azından inceleme ve bakım maliyetini ciddi biçimde artıracağını düşünüyorum; bu yüzden ekleme yapmadan bir fork açmanın en akıllıca seçenek olduğu kanaatindeyim.

 
aer0700 2025-02-21

Çekirdek konusunda çok bilgili değilim ama C kodunu Rust'a otomatik çevirmek mümkün olsa güzel olurdu diye düşünüyorum. Elbette kod çevirisi sorununun yanı sıra insanlarla ilgili sorunlar da olacaktır.

 
regentag 2025-02-21

Çekirdeğe Rust eklenmesini isteyen bu kadar çok kişi varsa, projeyi fork'layıp yeni bir projeye geçemezler mi? Sonra yeterince olgunlaştığında büyük dağıtımlar Rust tabanlı çekirdeğe geçer diye düşünüyorum.
Neden birbirleriyle kavga ettiklerini pek anlayamıyorum.

 
gurugio 2025-02-21

Kernel geliştirme deneyiminiz olup olmadığını tam bilmediğim için ne söylemem gerektiğinden emin değilim.
Öncelikle, Rust dilini uygulamak demek çekirdeği Rust’a çevirelim demek değildir. Bunu ayırıp bir başka çekirdek daha yapsak olmaz mı diye sorabilirsiniz, ancak
amaç çekirdeği Rust ile yazmak değil; çekirdekte aygıt sürücüleri için yalnızca arayüzü Rust ile bir wrapper olarak hazırlayıp aygıt sürücülerinin sadece Rust ile
yazılabilmesini sağlayacak şekilde iyileştirme yapmayı önermektir. Bu yüzden yeni bir projeye gitmenin bir anlamı yoktur.

 
regentag 2025-02-21

Linux tarafında geliştirme yapmışlığım yok.
Aygıt sürücülerinin Rust wrapper'ları çekirdekten ayrılamayan bir yapıda sanırım...

 
mammal 2025-02-21

Çekirdek kararlılığı gerekçesiyle zehirli üslubu meşrulaştıragelen Linux topluluğunun, şimdi dönüp de "hoşuna gitmiyorsa fork'la" tepkisini makul bir yanıt sayması gerçekten ironik.

 
regentag 2025-02-21

Linux topluluğundan değilim ama...

 
roxie 2025-02-21

O kişilerle bu yorumu yazan kişiyi aynı topluluk olarak görmememiz gerektiğini düşünüyorum.

 
jeiea 2025-02-21

Fork’un sonucunun bir geçiş mi olacağı yoksa tam bir parçalanma dönemi mi olacağı konusunda öngörüde bulunmanın zor olabileceğini düşünüyorum.
Fork’tan sonra da upstream değişikliklerini yansıtmak pek keyifli bir durum olmayacaktır.

 
savvykang 2025-02-21

https://tr.news.hada.io/topic?id=16860
Realtime Linux çatallanmasının 20 yıl sonra birleştirildiğini görünce, çatallamaya karar verirken daha temkinli olmak gerekmez mi diye düşünüyorum

 
regentag 2025-02-21

Bunu görünce bunu söylemiştim.
Gerçek zamanlı işlevler uzun süre çekirdekten ayrı bir proje olarak sürdürülebilmişti ve buna ihtiyaç duyanlar bunu alıp çekirdeğe uygulayarak kullanabiliyordu.

 
ilsubyeega 2025-02-21

Rust kullanıcısıyım ama r/rust'ta hgwxx7_ tarafından yazılan şu yorum beni etkiledi1.

Bence Greg'in burada gerçekten çok iyi yaptığı şey, teknik liderliği göstermesi. Liderlik haklı olmak demek değildir. O haklı, ama mesele bu değil.

Liderlik, en iyi olduğunu düşündüğü yolda insanları da beraberinde getirmek demektir. Karşı çıkan bakımcıları azarlayıp zorlamıyor ya da kırbaç sallamıyor. Bunun yerine önce, iki dilli bir kod tabanını sürdürmeye dair son derece geçerli kaygılarını kabul ediyor. Bu iyi bir şey, çünkü bu konuda haklılar; işler kolaylaşmadan önce hayatları gerçekten zorlaşıyor.

Sonra da ilham verici bir notla bitiriyor; çok daha zor şeyler yaptıklarını ve bunun yeteneklerinin gayet içinde olduğunu hatırlatıyor. Onları nazikçe R4L geliştiricilerini hoş karşılamaya teşvik ediyor.

Liderlik konusunda tam bir ustalık dersi.
Diğer bakımcılar bunu okuduklarında ikna olur mu bilmiyorum. Ama benim için bundan daha ikna edici bir anlatım düşünmek zor.

 
gurugio 2025-02-21

Stable sürüme backport gerektiğinde ya da benzeri bir nedenle iletişime geçtiğimde, o kadar yoğunken bile çok iyi yanıt verdiğini hatırlıyorum.

 
codemasterkimc 2025-02-21

"Rust doğru cevap değil ama Java ve Python'a göre doğru cevaba daha yakın." -codemaster kimc-

 
GN⁺ 2025-02-21
Hacker News görüşü
  • Rust binding'leri varsa çekirdeğin iç ABI'si serbestçe evrimleşemez ve proje C çekirdeği ile Rust tarafı arasında bölünme riski taşır. Ancak iç API istikrara kavuşursa Linux için faydalı olabilir
  • Asıl mesele topluluk ve insanlar. Şu anda çekirdek üzerinde çalışan kişiler bu yönü beğenmiyorsa bu büyük bir sorun
  • Linux liderliği insan unsuruna odaklanmıyor gibi görünüyor. Şu anda çekirdek geliştiren kişilerin bu yöne katıldığına dair kanıtın nerede olduğu sorgulanıyor
  • Rust'ı benimsemenin getireceği faydadan çok acı getireceğini düşünenler var. Faydaların başka yollarla da elde edilebileceğini düşünüyorlar
    • Örneğin bounds checking ve RAII gibi basit ayırma/serbest bırakma sadeleştirmeleri Rust olmadan da mümkün olabilir
    • Clang'i zorunlu derleyici yapıp bu tür genişletmeleri benimsemekle etki daha kolay elde edilebilir
  • Yeni kodun/sürücülerin Rust ile yazılması bu tür hataların ortaya çıkmamasını sağlar. Bu herkesin yararınadır
  • Çoğu insan bellek güvenliği istiyor ama genel bakım sorumlusu olmak istemiyor
  • Projenin gerçek hedefi iç çekirdek API yüzeyini modernleştirmek. Bu API'yi Rust ile yazmanın ne kadar sürdürülebilir olduğu, ilerlemeyi ölçmek için en iyi gösterge
  • Son 15 yılda neredeyse tüm çekirdek hata düzeltmelerini ve güvenlik sorunlarını görmüş biri olarak, hataların çoğu C'nin küçük köşe durumlarından kaynaklanıyor. Rust'ta bu sorunlar ortadan kalkıyor
  • Yeni kodun/sürücülerin Rust ile yazılması bu tür hataların ortaya çıkmamasını sağlar. C++ bu faydaları sunmuyor
  • Rust, çekirdek API'sini tanımlarken hata yapmayı neredeyse imkansız hale getiriyor. Bu da Linux'u genel olarak daha iyi yapıyor
  • Rust binding'leri sihir gibi görünüyor ama öğrenmeye ve geliştiricilerle iş birliği yapmaya istek var
  • Rust tüm sorunları çözen sihirli değnek değil ama birçok açıdan yardımcı oluyor
  • Linux, herkesin sorun çözmek için kullandığı bir araç. Geliştiriciler donanım için kod yazarken bu tür hataların ortaya çıkmaması isteniyor
  • Karma dilli bir kod tabanının bakımı zor ama biz çekirdek geliştiricileriyiz. Yeni fikirleri benimsemeli ve birlikte başarılı olmak için çabalamalıyız
  • Bu tartışmayı ileri taşımak için bu açıklamaya ihtiyaç vardı
  • Teknik avantajlara odaklanılıyor ama yeni bir programlama dili/araç zinciri öğrenmenin gerektirdiği çaba yeterince değerlendirilmiyor
  • Yeni bir programlama dilinde ustalaşmak kolay değil ve bazı bakımcılar kişisel ilgi/motivasyon eksikliği nedeniyle bunu istemeyebilir
  • C++ dil komitesiyle ilgili sorunlar, herkesin mümkün olduğunca hızlı şekilde bu dilden vazgeçmesi gerektiğine işaret ediyor.
 
hbahk42 2025-02-22

Böyle nefret dolu yorumlar bildirilemiyor mu?

 
kodingwarrior 2025-02-22

Katılıyorum.