Go是否有稳定的编译器API?

Does Go have a stable compiler API? That is, suppose you want to:

  1. Parse Go code to an intermediate format
  2. Do something (e.g. analysis or optimization) with the code
  3. Generate a binary as normal

and you would like to use the existing compiler implementation for steps 1 and 3, is this possible?

To further clarify what I mean: C++ does have a compiler API, thanks to Clang/LLVM, but not a stable one (Clang/LLVM regularly breaks API backward compatibility, or did last I checked), so that's the kind of thing I'm looking for, but hopefully stable.

As @icza said in a comment, you may use the go/... packages from the standard library to do this.

The standard library falls under the Go 1 guarantee (API stability).

These packages may see additions and bug fixes to their APIs but not breaking changes, for as long as the major version of Go remains 1.

Read the guarantee document for further information and edge cases.