Ruby ayrıştırıcısını yeniden yazmak
(railsatscale.com)- Shopify, YARP adlı yeni bir Ruby ayrıştırıcısı geliştirdi
- Mevcut durumda Shopify/GitHub’ın ana kod tabanı ile RubyGems’teki en popüler ilk 100 gem’i aynı şekilde ayrıştırabiliyor
- CRuby’ye merge edilmesi onaylandı
- CRuby’nin mevcut ayrıştırıcısındaki sorunlar kabaca 4 başlıkta sınıflandırılabiliyor
- Bakım yapılabilirlik: belgelendirme yok ve karmaşık olduğu için değiştirmesi zor
- Hata toleransı: bir miktar tolerans olsa da küçük hatalarda bile sözdizimi ağacı oluşturulamıyor
- Taşınabilirlik: ayrıştırıcı CRuby’nin içine derin biçimde bağlı olduğu için başka araçlarda kullanılamıyor
- Performans: gelişmiş optimizasyon tekniklerini uygulamak zor
- YARP geliştirme süreci
- C ile yazıldı
- Elle yazılmış bir Recursive Descent Parser (günümüzde başlıca dillerdeki eğilim bu yönde; gcc/golang da Bison’dan geçti)
- CRuby ile aynı sözdizimi ağacını korumaya çalıştılar ancak sonunda kendi ağaç yapısını tasarlamaya karar verdiler
- Shopify’ın 50 bin Ruby dosyasını 4,49 saniyede ayrıştırabiliyor (tepe bellek kullanımı 10,94 MB)
- Bundan sonra
- YARP’ı çeşitli Ruby çalışma zamanlarına entegre etmeyi planlıyorlar
- Hız, bellek kullanımı ve doğruluğu sürekli iyileştirmeyi planlıyorlar
- Matz ve CRuby ekibi, Ruby 3.3’e (bu yıl aralıkta yayımlanması planlanıyor) bir kütüphane olarak dahil edilmesi konusunda anlaştı
- YARP: Yet Another Ruby Parser
Henüz yorum yok.