Duktape 介绍

译文作者: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
引擎列表。