mruby 3.0 ซึ่งเป็นอินเทอร์พรีเตอร์แบบฝังตัวสำหรับภาษาโปรแกรมเชิงวัตถุแบบไดนามิก Ruby ได้เปิดตัวแล้ว Mruby มีความสามารถด้านไวยากรณ์ที่เข้ากันได้กับ Ruby 1.9 แต่ยังรองรับฟีเจอร์บางอย่างจากเวอร์ชันใหม่กว่าอีกด้วย อินเทอร์พรีเตอร์นี้ใช้หน่วยความจำต่ำและสามารถฝังลงในแอปพลิเคชันอื่นๆ ได้ นอกจากนี้ยังรองรับการคอมไพล์โปรแกรม Ruby เป็นไบต์โค้ดโดยใช้คอมไพเลอร์ "mrbc" ที่พัฒนาโดยโครงการนี้ โค้ดของ mruby นี้เผยแพร่ภายใต้ใบอนุญาต MIT
เวอร์ชันใหม่นี้ช่วยลดการใช้หน่วยความจำของ mruby VM ได้อย่างมาก เวอร์ชันก่อนหน้าต้องการ RAM หลายร้อย KB ขณะที่ mruby 3.0 ใช้ RAM ประมาณ 100 KB การปรับปรุงที่สำคัญ:
- การใช้ RAM ลดลงด้วยการปรับการจัดสรรหน่วยความจำให้เหมาะสมสำหรับอ็อบเจ็กต์คลาส Symbol การใช้หน่วยความจำสำหรับอ็อบเจ็กต์คลาส Hash ลดลง การเรียกใช้เมธอดได้รับการปรับให้เหมาะสม
- เพิ่มการสนับสนุนสำหรับการกำหนดวิธีการแบบบรรทัดเดียวโดยไม่ใช้คำสำคัญ "end": def square(x) = x * x
- เพิ่มตัวดำเนินการ "=>" (ค่า => ตัวแปร) ซึ่งใช้สำหรับการกำหนดค่าทางขวามือ 0 => apa #=> 0 {b: 0, c: 1} => {b:} pb #=> 0
- รองรับการสร้าง Heredocs
- ไฟล์ build ของ interpreter ได้รับการอัปเดตแล้ว เพิ่มการคอมไพล์ด้วย gprof แล้ว ขณะนี้ GCC สามารถสร้างในโหมด 32 บิตบนแพลตฟอร์ม 64 บิตได้แล้ว เพิ่มการรองรับ Address Sanitizer ให้กับ clang
- การเปลี่ยนแปลงที่สำคัญ: ค่าคงที่ RITE_VM_VER มีค่าเป็น 0300 แล้ว และ RITE_BINARY_FORMAT_VER มีค่าเป็น 0200 แล้ว ซึ่งป้องกันการดำเนินการไบต์โค้ดจากเวอร์ชันก่อนหน้า
- คลาส Fixnum กลายเป็นส่วนหนึ่งของ Integer เหมือนกับใน Ruby 3.0 คลาส Integral ได้ถูกลบออกไปแล้ว
ที่มา: opennet.ru
