写点什么

轻量可嵌入的 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:429965
用户头像
王莹 腾讯云产品运营

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

关注

评论 3 条评论

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

深度遍历:统计最高分的节点数目 🐟

空城机

算法题 7月月更

力扣第三题——无重复字符的最长子串

为自己带盐

力扣

Docker 搭建 MySQL 主从复制

宁在春

MySQL Docker 主从复制 7月月更

数据治理新动态:欧盟发布数据治理研究报告,对国内有何影响

雨果

数据治理

融云推出实时社区解决方案,垂直兴趣社交「高级玩家」上线

融云 RongCloud

社交网络 即时通讯IM

2022年移动应用运营增长洞察白皮书:流量红利消退时代的“破局”之道

科技汇

Python网页解析库:用requests-html爬取网页

和牛

测试

网易游戏 Flink SQL 平台化实践

Apache Flink

大数据 flink 编程 流计算 实时计算

STEPN链游系统开发模式详解(运动赚钱模式)

开发微hkkf5566

连续最大和与判断回文

未见花闻

7月月更

基于 SPICE 协议的硬编推流整合方案在云游戏中的应用

字节跳动视频云技术团队

视频编解码 云游戏

教你使用CANN将照片一键转换成卡通风格

华为云开发者联盟

人工智能 CANN 昇腾 卡通

Paper Time 回顾|MB2:为自治数据库建立行为模型

OceanBase 数据库

Baklib:分享一些关于建设企业知识管理(KM)的方法

Baklib

Ceph在手天下我有!

穿过生命散发芬芳

Ceph 7月月更

百度、阿里、腾讯,谁最先倒下?

雨果

数据中台 数据服务

论文领读|面向机器翻译的多语言预训练技术哪家强?最新进展一睹为快!

澜舟孟子开源社区

人工智能 自然语言处理 机器学习 后端 机器翻译

【Docker 那些事儿】容器监控系统,来自Docker的暴击

Albert Edison

Docker 云计算 Kubernetes 云原生 7月月更

你的技术leader不懂这个?没有它就是没有设计的完成思考过程

田晓亮

方法论 架构设计

面试官:Redis&MySQL的三种缓存更新策略是怎样的?

Java全栈架构师

Java MySQL redis 程序员 程序人生

物联网技术在物联网产业格局的分布与应用

AIRIOT

低代码 物联网 低代码,项目开发

我有 7种 实现web实时消息推送的方案,7种!

程序员小富

Java springboot websocket 消息系统

C2B模式下优惠券架构演进

转转技术团队

Java 架构 Elastic Search

BigQuery和Snowflake谁更适合你?两大数据仓库8个角度逐一对比

雨果

数据中台 数据仓库 DaaS DaaS数据即服务 数据即服务

开源轻量级 IM 框架 MobileIMSDK v6.2 发布

JackJiang

网络编程 Netty 即时通讯 im开发 开源im

云服务器ECS老用户专享,10余款实例新购低至3.6折

阿里云弹性计算

阿里云 云服务器 ECS

50个名额限量开放|带着OceanBase年度发布会的消息走来了!

OceanBase 数据库

接口调试还能这么玩?

Liam

前后端分离 Postman API 接口开发 前后端

文档协同工具推荐

Baklib

关于研发效能(41/100)

hackstoic

团队管理

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