Duktape:一个新的小巧的超精简可嵌入式JavaScript引擎

Duktape是一个可嵌入的Javascript引擎,主要关注便携性和精简及紧凑性。

Duktape很容易集成到C/C++项目: 添加duktape.c和duktape.h到您的build中,并使用Duktape API从C代码中,调用ECMAScript代码的功能,反之亦然。

主要特性:

  • 嵌入式,便携,小巧:

    200kB的代码

    46KB RAM启动(X86,默认选项)

    22KB RAM启动(X86,lowmem选项)

    42kLoC源(不包括注释等)

    可以运行在具有256kB的闪存和96KB RAM的系统平台

  • ECMAScript的E5/ E5.1标准,一些功能从E6草案借来的
  • 内置正则表达式引擎
  • 内置的Unicode支持
  • 最小的平台依赖性
  • 结合"引用计数"和"标记清除"的垃圾收集与回收机制
  • 自定义功能,如协程,内置日志框架,并内置CommonJS的基础模块加载框架(注: 类似node.js中的require/export)
  • 使用ECMAScript ES6 Proxy对象实现的Property virtualization
  • 自由许可证(MIT)

目前状态: 稳定

技术支持:

用户社区Q&A: stackoverflow duktape 标签 

漏洞和新功能要求: GitHub Issues 

一般讨论: IRC #duktape on chat.freenode.net

如何使用

1. 添加到编绎系统

添加 Duktape C 源文件和头文件到你的build。任何build系统均可支持. 发行包里有一个Makefile的范例作为参考. 下面是一个简单的例子:


$ gcc -std=c99 -o test test.c duktape.c -lm

$ ./test

Hello world!

2 初始化上下文(context)

初始化并在你的程序中使用Duktape


/* test.c */

#include "duktape.h"

int main(int argc, char *argv[]) {

  duk_context *ctx = duk_create_heap_default();

  duk_eval_string(ctx, "print('Hello world!');");

  duk_destroy_heap(ctx);

  return 0;

}

3 添加C语言函数绑定(function bindings)

在Ecmascript(JavaScript)代码中调用C语言的函数,首先要声明你的C函数:


int adder(duk_context *ctx) {

  int i;

  int n = duk_get_top(ctx);  /* #args */

  double res = 0.0;

  for (i = 0; i < n; i++) {

    res += duk_to_number(ctx, i);

  }

  duk_push_number(ctx, res);

  return 1;  /* one return value */

}

注册你的函数, 例如,放到global对象中:

duk_push_global_object(ctx);
duk_push_c_function(ctx, adder, DUK_VARARGS);
duk_put_prop_string(ctx, -2 /*idx:global*/, "adder");
duk_pop(ctx);  /* pop global */

然后你就可以在Ecmascript中调用这个函数:

duk_eval_string(ctx, "print('2+3=' + adder(2, 3));");
duk_pop(ctx);  /* pop eval result */
时间: 2024-11-08 20:19:03

Duktape:一个新的小巧的超精简可嵌入式JavaScript引擎的相关文章

一个新的时代——云端时代

2011年12月12日一场以"分享云思想,体验云创新,探索云未来,共创云世界"为主题的"云"的盛会在北京亦庄创意生活广场隆重召开."北京云基地"旗下的云端时代.天云科技.天地超云等云系企业悉数出席.http://www.aliyun.com/zixun/aggregation/25252.html">趋势科技创始人张明正.TCL董事长李东升.用友董事长王文京.微软大中华区董事长梁念坚.英特尔中国区总裁杨叙.Citrix云平台CTO

五类、新五类及超五类等布线测试标准澄清

近来很多布线专家在谈及布线测试标准时说目前由于5类布线标准的变化导致了很多用户对于相关的标准仍然很混乱,在这里我就简单地将布线标准中关于5类内容的变化澄清一下,希望对维护和测试原有布线系统的人员有所帮助. 一切起源于在非屏蔽双绞线上支持千兆以太网. 1999年6月28日,IEEE通过了在平衡双绞线布线系统(balance twisted pair cabling)上支持千兆以太网的IEEE802.3ab标准,由于当时还没有制定5e的布线标准,而令人头痛的是作为在五类级别上传输千兆以太网是要在4对

一个新的时代—云端时代

云.管.端是组成云计算的三个层次.随着后台数据中心的发展.网络带宽提速,运营商向云转型,云终端的发展前景也被业内人士广泛看好. 在这里,简单阐述几个自己关于云终端的观点: 云计算时代,云厚了,端就要薄 随着云计算解决方案的出现,计算能力.基础设施.用户桌面.应用软件等资源都集中在了云端,并且能够以服务的方式提供给客户使用.云厚了,相匹配的客户端设备就不需要像传统PC那样有目前这样强的计算能力,一个能够承载轻量级远程客户端的设备就能很好的满足应用的要求,瘦客户机正是这样的设备,其"精简系统,绿色节

XMOVE3.0手持终端——软件介绍(四):在2KB内存的单片机上实现的超精简五子棋对战算法(原创)

一. 综述 这是我两年前完成的一个小项目,它基于我开发的XMOVE动作感应系统平台.五子棋算法网上随便一搜到处都是,不过值得自豪的是,我在2KB内存的单片机上不仅跑上了我自制的嵌入式OS,还能同时跑五子棋.这是界面截图:  以下是它的功能和特性: 内存占用极低,约600byte 执行一次迭代过程,算法在初级水平(同学,这是单片机,不是电脑!) 在8MHz的MSP430上算法执行时间不超过0.3s 支持人机对战,双人对战和无线对战(通过NRF24L01实现) 代码精简 嵌入式彩屏GUI实现 支持陀

苏宁易购对苏宁是一个新的挑战

苏宁易购对苏宁是一个新的挑战,是苏宁新十年科技转型.服务升级的重要平台. 本刊记者 周夫荣 | 文 时间:2012年4月 地点:江苏南京 嘉宾: 孙为民 苏宁电器(002024,股吧)连锁集团股份有限公司副董事长 李强强 <中国经济和信息化> 常务副总编辑 孙为民简历 1963年出生在新疆: 1981年~1988年北京师范大学攻读心理 学,硕士学历: 1988年~1998年南京理工大学执教: 1998年进入苏宁电器任总经理助理: 2004年6月至今,先后担任苏宁电器连锁集团股份有限公司总裁.副

Dell EMC新征程:从超融合开始

戴尔.EMC在中国目前还是处于两个独立品牌进行运营,但是除了中国之外全球的企业业务已经以独立品牌Dell EMC进行推广.在一个月前,EMC融合平台与解决方案业务亚太及日本地区首席技术官Matt Oostveen表示超融合是Dell EMC的未来的重点方向.近日Dell EMC公司亚太及日本区系统工程部副总裁Christoph Theisinger再一次向中国市场传达Dell EMC的在全球业务和产品技术发展的最新状况. 对于大家比较关心的戴尔与EMC的关系,Christoph Theising

一个新站的成长历程 推广秘笈123

中介交易 SEO诊断 淘宝客 云主机 技术大厅 很多站长在初始建立一个新站的时候,都会陷入如何推广的迷茫中.大多数站长都会在A5或者搜索中找加外链和提升收录的方法.通常这种类型的文章也很多,大多大同小异的方法,什么论坛签名啊,交换链接啊,博客贴吧全部用上.对于一个站长来说,特别是之前没有站点推广经验的新站长,通常会面临介绍的方法多,但是无从下手的问题.又或者是看到哪种方法就用哪种,乱冲乱上,往往在初期碰到一些问题和钉子以后,热情就降下来了.而这种问题如果持续一个月左右,基本上就放弃了,被打击得够

分析Linux内核创建一个新进程的过程【转】

转自:http://www.cnblogs.com/MarkWoo/p/4420588.html 前言说明 本篇为网易云课堂Linux内核分析课程的第六周作业,本次作业我们将具体来分析fork系统调用,来分析Linux内核创建新进程的过程 关键词:fork, 系统调用,进程 *运行环境:** Ubuntu 14.04 LTS x64 gcc 4.9.2 gdb 7.8 vim 7.4 with vundle 分析 分析方法说明 PCB包含了一个进程的重要运行信息,所以我们将围绕在创建一个新进程时

在中国,一个新的品牌时代来临了

导读:当小米手机号称自己"为发烧而生".锤子手机标榜自己"天生骄傲"的时候,你应该已经意识到,在中国,一个新的品牌时代来临了. 年轻人不再甘于忍受粗粝的生活方式,而是期望通过选择品牌建构更加优质的生活,这种追求关乎审美和个性,关乎环保和健康,关乎商业世界的最终所指. 当小米手机号称自己"为发烧而生".锤子手机标榜自己"天生骄傲"的时候,你应该已经意识到,在中国,一个新的品牌时代来临了. 在这样一个时代,价格不再被过分强调,实用