Jimmy Ostler 在 Rust 中实现尾调用解释器

Tail-Call Interpreters in Rust – Jimmy Ostler

最近我在研究如何优化 ternary 项目时,深入探索了 VM 分发的不同风格。受 Noel Welsh 关于 Scala 中 VM 分发方式的启发,我决定在 Rust 中复现并扩展这些技术。我实现了多种版本:从简单的栈式机器到利用 Rust 特性的复杂寄存器机器,包括 Switch Dispatch、Subroutine Dispatch、Indirect Dispatch 以及 Direct Dispatch。通过基准测试,我发现 Direct Dispatch 在我的机器上表现最佳,因为它完全消除了独立的 dispatch 函数,让每条指令直接调用下一条。这次实验不仅验证了尾调用优化在 Rust 中的可行性,也展示了不同分发策略对性能的具体影响。

尾调用解释技术指的是在编译时将某些递归转换为跳转,从而无需分配新的栈帧。
  1. sph

    Ctrl-Shift-C,点击一段文字,在检查器的右侧面板搜索 "text-shadow",取消勾选复选框。

    文字和复古 CRT 效果自有其适用的场合,但这里不是。

  2. noelwelsh

    到底为什么非要用 CRT 效果让技术网页变得没法读?谢天谢地,Firefox 还有阅读模式。

同日更多故事

2026-08-10