C diliyle 1024 baytlık Python yorumlayıcısı geliştirildi
Öne çıkanlar
- Yorumlayıcı harici kütüphane veya makro olmadan yalnızca saf C diliyle yazıldı.
- Sözdizim ağacı üretmeyen sistem, doğrudan kaynak metni yinelemeli ayrıştırarak çalışıyor.
- Okunabilir sürümü 4800 baytı aşan program çeşitli tekniklerle 1024 bayta indirildi.
Yazılımcı Austin Henley, hiçbir harici kütüphane ve karmaşık makro kullanmadan saf C diliyle 1024 baytlık bir Python yorumlayıcısı geliştirdi. Hafta sonu kodlama projesi olarak başlayan çalışmada amaç, temel bir FizzBuzz programını sorunsuz çalıştırabilen ve Python sözdizimini andıran asgari bir çalışma ortamı kurmaktı. İlk denemesinde 512 baytı hedefleyen geliştirici, dilin temel kurallarını koruyabilmek adına boyutu 1024 bayta sabitledi.
Sistem, CPython gibi karmaşık bir soyut sözdizim ağacı veya bayt kodu derlemesi üretmiyor. Bunun yerine kaynak kod, doğrudan 999 elemanlı bir dizi üzerinde taranıyor ve çalışma anında doğrudan yürütülüyor. Değişkenler tek karakterlik küçük harflerle sınırlandırılarak doğrudan ASCII tablosuna dayalı bir sembol tablosunda saklanıyor. Döngüler ve fonksiyon çağrıları ise kod içinde geriye doğru atlamalar yapılarak kaynak metnin tekrar ayrıştırılması mantığıyla işleniyor.
Hata yakalama mekanizmalarını tamamen dışarıda bırakan sistem, kod yapısının doğruluğunu varsayarak çalışıyor. Okunabilir ilk sürümü 4800 bayt olan proje, GNU C89 kuralları, ASCII değer oyunları ve gereksiz boşlukların budanmasıyla 1024 bayta düşürüldü. Austin Henley, oldukça zahmetli geçen geliştirme sürecinin ardından projenin kaynak kodlarını hem okunabilir hem de sıkıştırılmış biçimde GitHub üzerinden erişime açtı.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.