Rust 新增 `become` 关键字:尾调用解释器性能媲美手写汇编

Available in: 中文
2026-04-05T23:17:51.116Z·1 min read
Rust 的 nightly 编译器现已支持 `become` 关键字实现尾调用,为解释器开发开辟了全新路径。开发者 Matt Keeter 展示了如何利用这一特性构建 CPU 模拟器,性能媲美手写 ARM64 汇编——全部用 Rust 完成。

Rust 尾调用优化:用 become 关键字构建高性能解释器

Rust 的 nightly 编译器现已支持 become 关键字实现尾调用,为解释器开发开辟了全新路径。开发者 Matt Keeter 展示了如何利用这一特性构建 CPU 模拟器,性能媲美手写 ARM64 汇编——全部用 Rust 完成。

核心问题:解释器分派开销

传统解释器存在分派瓶颈。每条指令执行需要:读取操作码 → 分支跳转到处理函数 → 返回主循环 → 重复。这导致分支预测失败和寄存器溢出。汇编开发者用线程代码解决了这个问题——每条指令处理完成后直接跳转到下一条指令。

become 的威力

Rust 的 become 关键字在语言层面实现了尾调用消除,让解释器性能接近汇编水平。

性能对比

实现方式相对性能
原始 Rust(match 分派)1.0x
ARM64 汇编(线程代码)1.5x
x86-64 汇编(线程代码)2.0x
**Rust 尾调用 (become)**1.4-1.8x

尾调用版本达到汇编 90-95% 的性能,同时保持可读性和可维护性。这意味着开发者不再需要用不安全的汇编来追求高性能。

来源:Matt Keeter 博客

← Previous: Tiny Corp TinyGPU: Building Affordable AI Hardware Outside the Nvidia EcosystemNext: Qwen-3.6-Plus Becomes First AI Model to Process Over 1 Trillion Tokens in a Single Day →
Comments0