代码之家  ›  专栏  ›  技术社区  ›  rwallace

Go有稳定的编译器API吗?

go
  •  1
  • rwallace  · 技术社区  · 5 年前

    Go有稳定的编译器API吗?也就是说,假设您想:

    1. 将go代码解析为中间格式
    2. 用代码做一些事情(例如分析或优化)
    3. 正常生成二进制文件

    您希望在步骤1和3中使用现有的编译器实现,这是可能的吗?

    为了进一步阐明我的意思:C++确实有一个编译器API,感谢Clang/LLVM,但不是一个稳定的(CLAN/LLVM经常打破API向后兼容性,或者我最后检查过),所以这就是我正在寻找的东西,但希望稳定。

    1 回复  |  直到 5 年前
        1
  •  1
  •   thwd    5 年前

    正如@icza在评论中所说,您可以使用 go/... 要执行此操作的标准库中的包。

    标准库属于Go 1保证(API稳定性)。

    只要go的主要版本保持1,这些包可能会看到对其API的添加和错误修复,但不会破坏更改。

    阅读 guarantee document 更多信息和边缘案例。