Hasty Briefsbeta

双语

Micro QuickJS: a JavaScript engine for microcontroller

2 months ago
  • #JavaScript
  • #Memory Optimization
  • #Embedded Systems
  • MicroQuickJS(MQuickJS)是面向嵌入式系统的JavaScript引擎,最低仅需10kB内存和约100kB只读存储器。
  • 它支持接近ES5标准的JavaScript子集,并提供严格模式禁用易错或低效语法结构。
  • MQuickJS采用追踪垃圾回收机制,以UTF-8格式存储字符串,且虚拟机运行时不占用CPU栈空间。
  • 其交互式解释器'mqjs'支持内存限制、交互模式及字节码输出等多种选项。
  • 字节码可保存后执行,存储格式取决于CPU字节序和字长(32位或64位)。
  • MQuickJS强制启用严格模式,禁止'with'语句、未用'var'声明的全局变量及数组空位等语法。
  • 仅支持全局'eval',禁止值装箱操作(如'new Number(1)')。
  • 数组不允许存在空位,越界赋值仅允许在数组末尾操作,否则报错。
  • 引擎对C库依赖极低,通过预置内存缓冲区替代'malloc'/'free'进行内存分配。
  • C语言API与QuickJS类似,但需处理因压缩垃圾回收导致的对象移动问题。
  • 内置微型数学库和浮点运算模拟器,兼容无浮点单元的CPU架构。
  • UTF-8字符串存储方案在保持JS兼容性的同时优化内存占用。
  • 标准库固化在只读存储器中,实现快速初始化与极低内存消耗。
  • 本引擎采用MIT许可证,源代码主要著作权归Fabrice Bellard与Charlie Gordon所有。