Fabrice Bellard นักคณิตศาสตร์ชาวฝรั่งเศสซึ่งเป็นผู้ก่อตั้งโครงการ QEMU และ FFmpeg และเป็นผู้ที่สร้างสูตรที่เร็วที่สุดในการคำนวณหมายเลข Pi และพัฒนารูปแบบภาพ BPG
Fabrice Bellard คือ เป็นที่รู้จักกันดีในฐานะหัวหน้าผู้พัฒนา QEMU (โปรแกรมจำลองที่เลียนแบบสถาปัตยกรรมฮาร์ดแวร์ต่างๆ) และ Tiny C Compiler (tcc) ซึ่งเป็นคอมไพเลอร์ C ขนาดเล็กมาก แต่มีความครอบคลุมซึ่งเดิมเขียนขึ้นเพื่อชนะ“ International Obfuscated C Code Contest”
ตอนนี้เมื่อเร็ว ๆ นี้ แบ่งปันผลงานใหม่รุ่นแรกของเขาสู่สาธารณะ ซึ่งอยู่ใน JavaScript และนี่คือ เอ็นจิ้นใหม่ที่เรียกว่า JavaScript QuickJS
เกี่ยวกับ JavaScript QuickJS
เอ็นจิ้น QuickJS JavaScript มีขนาดกะทัดรัดและออกแบบมาเพื่อรวมเข้ากับระบบอื่น ๆ รหัสโครงการ เขียนด้วยภาษา C และเผยแพร่ภายใต้ใบอนุญาต MIT นอกจากนี้ยังมีโปรแกรมสร้างที่รวบรวมไว้ใน WebAssembly โดยใช้ Emscripten และเหมาะสำหรับการทำงานในเบราว์เซอร์
การใช้งาน JavaScript รองรับข้อกำหนด ES2019 รวมถึงโมดูลเครื่องกำเนิดไฟฟ้าแบบอะซิงโครนัสและพร็อกซี
ในเอ็นจิ้น QuickJS JavaScript รองรับส่วนขยายทางคณิตศาสตร์ที่ไม่ได้มาตรฐานสำหรับ JavaScriptเช่นประเภท BigInt และ BigFloat รวมถึงตัวดำเนินการที่ทำงานหนักเกินไป
ตามประสิทธิภาพ QuickJS มีประสิทธิภาพดีกว่าอะนาล็อกที่มีอยู่อย่างมากตัวอย่างเช่นในการทดสอบ bench-v8 เครื่องยนต์ XS มีความเร็วสูงกว่า 35% DukTape มากกว่าสองเท่า JerryScript สามเท่าและ MuJS เจ็ดเท่า
นอกจากไลบรารีที่จะฝังเอ็นจิ้นในแอปพลิเคชันแล้ว โครงการนี้ยังมีล่าม qjs ซึ่งสามารถใช้เพื่อรันโค้ด JavaScript จากบรรทัดคำสั่ง
นอกจากนี้ คอมไพเลอร์ qjsc พร้อมใช้งานและสามารถส่งออกไฟล์ปฏิบัติการที่สามารถรันแยกกันได้ และสิ่งเหล่านี้ไม่ต้องการการอ้างอิงภายนอก
คุณสมบัติหลักของเครื่องมือ QuickJS JavaScript ประเด็นต่อไปนี้โดดเด่น:
- กะทัดรัดและง่ายต่อการรวมเข้ากับโครงการอื่น ๆ โค้ดนี้มีไฟล์ C เพียงไม่กี่ไฟล์ที่ไม่ต้องการการอ้างอิงภายนอกในการสร้าง แอปพลิเคชันที่รวบรวมอย่างง่ายใช้เวลาประมาณ 190 Kb
- ประสิทธิภาพสูงมากและเวลาเริ่มต้นที่รวดเร็ว การผ่านการทดสอบความเข้ากันได้กับ ECMAScript 56 ครั้งจะใช้เวลาประมาณ 100 วินาทีเมื่อเรียกใช้เดสก์ท็อปปกติบนเคอร์เนล การเริ่มต้นรันไทม์ใช้เวลาน้อยกว่า 300 ไมโครวินาที
- การสนับสนุนเกือบเต็มรูปแบบสำหรับข้อกำหนด ES2019 และการสนับสนุนเต็มรูปแบบสำหรับแอปพลิเคชัน "B" ซึ่งกำหนดส่วนประกอบสำหรับความเข้ากันได้กับเว็บแอปพลิเคชันรุ่นเก่า
- กรอกข้อความของการทดสอบทั้งหมดของ ECMAScript Test Suite
- รองรับการคอมไพล์โค้ด Javascript ลงในไฟล์ปฏิบัติการโดยไม่ต้องพึ่งพาภายนอก
- ตัวเก็บขยะอาศัยการนับอ้างอิงโดยไม่ต้องล้างข้อมูลตามวัฏจักรทำให้สามารถคาดเดาพฤติกรรมได้และลดการใช้หน่วยความจำ
- ชุดของส่วนขยายสำหรับการคำนวณทางคณิตศาสตร์ในภาษา JavaScript
- เชลล์สำหรับรันโค้ดในโหมดบรรทัดคำสั่งซึ่งรองรับการไฮไลต์โค้ดตามบริบท
- ไลบรารีมาตรฐานขนาดกะทัดรัดเหนือไลบรารี C
นอกเหนือจากนี้ ในทางกลับกันโครงการกำลังพัฒนาไลบรารี C สามแห่ง ผู้เกี่ยวข้องที่เกี่ยวข้องกับ QuickJS และเหมาะสำหรับการใช้งานส่วนบุคคล:
- freegeexp: ไลบรารี regex ขนาดเล็กและรวดเร็วซึ่งเป็นไปตามข้อกำหนดของ JavaScript ES2019
- ลิบูนิโค้ด: ไลบรารี Unicode ขนาดเล็กที่สนับสนุนการแปลงเคสการทำให้เป็นมาตรฐาน Unicode คำขอสคริปต์ Unicode การสืบค้นหมวดหมู่ทั่วไปของ Unicode และคุณสมบัติไบนารีทั้งหมดของ Unicode
- ลิบบ์: นอกจากนี้ยังเป็นไลบรารีขนาดเล็กที่ใช้การดำเนินการจุดลอยตัว IEEE 754 และฟังก์ชันที่ยอดเยี่ยมพร้อมการปัดเศษที่แน่นอน เก็บไว้เป็นโครงการแยกต่างหาก
วิธีรับ SavaScript QuickJS
การดาวน์โหลดซอร์สโค้ดสำหรับการคอมไพล์สามารถทำได้จาก ลิงค์ต่อไปนี้. หลังจากการติดตั้ง Makefile จะถูกจัดเตรียมไว้เพื่อคอมไพล์เอ็นจิ้นบน Linux หรือ Mac OS / X
ในลิงค์เดียวกันคุณสามารถดูเอกสาร QuickJS สำหรับข้อมูลเพิ่มเติม. นอกจากนี้ยังให้ข้อมูลมาตรฐานที่แสดงประสิทธิภาพ QuickJS กับเครื่องยนต์ V8 ของ Google และการเปรียบเทียบระหว่างมันกับเครื่องมืออื่น ๆ ในหมวดหมู่เดียวกัน