Ana Sayfa

C'den Rust'a Çevirilerin Kod Kalitesi Analizi

1 dk okuma

C/C++ programlama dili yaygın olarak kullanılsa da, önemli bellek ve iş parçacığı güvenliği sorunları barındırmaktadır. Son dönemde yapılan çalışmalar, C/C++ kodunu Rust gibi daha güvenli dillere otomatik olarak çevirmeyi araştırmıştır. Ancak bu çalışmalar genellikle çevrilen kodun doğruluğuna ve güvenliğine odaklanmış, performans, sağlamlık ve sürdürülebilirlik gibi diğer önemli kalite endişelerini büyük ölçüde göz ardı etmiştir. Bu makale, üç farklı C'den Rust'a çevirici aracın (C2Rust, C2SaferRust ve TranslationGym) güçlü ve zayıf yönlerini derinlemesine incelemektedir.

Araştırma, popüler GNU coreutils'un Rust'a çevrilmiş kodunun çeşitli önemli kalite nitelikleri üzerinde nicel ve nitel bir analiz gerçekleştirmektedir. İnsan tarafından yazılmış çeviriler bir temel olarak kullanılmıştır. Rust kodunun iç ve dış kalitesini değerlendirmek için Clippy adlı kural tabanlı bir Rust statik analiz aracı kullanılmış, bir büyük dil modelinin (GPT-4o) Clippy tarafından gözden kaçabilecek sorunları tespit etme yeteneği araştırılmış ve Clippy ile GPT-4o tarafından bildirilen sorunlar manuel olarak analiz edilmiştir.

Sonuçlar, yeni tekniklerin bazı güvensiz ve idiomatik olmayan kalıpları azalttığını, ancak sıklıkla yeni sorunlar ortaya çıkardığını göstermektedir. Bu durum, mevcut değerlendirme uygulamalarında görünmeyen sistematik ödünleşimleri ortaya koymaktadır. Özellikle, otomatik tekniklerin hiçbiri, tüm kalite boyutlarında insan tarafından yazılmış çevirilerle tutarlı bir şekilde eşleşememekte veya onları aşamamaktadır. Hatta insan tarafından yazılmış Rust kodunun bile okunabilirlik ve idiomatik olmayan kalıplar gibi kalıcı iç kalite sorunları sergilediği görülmüştür. Bu bulgular, çeviri kalitesinin çok boyutlu bir zorluk olmaya devam ettiğini ve hem basit otomasyonun hem de manuel yeniden yazmanın ötesinde sistematik değerlendirme ve hedefe yönelik araç desteği gerektirdiğini ortaya koymaktadır.

İçgörü

C kodunu Rust'a otomatik çevirme araçlarının, güvenlik sorunlarını giderirken bile yeni kalite sorunları yaratabildiği ve insan çevirilerinin bile mükemmel olmadığı ortaya konuyor.

Kaynak