ผู้ก่อตั้ง QEMU และ FFmpeg เผยแพร่กลไก QuickJS JavaScript

Fabrice Bellard นักคณิตศาสตร์ชาวฝรั่งเศสผู้ก่อตั้งโครงการ QEMU และ FFmpeg ได้สร้างสูตรที่เร็วที่สุดในการคำนวณจำนวน Pi และพัฒนารูปแบบภาพ BPGเผยแพร่เอ็นจิ้น JavaScript ใหม่รุ่นแรก QuickJS. เครื่องยนต์มีขนาดกะทัดรัดและออกแบบมาเพื่อรวมเข้ากับระบบอื่นๆ รหัสโครงการเขียนด้วยภาษา C และเผยแพร่ภายใต้ใบอนุญาต MIT นอกจากนี้ยังมีบิลด์ของเอ็นจิ้นที่คอมไพล์เป็น WebAssembly โดยใช้ Emscripten และเหมาะสำหรับการดำเนินการในเบราว์เซอร์

การใช้งานจาวาสคริปต์ รองรับ ข้อกำหนด ES2019 รวมถึงโมดูล ตัวสร้างแบบอะซิงโครนัส และพรอกซี คณิตศาสตร์ที่ไม่ได้มาตรฐานได้รับการสนับสนุนหรือไม่ก็ได้ การขยายตัว สำหรับ JavaScript เช่น ประเภท BigInt และ BigFloat รวมถึง ผู้ประกอบการโอเวอร์โหลด. ประสิทธิภาพของ QuickJS มีความสำคัญ ดีกว่า อะนาล็อกที่มีอยู่เช่นในการทดสอบ
bench-v8 นำหน้าเครื่องยนต์ XS ที่ 35% ดุ๊กเทป มากกว่าสองเท่า เจอร์รี่สคริป สามครั้งและ มูจส เจ็ดครั้ง

นอกจากไลบรารีสำหรับฝังเอ็นจิ้นลงในแอปพลิเคชันแล้ว โปรเจ็กต์ยังมีล่าม qjs ซึ่งสามารถใช้เพื่อรันโค้ด JavaScript จากบรรทัดคำสั่ง นอกจากนี้ คอมไพเลอร์ qjsc ยังพร้อมใช้งาน ซึ่งสามารถสร้างไฟล์ปฏิบัติการเอาต์พุตที่เหมาะสำหรับการดำเนินการแบบสแตนด์อโลนที่ไม่ต้องการการพึ่งพาภายนอก

คุณสมบัติที่สำคัญ:

  • กะทัดรัดและง่ายต่อการรวมเข้ากับโครงการอื่น ๆ รหัสนี้มีไฟล์ C เพียงไม่กี่ไฟล์ที่ไม่ต้องการการพึ่งพาภายนอกสำหรับการประกอบ แอปพลิเคชันที่คอมไพล์ที่ง่ายที่สุดใช้เวลาประมาณ 190 KB
  • ประสิทธิภาพสูงมากและเวลาเริ่มต้นสั้น การผ่านการทดสอบความเข้ากันได้ของ ECMAScript กว่า 56 ครั้งจะใช้เวลาประมาณ 100 วินาทีเมื่อดำเนินการบนคอร์เดียวของเดสก์ท็อปพีซีทั่วไป การเริ่มต้นรันไทม์ใช้เวลาน้อยกว่า 300 ไมโครวินาที
  • รองรับข้อกำหนด ES2019 เกือบทั้งหมดและรองรับภาคผนวก B อย่างเต็มรูปแบบ ซึ่งกำหนดส่วนประกอบสำหรับความเข้ากันได้กับเว็บแอปพลิเคชันรุ่นเก่า
  • ผ่านการทดสอบทั้งหมดจากชุดทดสอบ ECMAScript เสร็จสมบูรณ์
  • รองรับการคอมไพล์โค้ด Javascript ลงในไฟล์ปฏิบัติการโดยไม่ต้องพึ่งพาภายนอก
  • ตัวรวบรวมขยะที่อิงตามการนับอ้างอิงโดยไม่ต้องทำความสะอาดแบบวนรอบ ซึ่งช่วยให้เราสามารถบรรลุพฤติกรรมที่คาดการณ์ได้และลดการใช้หน่วยความจำ
  • ชุดส่วนขยายสำหรับการคำนวณทางคณิตศาสตร์ใน JavaScript
  • เชลล์สำหรับการรันโค้ดในโหมดบรรทัดคำสั่ง รองรับการเน้นโค้ดตามบริบท
  • ไลบรารี่มาตรฐานขนาดกะทัดรัดพร้อม wrappers บนไลบรารี C

โปรเจ็กต์นี้ยังกำลังพัฒนาไลบรารี C ที่เกี่ยวข้องสามไลบรารีที่เกี่ยวข้องกับ QuickJS และเหมาะสำหรับการใช้งานส่วนบุคคล:

  • libregexp - การใช้งานนิพจน์ทั่วไปอย่างรวดเร็ว เข้ากันได้กับข้อกำหนด Javascript ES 2019 อย่างสมบูรณ์
  • libunicode - ไลบรารีขนาดกะทัดรัดสำหรับการทำงานกับ Unicode
  • libbf - การใช้งานการดำเนินการจุดทศนิยมที่มีความแม่นยำตามอำเภอใจและฟังก์ชันเหนือธรรมชาติด้วยการปัดเศษที่แน่นอน

ที่มา: opennet.ru

เพิ่มความคิดเห็น