Viết lại parser Ruby
(railsatscale.com)- Shopify đã phát triển một parser Ruby mới tên là YARP
- Ở mức hiện tại, có thể phân tích cú pháp giống hệt trên mã chính của Shopify/GitHub và 100 gem RubyGems phổ biến nhất
- Đã được chấp thuận để merge vào CRuby
- Parser hiện tại của CRuby có thể được phân loại vấn đề thành khoảng 4 nhóm
- Khả năng bảo trì: không có tài liệu, phức tạp nên khó thay đổi
- Khả năng chịu lỗi: có một chút dung sai, nhưng chỉ với lỗi nhỏ cũng không thể tạo cây cú pháp
- Tính di động: parser gắn chặt với nội bộ CRuby nên không thể dùng trong các công cụ khác
- Hiệu năng: khó áp dụng các kỹ thuật tối ưu hóa nâng cao
- Phát triển YARP
- Viết bằng C
- Recursive Descent Parser được viết thủ công (đây là xu hướng của các ngôn ngữ lớn hiện nay; gcc/golang cũng đã chuyển từ Bison)
- Ban đầu cố gắng giữ cây cú pháp giống CRuby, nhưng đã quyết định thiết kế cây riêng
- Có thể phân tích cú pháp 50.000 tệp Ruby của Shopify chỉ trong 4,49 giây (bộ nhớ đỉnh 10,94Mb)
- Trong thời gian tới
- Dự kiến sẽ tích hợp YARP vào nhiều runtime Ruby khác nhau
- Sẽ tiếp tục cải thiện tốc độ, mức sử dụng bộ nhớ và độ chính xác
- Matz và nhóm CRuby đã đồng ý đưa vào dưới dạng thư viện trong Ruby 3.3 (dự kiến phát hành vào tháng 12 năm nay)
- YARP: Yet Another Ruby Parser
Chưa có bình luận nào.