C dili belirsiz davranışları azaltarak güvenliği artırıyor
Öne çıkanlar
- C komitesi, hazırlığı süren C2y taslağında standartta bulunan yaklaşık 100 belirsiz davranıştan 45'ini çıkardı.
- C23 standardı, derleyicilerin belirsiz davranış nedeniyle işlem sırasını geriye doğru bozmasını engelleyen kurallar getirdi.
- Derleyiciler, counted_by gibi öznitelikler sayesinde dizi sınır denetimlerini genişletilmiş alanlarda otomatik uyguluyor.
Kernel Recipes etkinliğinde konuşan Martin Uecker, C programlama dilindeki belirsiz davranış sorununu ve dilin bellek güvenliğine kavuşma potansiyelini değerlendirdi. C dilinin taşınabilirlik, uzun vadeli kararlılık ve hızlı derleme gibi güçlü yönlerini koruduğunu belirten Uecker, C89 dönemindeki donanım çeşitliliğinin soyut makine yaklaşımını zorunlu kıldığını anlattı. Bu durum, derleyicilere gözlemlenebilir davranış dışındaki alanlarda geniş serbestlik tanırken belirsiz davranış kaynaklı optimizasyon sorunlarına da zemin hazırladı.
Derleyici geliştiricilerinin belirsiz davranış içeren kod bloklarını tamamen yok sayması, yazılımcılar arasında ciddi semantik anlaşmazlıklarına yol açıyor. Örneğin sıfıra bölme veya tanımsız bellek okuma senaryolarında bazı derleyiciler mantık testlerini atlayarak hatalı kod üretiyor. C23 standardı bu optimizasyonların yarattığı zaman yolculuğu benzeri davranışları engellemek için yeni kurallar getirdi. C komitesi bünyesindeki çalışma grupları da bellek güvenliği ve nesne modelini netleştirmek amacıyla çalışmalarını sürdürüyor.
Standartta yer alan yaklaşık 100 belirsiz davranış örneğinden 45 adedi hazırlığı süren C2y taslağında kaldırıldı. Uecker, statik analiz araçları, derleyici uyarıları ve çalışma zamanı denetleyicileri sayesinde tip güvenliği ile uzamsal bellek denetiminin büyük ölçüde çözülebildiğini vurguladı. Zamansal bellek güvenliğinin Rust kadar kolay sağlanamayacağını kabul eden araştırmacı, kısıtlı dil kuralları ve biçimsel doğrulama yöntemlerinin C ekosistemini daha güvenli hale getireceğini kaydetti.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.