V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
echosoar
V2EX  ›  分享创造

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

  •  1
     
  •   echosoar · 19 天前 · 3404 次点击

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

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

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

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

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

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

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

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

    https://github.com/LUO12826/NaiveJS
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3099 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:14 · PVG 20:14 · LAX 05:14 · JFK 08:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.