• 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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น