phosek added inline comments.

================
Comment at: clang/lib/Driver/Multilib.cpp:137
+struct MultilibSetSerialization {
+  std::string ClangMinimumVersion;
+  std::vector<MultilibSerialization> Multilibs;
----------------
Can we use a separate versioning scheme rather than tying the version to Clang? 
That is start at version 1.0 and bump it every time we make backwards 
incompatible change. That's the strategy we've for YAML formats used in other 
tools such as 
[llvm-ifs](https://llvm.org/docs/CommandGuide/llvm-ifs.html#ifs-formats).

The reason I think that would be preferable is that Clang will be at version 
//N.0.0// for ~9 months; we bump the version when we branch of the release, 
then spent 6 months developing and then typically another 3 months stabilizing 
the release branch. So for example, we bump the version to 16.0.0 in July 2022, 
and that version will get released in March 2023. However, during those 9 
months, we may want to make more than one breaking change to the format.

This may not be an issue for projects that only follow stable releases, but 
there's plenty of major projects that live at HEAD, such as Android, Chromium 
or Fuchsia, for which this could cause an issue. Using a dedicated versioning 
scheme allows us to decouple the format evolution from Clang releases.


================
Comment at: clang/lib/Driver/Multilib.cpp:137
+struct MultilibSetSerialization {
+  std::string ClangMinimumVersion;
+  std::vector<MultilibSerialization> Multilibs;
----------------
phosek wrote:
> Can we use a separate versioning scheme rather than tying the version to 
> Clang? That is start at version 1.0 and bump it every time we make backwards 
> incompatible change. That's the strategy we've for YAML formats used in other 
> tools such as 
> [llvm-ifs](https://llvm.org/docs/CommandGuide/llvm-ifs.html#ifs-formats).
> 
> The reason I think that would be preferable is that Clang will be at version 
> //N.0.0// for ~9 months; we bump the version when we branch of the release, 
> then spent 6 months developing and then typically another 3 months 
> stabilizing the release branch. So for example, we bump the version to 16.0.0 
> in July 2022, and that version will get released in March 2023. However, 
> during those 9 months, we may want to make more than one breaking change to 
> the format.
> 
> This may not be an issue for projects that only follow stable releases, but 
> there's plenty of major projects that live at HEAD, such as Android, Chromium 
> or Fuchsia, for which this could cause an issue. Using a dedicated versioning 
> scheme allows us to decouple the format evolution from Clang releases.
Use `llvm::VersionTuple` rather than `std::string` which is intended for this 
purpose.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142932/new/

https://reviews.llvm.org/D142932

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to