Nova - เอนจิน JavaScript และ WebAssembly ที่เขียนด้วย Rust
(github.com/trynova)- Nova คือเอนจิน JavaScript ที่มีจุดเด่นด้านการออกแบบแบบยึดข้อมูลเป็นศูนย์กลาง โดยใช้โครงสร้างที่ออกแบบมาเพื่อเพิ่มประสิทธิภาพและประสิทธิภาพของแคชให้สูงสุด
- มุ่งป้องกันช่องโหว่ด้านหน่วยความจำและเพิ่มประสิทธิภาพไปพร้อมกัน
- คุณสมบัติหลัก:
- ข้อมูลทั้งหมดที่จัดสรรอยู่บน JavaScript heap จะถูกเก็บไว้ในเวกเตอร์แยกตามชนิด (ตัวเลขอยู่ในเวกเตอร์ตัวเลข สตริงอยู่ในเวกเตอร์สตริง เป็นต้น)
- การอ้างอิง heap จะถูกจัดการเป็นดัชนีที่แยกตามชนิด ซึ่งช่วยให้ได้ทั้งความปลอดภัยของหน่วยความจำและประสิทธิภาพด้านขนาด
- อ็อบเจ็กต์จะถูกแยกตามชนิดและจัดเก็บในเวกเตอร์ (อ็อบเจ็กต์ทั่วไป, อาร์เรย์, DataView เป็นต้น)
- อ็อบเจ็กต์ที่ไม่ใช่แบบทั่วไปถูกออกแบบให้อ้างอิงข้อมูลของอ็อบเจ็กต์ทั่วไปเฉพาะเมื่อจำเป็นเท่านั้น
- อ็อบเจ็กต์ถูกแยกเก็บอย่างเข้มข้นเพื่อหลีกเลี่ยงการอ่านข้อมูลที่ไม่ได้ใช้งาน
- ยังอยู่ระหว่างการพัฒนา โดยเอนจินยังมีความสามารถจำกัดมาก จึงผ่านชุดทดสอบ test262 ได้เพียงประมาณ 47%
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
function X(a) { this.a = a; }และfunction Y(b) { this.b = b; }จะถือเป็นอ็อบเจ็กต์คนละชนิดกันหรือไม่{a: 1}และ{b: 2}จะถือเป็นอ็อบเจ็กต์คนละชนิดกันหรือไม่