[分享] 嵌入式系统的微型JS引擎 Elk

dcexpert   2021-5-17 21:47 楼主

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

 

nano.gif

 

特点:

  • 跨平台。适用于从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代码,所以它不应该用于性能关键的场景。

 

游客,如果您要查看本帖隐藏内容请回复

回复评论 (9)

8位的都能移植,确实需要的资源少。移植试试

点赞  2021-5-17 22:43

层出不穷的语言移植

默认摸鱼,再摸鱼。2022、9、28
点赞  2021-5-17 23:16
强大精干
点赞  2021-5-18 08:14

学习下,涨涨见识

点赞  2021-5-20 08:37

不容易啊,这么占内存占CPU的东西都能移植,给软件爱好者们带来更多的福音,点赞!

点赞  2021-5-20 09:17

佩服@dcexpert的挖宝精神,我记得楼主弄过嵌入式的GOlang、Python什么的。这个喜好不错点个赞!争取给大家带来更多新奇的东西哦!

点赞  2021-5-20 11:25

来看看版主又发现了什么。

点赞  2021-5-20 19:47

点赞  2021-6-4 16:39

牛逼啊!让我看看是什么


点赞  2024-5-16 20:57
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复