写点什么

轻量可嵌入的 QuickJS 引擎重磅开源,它会是下一个 V8 吗?

  • 2019-07-15
  • 本文字数:1216 字

    阅读完需:约 4 分钟

轻量可嵌入的QuickJS引擎重磅开源,它会是下一个V8吗?

上周是这是 JavaScript 引擎的重要一周。在 Facebook 发布 Hermes 引擎之前, Bellard 以及 C 语言专家 Charlie Gordon 公开发布了 QuickJS。它是在 MIT 许可下发布的一个轻量可嵌入的 JavaScript 引擎,支持最新的 ES2019 语言规范。


正如 Twitter 上的一位网友所说“JavaScript 引擎很像公交汽车:你等了好几年都没来,然后两个闪亮新玩家一并出现!”


QuickJS 的特点

QuickJS 支持 ES2019规范, 包括模块,异步生成器和代理。同时可选地支持数学扩展,例如BigInt、BigFloat 和运算符重载。


主要特点:


  • 小巧且易于嵌入:只需几个 C 文件,无外部依赖,x86 下一个简单的 hello world 示例程序仅 190 KB 的大小。

  • 具有极低启动时间的快速解释器:在台式 PC 的单核上,在大约 100 秒内运行ECMAScript测试套件56000 次测试。运行时实例的完整生命周期在不到 300 微秒的时间内完成。

  • 支持ES2019 ,包括模块、异步生成器和完整的 Annex B 支持(传统的 Web 兼容性)。

  • 100%的通过了 ECMAScript 测试用例。

  • 可以将 Javascript 源编译为没有外部依赖的可执行文件。

  • 使用引用计数(以减少内存使用并具有确定性行为)的垃圾收集与循环删除。

  • 数学扩展:BigInt,BigFloat,运算符重载,bigint 模式,数学模式。

  • 在 Javascript 中实现的具有上下文着色的命令行解释器。

  • 带有 C 库包装库构建的内置标准库。

能否取代 V8

这个消息一经发出便在 Hacker News、知乎等社区上引发热议。


Hacker News 上网友“Aissen”说:


我私下里见过 Fabrice 一次,他绝对是一个非常谦逊的人。当他告诉我们在大约一年前开始做这个项目时,他认为这不是什么大事,只是一个小型的 js 引擎,永远不会与 v8 竞争。在回答完我的几个问题之后,显然目标是实现最新的 ECMAScript 规范,包括所有好的东西。但它永远不会与 V8 成为竞争的关系。


知乎网友“龙泉寺扫地僧”说


又是 Bellard 大神的作品,此大神当年看他写的 QEMU 就惊为天人,现在终于对 JS 下手了。


V8 越来越大,最新版好像都快 10M 了,其实很多时候我就想带个小巧可用的 js 引擎而已,这次刚好可以填补这方面的空白(其他 js 引擎对标准实现的还不够完善)。要不是 Blink 和 V8 深度绑定,我真想把 V8 替换掉。


不过好像没有 JIT?那就有点遗憾了。毕竟 Bellard 大神就是做编译优化出身的,QEMU 里的能跑这么快就是靠动态翻译执行,希望后续能补上。


来源:https://www.zhihu.com/question/334509855/answer/746217029

一路开挂的作者

Fabrice 是一位法国著名的计算机程序员,因 FFmpeg、QEMU 等项目而闻名业内。他也是最快圆周率算法贝拉公式、TCCBOOT 和 TCC 等项目的作者。曾在国际 C 语言混乱代码大赛中两度获胜。


网友 justjavac 在知乎上晒出了作者之前的伟绩:



图片来源:https://www.zhihu.com/question/334509855/answer/745753879

网友尝鲜

QuickJS 以其轻巧好用的特性被大家广为赞赏,一些网友已经开始尝试使用它了,感兴趣的朋友可以去看下:


QuickJS for IOS:https://github.com/siuying/QuickJS-iOS


2019-07-15 19:429705
用户头像
王莹 腾讯云产品运营

发布了 74 篇内容, 共 46.4 次阅读, 收获喜欢 231 次。

关注

评论 3 条评论

发布
用户头像
大神就是让人望尘莫及
2019-08-08 15:30
回复
用户头像
非一般的存在
2019-07-21 11:58
回复
用户头像
666
2019-07-15 23:35
回复
没有更多了
发现更多内容

首次全面解析云原生成熟度模型:解决企业「诊断难、规划难、选型难」问题

阿里巴巴中间件

阿里云 中间件 成熟度

从实例出发,算力网络到底是如何编排的?

鲸品堂

算力网络

如何用AscendCL的接口开发网络模型推理场景下应用?

华为云开发者联盟

人工智能 企业号九月金秋榜

想了解Python中的super 函数么

华为云开发者联盟

Python 开发 企业号九月金秋榜

如何高效解决 C++内存问题,Apache Doris 实践之路|技术解析

SelectDB

c++ 大数据 数据分析 Doris 企业号九月金秋榜

LeaRun低代码平台 助力中小企业快速开发MES系统

力软低代码开发平台

「趣学前端」读取Excel文件内容

叶一一

JavaScript 前端 9月月更

【git】:有关git的基础指令以及分支概念

翼同学

git 开源 版本管理 9月月更

连接与计算无处不在,火山引擎新一代边缘云

火山引擎边缘云

云原生 CDN 边缘计算 火山引擎 边缘云

企业知识管理平台在企业中扮演什么样的角色?

Baklib

知识管理

MySQL高级

楠羽

笔记 MySQL 数据库 9月月更

白话讲解创建型设计模式:单例、原型,构建

山河已无恙

9月月更

复享光学发布ZURO系列光谱仪 助力中国半导体产业国产化

硬科技星球

开发NFT数字藏品平台:定制搭建NFT系统

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统

13th 发布在即,一文带你回顾Intel 12th Core

鼎道智联

英特尔 13th处理器 酷睿处理器 12th处理器

共探人工智能新发展,AICON 2022 即将重磅开启

Geek_2d6073

跟着卷卷龙一起学Camera--LensShading

卷卷龙

ISP camera 9月月更

你真的会使用C语言中的 “ 操作符 ” 吗?

Albert Edison

C语言 开发语言 操作符 9月月更

微信小程序,Python爬虫抓包采集实战,采集某成考题库小程序

梦想橡皮擦

Python 9月月更

如何守护数据安全? 这里有一份RDS灾备方案为你支招

京东科技开发者

数据库 安全 灾备 主机安全 RDS

开源密码管理器更安全吗?(1)

神锁离线版

开源 数据安全 密码管理 开源安全 开源软件

经验分享|分享搭建在线帮助中心的方法

Baklib

【Git】:SSH公钥配置、远程仓库的基础使用...

翼同学

git 开源 版本管理 9月月更

C++学习------cinttypes头文件的源码学习

桑榆

c++ 源码阅读 9月月更

天呐,我居然可以隔空作画了

华为云开发者联盟

人工智能 华为云 企业号九月金秋榜

你还不知道什么是Git?

翼同学

git 开源 版本管理 9月月更

使用 Mypy 检查 30 万行 Python 代码,总结出 3 大痛点与 6 个技巧!

Python猫

Python

百万奖池角逐,华为云IoT边缘带你看懂“边缘计算开发者大赛”

华为云开发者联盟

云计算 物联网 华为云 企业号九月金秋榜

设计模式的艺术 第十九章迭代器设计模式练习(设计一个逐页迭代器,每次可返回指定个数(一页)元素,并将该迭代器用于对数据进行分页处理)

代廉洁

设计模式的艺术

面试突击80:说一下 Spring 中 Bean 的生命周期?

王磊

Java 面试题

产品经理的进阶指南

产品海豚湾

产品经理 产品设计 职业发展 职业道路 9月月更

轻量可嵌入的QuickJS引擎重磅开源,它会是下一个V8吗?_编程语言_王莹_InfoQ精选文章