[pre-RFC] Compilation Configuration Representation

Thanks for the RFC. Generally I am in support of the change.

  • Moving the config to IRModule could better avoid overloading the target.
  • The design of targets list and target host seems really similar to a composite target, can we actually use a single composite target (where each target can be a composite target) with executor and runtime field as compilation config?
  • CheckAndUpdateHostConsistency is designed to make sure target.host and target host are consistent along the way. If we have a better machanism to do that since we have target host as a field in compilation configuration, we may further reconsider the usage of target inside of compilation flow.
  • On the target side, it’s a breaking change but I would be optimistic on deprecation after a couple releases.
  • Nit: personally I prefer to use target host as a field of target, or complication config, instead of directly have a argument name for that. from_target can also retrieve the target host from given target.