3 puan yazan GN⁺ 2024-07-31 | 1 yorum | WhatsApp'ta paylaş
  • C’yi Rust’a çevirmek (TRACTOR)

    • Dr. Dan Wallach
    • C ve C++’taki bellek güvenliği sorunlarını çözmeye yönelik 20 yılı aşkın çabanın ardından, yazılım mühendisliği topluluğu bir sonuca ulaştı
    • Yalnızca hata bulma araçlarına güvenmek yeterli değil
    • Derleme zamanında güvenli olmayan programları reddedebilen "güvenli" programlama dillerini kullanmak tercih ediliyor
    • TRACTOR programı, mevcut C kodunu otomatik olarak Rust’a çevirmeyi hedefliyor
    • Amaç, yetkin bir Rust geliştiricisinin yazdığıyla aynı kalite ve stile ulaşarak C programlarında ortaya çıkan bellek güvenliği kaynaklı güvenlik açıklarını ortadan kaldırmak
    • Bu program; statik analiz, dinamik analiz ve büyük dil modelleri gibi makine öğrenimi tekniklerinin yeni bir birleşimini içerebilir
    • Ek bilgi SAM.Gov’daki TRACTOR Special Notice üzerinden görülebilir
  • DARPA’nın başlıca başarıları

    • Stealth devrimi

      • DARPA’nın stealth teknolojisi araştırmalarının ilk dönemlerinde, F-117A’nin prototipi olan Have Blue 1977’de ilk başarılı uçuşunu gerçekleştirdi
      • F-117A programının başarısı, ulusal güvenliğe büyük faydalar sağlayan stealth devriminin başlangıcını işaret etti
    • Avuç içindeki navigasyon

      • İlk GPS alıcıları büyük ve ağır cihazlardı
      • 1983’te DARPA bunları küçültmek için çalıştı ve GPS işlevlerinin çok daha geniş çapta benimsenmesine öncülük etti
    • Modern internetin yolunu açmak

      • ARPA araştırmaları bilgi devrimini başlatmada önemli bir rol oynadı
      • ARPANET’in kavramsal temelini geliştirdi ve internetin doğuşuna yol açan dijital protokolleri icat etti
  • GN⁺ özeti

    • TRACTOR programı, mevcut C kodunu otomatik olarak Rust’a çevirerek bellek güvenliği sorunlarını çözmeye yönelik önemli bir girişim
    • DARPA’nın araştırmaları; stealth teknolojisi, GPS’in küçültülmesi ve internetin doğuşu gibi modern teknolojik gelişmelere büyük katkı sağladı
    • Bu yazı, yazılım mühendisleri ve teknoloji tarihine ilgi duyan kişiler için faydalı olabilir
    • Benzer işlevlere sahip projeler arasında Microsoft’un Checked C’si ve Google’ın Carbon dili bulunuyor

1 yorum

 
GN⁺ 2024-07-31
Hacker News yorumu
  • Usta bir programcının yazdığı Rust, C'den çok farklıdır ve ilgi çekici kodların çoğu C++ ile yazılır

    • Bir C programındaki tüm tahsislerin yaşam sürelerini statik olarak belirlemek çok zor bir problemdir
    • C/C++ programları tahsis yaşam süresini kullanıcı tıklaması gibi olaylara bağlayabilir
    • Analiz edilmeye çalışılan program hatalıysa yaşam süresi anlamsız olabilir
    • Mevcut araştırmalar, analiz edilen kodun doğru olduğunu varsayar
  • Bu önerinin kamuya açıklanmış olması ilginç

    • Otomatik çevirinin uygulanabilirliğine dair beklentileri yönetmeye çalışıyorum
    • C kaynak kodu, Rust kaynak kodundan daha az bilgi içerir
    • Eksik bilgiyi üretmek imkansızdır
    • Doğru çıkarım yapabilmek için yargı gerekir ve bu hata üretebilir
    • Proje belli ölçüde başarılı olabilir, ancak temkinli yaklaşmak gerekir
    • Bunun, hükümetin C'yi toptan kötülediği ya da Rust'ı toptan övdüğü şeklinde yorumlanmamasını umuyorum
  • "Dünyayı Rust ile yeniden yazalım" düşünce tarzını sevmiyorum

    • Bir projeyi yeni bir dil veya platforma taşımak için mekanik çeviri iyi değildir
    • Daha iyi bir mimari planlamak ve yazılım sistemini tasarlamak için zaman ayırmak gerekir
    • Rust kullanmaya karar verdiyseniz, Rust ile yazmalısınız
    • C'yi modern C'ye güncellemek ve bellek, kaynak ve tamsayı aritmetiği güvenliğini doğrulamak için model checker kullanmak daha iyidir
  • Birçok kişi bu projeyi C ve C++ kodunu Rust'a çevirme çağrısı olarak okuyor

    • C ve C++ özünde güvenli değildir
    • Mümkün olduğunca çok kod güvenli bir dile çevrilmeli veya güvenli bir dilde yazılmalıdır
    • Mevcut C kodunu Rust'a çeviren yazılımların desteklenmesini savunuyorum
    • Amaç, dünyayı Rust ile yeniden yazma konusunda bir uzlaşı değil, güvenli dillere geçiştir
  • Çevrilmiş kod tabanını sürdürmekte sorunlar var

    • C ile yazılmış bir kod tabanına ve bunu sürdürebilecek bir C mühendisleri ekibine ihtiyaç vardır
    • Otomatik çevrilmiş Rust kod tabanı, orijinalinden daha zor okunur ve anlaşılır olabilir
    • Bir Rust mühendisleri ekibi de gerekir
    • Zaten Rust mühendisleriniz varsa, kodu elle yeniden yazmak daha iyidir
  • Otomatik port eden bir program, C kodunu güvenli hale getirebilecek tüm yetenekleri içermek zorundadır

    • Rust'ta bellek hataları yoksa ve C otomatik çevrilebiliyorsa, tüm bellek hataları da otomatik olarak düzeltilebilir olmalıdır
    • Bu genelde mümkün değildir
  • Mozilla'dan işten çıkarılan yetenekli mühendisleri önce işe alıp dilin kendisi üzerinde çalışmayı sürdürmelerini sağlamak daha iyi olur

    • Asenkron işleme hâlâ tamamen tamamlanmış değil
    • Çeşitli sorunlar var
  • DARPA'nın bu sorunu zorlaması iyi

    • Güvenli Rust'a çevirmek çok zordur
    • Şu anda C'den Rust'a çeviri araçları var, ancak sonuçların bakımı zor
    • Bunun doğru yapılabilmesi için dizi boyutları ve doğrusal olmayan pointer kullanımı sorunlarının çözülmesi gerekir