Fabrice Bellard 和他的QuickJS JavaScript 引擎
週二,FFmpeg和QEMU的創建者Fabrice Bellard以及C專家Charlie Gordon宣布QuickJS首次公開在MIT許可下發布,它是一個“小而完整的JavaScript引擎”,支持最新的ES2019語言規範。
QuickJS JavaScript引擎中的功能
小而易於嵌入:引擎由幾個C文件組成,並且沒有任何外部依賴性。
快速解釋器:解釋器通過在100秒內從ECMAScript Test Suite1運行56,000次測試,並且在單核CPU上運行,顯示出令人印象深刻的速度。運行時實例在不到300微秒的時間內完成其整個過程。
支持ES2019:幾乎囊括全部對ES2019規範的支持,包括模塊、異步生成器和完整的附件B支持(傳統Web兼容性)。目前,它並不支持邏輯子域和尾部調用。
沒有外部依賴:它可以在沒有任何外部支持的情況下將JavaScript源代碼編譯為可執行文件。
命令行解釋器:命令行解釋器帶有在Javascript中實現語境著色並完善的功能。
垃圾收集:它使用引用計數和循環刪除來自動和確定地釋放對象。這減少了內存使用並確保了JavaScript引擎的確定性行為。
數學擴展:您可以在’qjsbn’版本中找到所有數學擴展,它們與標準Javascript完全向下兼容。它支持大整數(BigInt)、大浮點數(BigFloat)、運算符重載,同時也附帶’bigint’和’math’模式。
這個消息在Hacker News上引發了討論,開發人員對Bellard和Gordon在該項目上的出色工作表示讚賞。
一位開發人員評論說:“哇。核心是一個1.5MB的文件,非常易讀,幾乎支持所有最新標準,Bellard甚至還添加了自己的擴展。它具有NaN-boxing或傳統標記聯合對象表示的編譯時間選項,因此他不僅僅採用單一的最小實現(不像例如OTCC),而且甚至有時間和精力去探索一下。我喜歡這樣的事實,它不是C99,但似乎是基本的C89,意味著非常高的可移植性。雖然我對JS的普遍厭惡主要是因為網站傾向於濫用它,但這個項目仍然令人印象深刻且非常鼓舞人心,並且人們想知道是否仍然存在“底層空間”,尤其是更小但功能更具競爭性的實施。”
另一位寫道:“我迫不及待地想要解決這個問題,它看起來非常酷。我喜歡極簡主義的做法。如果它真的符合規範,我將使用它來編譯我編寫的當前使用節點的一堆CLI腳本。
我傾向於堅持使用ECMAScript核心,並且避免使用NPM中的程序包,特別是那些具有二進制組件的程序包。很多時候我因為正在重寫部分的庫而減慢了我的速度,但是這裡所有的東西都應該只需要一點點的OS交互層轉譯,這非常令人興奮。“
要了解有關QuickJS的更多信息,請查看Fabrice Bellard的官方網站,通過QuickJS中文項目下載相關編譯文件。