(重新)在 gccrs 中使用 rustc 组件

  • 主要观点:为加快开发并确保gccrs在关键编译器传递中与rustc有相同行为,去年开始尽可能复用rustc的组件和 crate。目标是探讨这些组件,解释复用原因及整合方式。
  • 关键信息

    • 已添加到gccrs的首个rustc组件是rustc_parse_format,用于解析 Rust 格式字符串。
    • 正在复用的关键组件是polonius,下一代 Rust 借用检查器。
    • 未来计划添加更多rustc组件,如新的 trait 求解器等,但由于内部表示不同,并非所有组件都可复用。
    • 复用rustc组件很重要,如在借用检查、字符串模板解析等方面,可减少差异并确保行为一致。
    • 目前通过cargorustc编译复用的组件,之后计划通过引导过程将其整合到gccrs中。
  • 重要细节

    • rustc_parse_format解析模板字符串及其中的“片段”,生成 Rust 代码调用core::fmt函数。
    • polonius已可在rustc的 nightly 版本中使用-Z polonius选项,目前正在重写。
    • rustcgccrs在 AST 结构上对“块”表达式的表示不同,影响某些算法的处理。
    • 引导过程中先使用无借用检查的 C++编译器构建gccrs,再用其编译polonius及其他 Rust 组件,最后验证编译后的组件。
阅读 11
0 条评论