Ana içeriğe geç
Programlama

Curl yapılandırma dosyaları dokuz ay boyunca Turing tamlığı sundu

Öne çıkanlar

  • Curl 8.12 ve 8.16 sürümleri arasındaki yapılandırma özellikleri Minsky programlarını simüle etmeye imkan tanıdı.
  • Yapılandırma dosyalarında değişken dilimleme ve sınırsız dosya dahil etme komutları döngü mekanizması oluşturdu.
  • Curl 8.17.0 sürümü dosya dahil etme derinliğini beş seviye ile sınırlandırarak bu durumu engelledi.

Curl yazılımının 8.12 ile 8.16 sürümleri arasındaki yapılandırma dosyası özellikleri, aracın teorik olarak Turing tamı bir hesaplama sistemine dönüşmesine yol açtı. Geliştiricilerin sisteme eklediği değişken dilimleme ve derinlik sınırı bulunmayan yapılandırma dahil etme işlevleri, iki sayaçlı Minsky makinelerinin doğrudan simüle edilmesini mümkün kıldı. Bu durum, sınırsız bellek ve dize varsayımı altında yazılımın tam bir hesaplama modeli çalıştırmasını sağladı.

Yayımlanan analizde değişken değerlerinin tek tek baytlar halinde okunabildiği ve dosya isimlerinin program etiketleri gibi kullanılabildiği gösterildi. Örneğin değişken değerinin sıfır olup olmadığını denetleyen komutlar, dinamik olarak adlandırılan yapılandırma dosyalarının çağrılmasıyla koşullu atlama mantığını kurdu. Pratik kullanımda ise Curl içindeki 10 milyon baytlık dize sınırı ve 8 MB C yığın belleği sınırı nedeniyle döngüler yaklaşık 922 adım sonra bellek hatasıyla sonlandı.

Curl ekibi 8.17.0 sürümünde yapılandırma dosyalarının birbirini çağırmasına beş kademeli bir üst sınır getirdi. Yapılan değişiklik ile dosyaların kendilerini sonsuz döngüye sokması engellendi ve Turing tamlığı olanağı ortadan kalktı. Değişiklik gerekçesinde Turing tamlığına doğrudan değinilmedi ve beş katmanlık sınırın teknik sebebi açıklanmadı.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.