嵌入式系统的微型JS引擎 Elk

回复
头像
shaoziyang
帖子: 3953
注册时间: 2019年 10月 21日 13:48

嵌入式系统的微型JS引擎 Elk

#1

帖子 shaoziyang »

Elk是一个小型的可嵌入JavaScript引擎,它实现了ES6的一个小型子集。ELK 是为微控制器开发而设计的,它允许在JavaScript中开发代码,而不是用C/C++编写代码。另一个用例是为客户提供一个安全、受保护的脚本环境,用于产品定制。
nano.gif
nano.gif (194.41 KiB) 查看 841 次
 

特点:
  • 跨平台。适用于从8位微控制器到64位服务器
  • 零依赖性。通过ISO C或ISO C++编译器干净地构建
  • 易于嵌入:只需复制到源代码treeelk.celk.h
  • 非常小且简单的嵌入API
  • 可以从JavaScript调用本地C/C++函数,反之亦然
  • 不使用malloc。仅使用给定的内存缓冲区操作
  • 占用空间小:闪存/磁盘约20KB,核心虚拟机约100字节RAM
  • 没有字节码。直接解释JS代码
支持的功能
  • 操作:除以下外的所有标准JS操作:
    • !=, . 使用严格比较,==、!==、===
    • 没有三元运算符a?b:c
    • 没有计算成员访问
  • 类型:typeof('a') === 'string'
  • While:While(…){…}
  • 条件:if(…)。。。else。。。
  • 简单类型:let a, b, c = 12.3, d = 'a', e = null, f = true, g = false;
  • 函数:let f = function(x, y) { return x + y; };
  • 对象:let obj={f:function(x){return x*2};obj.f(3);
  • 每个语句必须以分号结尾;
  • 字符串是二进制数据块,而不是Unicode字符串:'Київ'.length === 8

不支持的功能
  • 不支持 no。使用var、const、let
  • 不支持 , , . 使用 do、switch、for、while
  • 没有函数。使用=>let f = function(...) {...};
  • 没有数组、闭包、原型、this、new、delete
  • 没有标准库:no , , , , Date、Regexp、Function、String、Number

性能

由于Elk会实时解析和解释JS代码,所以它不应该用于性能关键的场景。
隐藏内容
你必须登入/注册才可观看隐藏内容
 
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章