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

68 天前
 echosoar

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

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

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

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

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

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

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

完成度比较高的 js interpreter 是 https://github.com/boa-dev/boa
tthem
68 天前
🐂🍺
imba97
68 天前
太强了
huan1209
68 天前
厉害
LUO12826
67 天前
跟一个,之前也是以学习的心态用 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