Menulis Ulang Parser Ruby
(railsatscale.com)- Shopify mengembangkan parser Ruby baru bernama YARP
- Pada tingkat saat ini, parser ini dapat mem-parsing kode utama Shopify/GitHub serta 100 gem RubyGems terpopuler dengan hasil yang sama
- Penggabungannya ke CRuby telah disetujui
- Parser lama CRuby saat ini secara garis besar memiliki empat kategori masalah
- Kemudahan pemeliharaan: tidak ada dokumentasi dan terlalu kompleks sehingga sulit diubah
- Toleransi kesalahan: ada sedikit toleransi, tetapi bahkan kesalahan kecil pun membuat pohon sintaks tidak dapat dibuat
- Portabilitas: parser sangat terikat dengan internal CRuby sehingga tidak bisa digunakan oleh alat lain
- Kinerja: sulit menerapkan teknik optimasi tingkat lanjut
- Pengembangan YARP
- Ditulis dalam C
- Recursive Descent Parser yang ditulis manual (ini adalah tren di bahasa-bahasa utama saat ini; gcc/golang juga beralih dari Bison)
- Awalnya ingin mempertahankan pohon sintaks yang sama dengan CRuby, tetapi akhirnya memutuskan merancang pohon sendiri
- Dapat mem-parsing 50 ribu file Ruby milik Shopify hanya dalam 4,49 detik (memori puncak 10,94Mb)
- Ke depan
- Berencana mengintegrasikan YARP ke berbagai runtime Ruby
- Akan terus meningkatkan kecepatan, penggunaan memori, dan akurasi
- Matz dan tim CRuby telah sepakat untuk menyertakannya sebagai library di Ruby 3.3 (dijadwalkan rilis Desember ini)
- YARP: Yet Another Ruby Parser
Belum ada komentar.