爱意满满的作品展示区。
echosoar

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

  •  1
     
  •   echosoar · Aug 14, 2025 · 5185 views
    This topic created in 448 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

    https://github.com/LUO12826/NaiveJS
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2767 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 95ms · UTC 13:26 · PVG 21:26 · LAX 05:26 · JFK 08:26
    ♥ Do have faith in what you're doing.