主要观点:Cranelift 是作为 Wasmtime 运行时的一部分开发的代码生成后端,10 月在 Rust 夜间工具链中可用,设计旨在快速生成代码,其架构通用可用于 WebAssembly 外,通过 E-graph 进行优化,已用于 Wasmtime 的即时编译器,为 Rust 做了大量工作使其可用,初始使用效果有希望。
关键信息:
- 是 Apache-2.0 许可的代码生成后端,10 月在 Rust 夜间工具链可用。
- 设计优先考虑重要优化以快速生成代码。
- 采用通用架构可用于 WebAssembly 外,原设计用于 Wasmtime、Rust 和 SpiderMonkey。
- 基于 E-graph 进行优化,效率高但提取最终表示为 NP 完全问题。
- 为 Rust 开发需另一个库将中间表示转换为 CLIF,已完成大量工作可作为可选组件。
- 用 Rust 编写可作为与 LLVM 比较的基准,全调试构建与 LLVM 相比在墙钟时间和 CPU 时间上有不同程度减少。
重要细节: - 许多语言有 JIT 编译器,Cranelift 选择通用架构可重用。
- Cranelift 优化包括常量传播等,死码消除通过 E-graph 实现。
- 2020 年论文显示 Cranelift 比 LLVM 快一个数量级但生成代码稍慢。
- 使用 rustup 和 cargo 可尝试 Cranelift 后端,有相关配置细节。
- 全调试构建和增量构建在不同后端的时间差异。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。