- Shopify พัฒนาตัวแยกวิเคราะห์ Ruby ตัวใหม่ชื่อ YARP
- ณ ระดับปัจจุบัน สามารถแยกวิเคราะห์โค้ดหลักของ Shopify/GitHub และ gem ยอดนิยม 100 อันดับแรกบน RubyGems ได้เหมือนกัน
- ได้รับการอนุมัติให้ merge เข้า CRuby แล้ว
- ตัวแยกวิเคราะห์เดิมของ CRuby สามารถแบ่งปัญหาออกได้คร่าว ๆ เป็น 4 ประเภท
- ความสามารถในการบำรุงรักษา: ไม่มีเอกสาร และมีความซับซ้อน ทำให้แก้ไขเปลี่ยนแปลงได้ยาก
- ความทนทานต่อข้อผิดพลาด: แม้จะยอมให้มีความคลาดเคลื่อนเล็กน้อยได้ แต่หากมีข้อผิดพลาดเพียงเล็กน้อยก็จะไม่สามารถสร้าง syntax tree ได้
- ความสามารถในการพกพา: ตัวแยกวิเคราะห์ผูกติดกับภายในของ CRuby อย่างลึกซึ้ง จึงไม่สามารถนำไปใช้ในเครื่องมืออื่นได้
- ประสิทธิภาพ: นำเทคนิคการเพิ่มประสิทธิภาพขั้นสูงมาใช้ได้ยาก
- การพัฒนา YARP
- เขียนด้วย C
- เป็น Recursive Descent Parser ที่เขียนด้วยมือ (เป็นแนวโน้มของภาษาหลักในปัจจุบัน โดย
gcc/golang ก็เปลี่ยนมาจาก Bison เช่นกัน)
- เดิมพยายามคง syntax tree แบบเดียวกับ CRuby ไว้ แต่ตัดสินใจออกแบบ tree ของตัวเอง
- สามารถแยกวิเคราะห์ไฟล์ Ruby 50,000 ไฟล์ของ Shopify ได้ในเวลาเพียง 4.49 วินาที (หน่วยความจำสูงสุด 10.94Mb)
- ต่อจากนี้
- มีแผนจะเชื่อม YARP เข้ากับ Ruby runtime ที่หลากหลาย
- จะปรับปรุงความเร็ว การใช้หน่วยความจำ และความแม่นยำอย่างต่อเนื่อง
- Matz และทีม CRuby ตกลงจะรวมเข้าเป็นไลบรารีใน Ruby 3.3 (มีกำหนดออกในเดือนธันวาคมปีนี้)
- YARP: Yet Another Ruby Parser
ยังไม่มีความคิดเห็น