QEMU 和 FFmpeg 创始人发布了 QuickJS JavaScript 引擎

法国数学家 Fabrice Bellard 创立了 QEMU 和 FFmpeg 项目,还创建了最快的 Pi 计算公式并开发了图像格式 BPG,发布了新的 JavaScript 引擎的第一个版本 快速JS。 该发动机结构紧凑,专为集成到其他系统而设计。 该项目代码是用 C 语言编写的,并根据 MIT 许可证分发。 该引擎的构建版本也可用,使用 Emscripten 编译成 WebAssembly,适合在浏览器中执行。

JavaScript 实现 支持 ES2019规范,包括模块、异步生成器和代理。 可选择支持非标准数学 扩张 对于 JavaScript,例如 BigInt 和 BigFloat 类型,以及 运算符重载。 QuickJS 的性能显着 超过 可用的类似物,例如,在测试中
bench-v8 领先于发动机 XS 35% 杜克胶带 增加了一倍多 脚本 三次并且 慕斯 七次。

除了用于将引擎嵌入到应用程序中的库之外,该项目还提供了一个 qjs 解释器,可用于从命令行运行 JavaScript 代码。 此外,qjsc编译器可用,能够生成适合独立执行的输出可执行文件,不需要外部依赖。

主要特点:

  • 紧凑且易于集成到其他项目中。 该代码仅包含几个不需要外部依赖项进行汇编的 C 文件。 最简单的编译应用程序大约需要 190 KB;
  • 非常高的性能和短的启动时间。 在普通台式电脑的单核上执行时,通过 56 次 ECMAScript 兼容性测试大约需要 100 秒。 运行时初始化耗时不到300微秒;
  • 几乎完全支持 ES2019 规范并完全支持附录 B,该附录定义了与旧版 Web 应用程序兼容的组件;
  • 完全通过 ECMAScript 测试套件的所有测试;
  • 支持将Javascript代码编译成可执行文件,无需外部依赖;
  • 基于引用计数的垃圾收集器,无需循环清理,这使我们能够实现可预测的行为并减少内存消耗;
  • JavaScript 中数学计算的一组扩展;
  • 用于在命令行模式下执行代码的 shell,支持上下文代码高亮;
  • 带有 C 库包装器的紧凑标准库。

该项目还开发了三个涉及 QuickJS 且适合个人使用的附带 C 库:

  • libregexp - 正则表达式的快速实现,完全兼容 Javascript ES 2019 规范;
  • libunicode - 一个用于处理 Unicode 的紧凑库;
  • libbf - 实现任意精度浮点运算和具有精确舍入的超越函数。

来源: opennet.ru

添加评论