(從我另一部落格[Atypiape]搬家過來)
譯文作者:Atypiape
原文來自:Duktape
寫作日期:2016-08-12
Duktape 是一個輕量級的嵌入式 JavaScript 引擎,專注於可移植性和低佔用率。
Duktape 可以被輕鬆地整合進一個 C/C++ 專案中:只需要將 duktape.c、duktape.h 和 duk_config.h 三個檔案加入你的構建專案中,並使用 Duktape API 來實現 C 程式碼與 ECMAScript 函式的雙向呼叫。
主要特性
- 可嵌入、可移植、低佔用:能夠執行在 256kB 快閃記憶體(Flash)和 64kB 系統記憶體(RAM)的平臺上;
- 相容 ECMAScript E5/E5.1 標準,並借鑑了 ECMAScript E6 的部分特性;
- 支援 Khronos/ES6 的 TypedArray 物件和 Node.js 的 Buffer 物件;
- 內建偵錯程式;
- 內建正規表示式引擎;
- 內建 Unicode 支援;
- 最小限度的平臺依賴;
- 整合了引用計數機制和 mark-and-sweep 垃圾回收機制;
- 自定義特性,如協同程式(coroutines)、內建日誌框架、內建基於 CommonJS 的模組載入框架;
- 屬性(property)虛擬化中使用了 ECMAScript E6 Proxy 物件的一個子集;
- 以位元組碼轉儲(dump)/載入的方式,來對已編譯函式進行快取;
- 採用 MIT 自由許可協議。
程式碼和記憶體佔用
_ | x86 預設 | x86 低端記憶體 | x86 全低端記憶體 |
---|---|---|---|
程式碼 | 170kB | 150kB | 200kB |
啟動記憶體 | 68kB | 35kB | 4kB |
請參考 GCC 選項中的最小化程式碼佔用。全低端記憶體選項使用了“指標壓縮”和基於 ROM 的字串/物件。基於 ROM 的字串/物件也可以用於其他非低端記憶體選項。
當前狀態
- 穩定
技術支援
- Duktape Wiki: wiki.duktape.org
- 使用者問答社群: Stack Overflow 上的 duktape 標籤
- Bugs 和功能需求: GitHub issues
- 綜合討論區:chat.freenode.net (webchat) 上的 IRC 頻道 #duktape
使用 Duktape 的專案
參見:使用 Duktape 的專案
如果你在自己的專案中使用了 Duktape,可以傳送一封郵件或者開一個 GitHub issue 來將專案加到列表中。
類似的引擎
有多個與 Duktape 定位類似的 JavaScript 引擎,至少有如下幾個:
- Espruino (MPL v2.0)
- JerryScript (Apache License v2.0)
- MuJS (Affero GPL)
- quad-wheel (MIT License)
- tiny-js (MIT license)
- v7 (GPL v2.0)
也可以參考 ECMAScript 引擎列表。