这是一个学习性项目,主要目的是为了了解 JS 引擎的内部实现,还有就是学习 Rust 。
在 AST 解析、Bytecode 执行等方面参考了一些既有的 JS 解释器实现,比如 Quickjs 等。
目前已经实现了把 TC39 的 Test262 测试集集成,跑通了几千个 case ,也在逐步参照 ECMA 规范实现更多的特性。
当前目前还在开发中,有兴趣的朋友可以一起来共建呀!
欢迎 star 和 contribute: https://github.com/echosoar/jsi
![]() |
1
qiqw 19 天前
已 fork
|
2
duli950523 19 天前
gc 是怎么实现的?
|
3
br_wang 19 天前
已 star
|
![]() |
4
MEIerer 19 天前
牛
|
![]() |
5
niub 19 天前
厉害
|
6
meteor957 19 天前
有和其他 JS 引擎对比吗, 比如 Quickjs hermes
|
7
BALDOOR 19 天前
牛逼!!!给你 256 个赞!!!
js 这边太多引擎了,可以尝试往纯 ts 引擎方向去做,估计能火 |
8
FreeGuy 19 天前
估计你穷其一生的业余时间都无法在 JS 的各种骚语法海洋中荡漾完,祝君好运!与其有这个时间还不如跟着 Carbon 的开源项目一起去玩。
|
9
asdhak 19 天前
@duli950523 #2 没看到有 gc
|
![]() |
10
acthtml 19 天前
哈哈,点赞。
|
![]() |
11
tinybaby365 19 天前
牛!点赞!
|
14
a132811 19 天前
脚本执行器,运行完就释放,不需要实现 gc 。
这在 isolate worker/playground 场景下执行 js/python/golang 都很有用,包括执行流程编排的其它语言的表达式。 完成度比较高的 js interpreter 是 https://github.com/boa-dev/boa |
![]() |
15
tthem 19 天前
🐂🍺
|
![]() |
16
imba97 19 天前
太强了
|
![]() |
17
huan1209 18 天前
厉害
|
18
LUO12826 18 天前
跟一个,之前也是以学习的心态用 C++写了个 js 引擎。当时主要是对 gc 、异步函数(协程)等感兴趣。因为不想支持 eval ,所以没整上 test262 ,但也是做到了能跑 Typescript 2 转译器的程度。后来因为毕业找工作啥的就暂停了。写了这么个东西才切身感受到 Quickjs 作者的强大,有的东西先不说难度,繁琐程度就够喝一壶的。
https://github.com/LUO12826/NaiveJS |