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