QEMU 和 FFmpeg 創始人發布 QuickJS JavaScript 引擎

法國數學家 Fabrice Bellard,曾創立 QEMU 和 FFmpeg 項目,還創建了最快的 pi 計算公式並開發了圖像格式 BPG,發布了新 JavaScript 引擎的第一個版本 快速JS。 該引擎結構緊湊,專注於嵌入其他系統。 該項目代碼是用 C 語言編寫的,並根據 MIT 許可證分發。 還可以使用 Emscripten 編譯為 WebAssembly 的引擎程序集,並適合在瀏覽器中執行。

JavaScript 實現 支持 ES2019 規範,包括模塊、異步生成器和代理。 可選擇支持非標準數學。 放大 對於 JavaScript,例如 BigInt 和 BigFloat 類型,以及 運算符重載。 就性能而言,QuickJS 是顯著的 優於 現有的類似物,例如在測試中
bench-v8 領先於發動機 XS 35%, 杜克塔佩 超過兩次 傑瑞腳本 三次並且 穆JS 七次。

除了用於將引擎嵌入到應用程序中的庫之外,該項目還提供了 qjs 解釋器,可用於從命令行運行 JavaScript 代碼。 此外,qjsc編譯器可用,能夠生成不需要外部依賴的獨立可執行文件。

主要特點:

  • 緊湊且易於集成到其他項目中。 該代碼僅包含幾個不需要外部依賴項即可構建的 C 文件。 編譯後的簡單應用程序大約需要 190 KB;
  • 非常高的性能和很短的啟動時間。 在典型台式電腦的單核上執行時,通過 56 次 ECMAScript 兼容性測試大約需要 100 秒。 運行時初始化耗時不到300微秒;
  • 幾乎完全支持 ES2019 規範,並完全支持附件 B,該附件定義了與舊版 Web 應用程序兼容的組件;
  • 完全通過 ECMAScript 測試套件的所有測試;
  • 支持將Javascript代碼編譯成可執行文件,無需外部依賴;
  • 沒有清理循環的引用計數垃圾收集器,允許可預測的行為並減少內存消耗;
  • JavaScript 語言中數學計算的一組擴展;
  • 用於在命令行模式下執行代碼的 shell,支持上下文代碼突出顯示;
  • 一個緊湊的標準庫,與 C 庫綁定。

該項目還開發了三個涉及 QuickJS 且適合單獨應用程序的配套 C 庫:

  • libregexp 是正則表達式的快速實現,完全符合 Javascript ES 2019 規範;
  • libunicode - 一個用於處理 Unicode 的緊湊庫;
  • libbf 是任意精度浮點運算和精確舍入超越函數的實現。

來源: opennet.ru

添加評論