- 主要观点:为加快开发并确保
gccrs在关键编译器传递中与rustc有相同行为,去年开始尽可能复用rustc的组件和 crate。目标是探讨这些组件,解释复用原因及整合方式。 关键信息:
- 已添加到
gccrs的首个rustc组件是rustc_parse_format,用于解析 Rust 格式字符串。 - 正在复用的关键组件是
polonius,下一代 Rust 借用检查器。 - 未来计划添加更多
rustc组件,如新的 trait 求解器等,但由于内部表示不同,并非所有组件都可复用。 - 复用
rustc组件很重要,如在借用检查、字符串模板解析等方面,可减少差异并确保行为一致。 - 目前通过
cargo和rustc编译复用的组件,之后计划通过引导过程将其整合到gccrs中。
- 已添加到
重要细节:
rustc_parse_format解析模板字符串及其中的“片段”,生成 Rust 代码调用core::fmt函数。polonius已可在rustc的 nightly 版本中使用-Z polonius选项,目前正在重写。rustc和gccrs在 AST 结构上对“块”表达式的表示不同,影响某些算法的处理。- 引导过程中先使用无借用检查的 C++编译器构建
gccrs,再用其编译polonius及其他 Rust 组件,最后验证编译后的组件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。