这些年用业余时间,使用 Rust 写了个 JS 引擎,不是标题党!

2025 年 8 月 14 日
 echosoar

这是一个学习性项目,主要目的是为了了解 JS 引擎的内部实现,还有就是学习 Rust 。

在 AST 解析、Bytecode 执行等方面参考了一些既有的 JS 解释器实现,比如 Quickjs 等。

目前已经实现了把 TC39 的 Test262 测试集集成,跑通了几千个 case ,也在逐步参照 ECMA 规范实现更多的特性。

当前目前还在开发中,有兴趣的朋友可以一起来共建呀!

欢迎 star 和 contribute: https://github.com/echosoar/jsi

5072 次点击
所在节点    分享创造
18 条回复
qiqw
2025 年 8 月 14 日
已 fork
rm2788
2025 年 8 月 14 日
gc 是怎么实现的?
br_wang
2025 年 8 月 14 日
已 star
MEIerer
2025 年 8 月 14 日
牛
niub
2025 年 8 月 14 日
厉害
meteor957
2025 年 8 月 14 日
有和其他 JS 引擎对比吗, 比如 Quickjs hermes
BALDOOR
2025 年 8 月 14 日
牛逼!!!给你 256 个赞!!!
js 这边太多引擎了,可以尝试往纯 ts 引擎方向去做,估计能火
FreeGuy
2025 年 8 月 14 日
估计你穷其一生的业余时间都无法在 JS 的各种骚语法海洋中荡漾完,祝君好运!与其有这个时间还不如跟着 Carbon 的开源项目一起去玩。
asdhak
2025 年 8 月 14 日
@duli950523 #2 没看到有 gc
acthtml
2025 年 8 月 14 日
哈哈,点赞。
tinybaby365
2025 年 8 月 14 日
牛!点赞!
echosoar
2025 年 8 月 14 日
@asdhak 确实还没实现 😮‍💨
echosoar
2025 年 8 月 14 日
@FreeGuy 谢谢🙏,总是想做一些有意思、好玩的事情,学习和实现出来一些功能的这个过程让我感觉很享受
a132811
2025 年 8 月 14 日
脚本执行器,运行完就释放,不需要实现 gc 。

这在 isolate worker/playground 场景下执行 js/python/golang 都很有用,包括执行流程编排的其它语言的表达式。

完成度比较高的 js interpreter 是 https://github.com/boa-dev/boa
tthem
2025 年 8 月 14 日
🐂🍺
imba97
2025 年 8 月 14 日
太强了
huan1209
2025 年 8 月 14 日
厉害
LUO12826
2025 年 8 月 15 日
跟一个,之前也是以学习的心态用 C++写了个 js 引擎。当时主要是对 gc 、异步函数(协程)等感兴趣。因为不想支持 eval ,所以没整上 test262 ,但也是做到了能跑 Typescript 2 转译器的程度。后来因为毕业找工作啥的就暂停了。写了这么个东西才切身感受到 Quickjs 作者的强大,有的东西先不说难度,繁琐程度就够喝一壶的。

https://github.com/LUO12826/NaiveJS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1152264

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX