On 6/5/23 10:59, Martin Storsjö wrote:
On Sun, 4 Jun 2023, Jacek Caban via Mingw-w64-public wrote:

We're early in release cycle again, so it feels like a good time to consider defaulting to ucrt. At this point, ucrt support seems generally mature enough and I'm not aware of any blockers.

Yes, this is probably true in general. Changing the default probably is fine for anyone setting up a new toolchain from scratch.

But for people upgrading the mingw-w64 bits on an existing toolchain in place, this would be very disruptive and break things, unless everybody already were specifying what CRT they want to use (when this wouldn't make any difference). I'm not sure how common this is though. In something like a msys2 style environment, I would expect this to happen semi-regularly though (although msys2 users probably leave this up to the package manager instead of doing it themselves).

So like LH, I'm a little bit concerned about the potential disruptiveness of this change.


I agree that those are valid concerns. However, there is little we can do about it and it's unlikely to change over time. Do we want msvcrt-os to remain the default forever?


On the other hand, it would give a clear signal about the direction and what we suggest, and anybody can still revert to the old behaviour by just passing the configure option.


Yes, I think that at this point UCRT became de facto recommended configuration. We provide tools to build UCRT toolchains and suggest people to use it so there already is a mixture of ABIs in the wild. A little push in UCRT direction would be good in my opinion. I also think that it's fair to expect default configure option to reflect recommended setup.


And yes, --with-default-msvcrt=msvcrt-os is not going anywhere, so it's just one configure option away for users that want it. The problem is that people would need to be aware of it, etc. We'd want to be very verbose in release notes and I may send a notice to ML. I'm not sure there is more we can do.


Also note that on Windows, dealing with multiple CRTs and their incompatibilities is not that uncommon. MSVC forced that with each new version for a long time. Changing the default once and keeping an option to be compatible with chosen version doesn't seem too bad in comparison ;)



For the concrete patch, I've got one suggestion:

@@ -178,12 +178,12 @@ msvcr110*)
 msvcr120*)
   default_msvcrt_version=0xC00
   ;;
-ucrt*)
-  default_msvcrt_version=0xE00
-  ;;
-msvcrt|*)
+msvcrt*)
   default_msvcrt_version=0x700
   ;;
+*)
+  default_msvcrt_version=0xE00
+  ;;

I think it'd be more readable if we'd keep the last case statement as

ucrt*|*)

While the * would match it anyway and it's quite redundant, it serves as a label for what the case is for.


Sounds good, I will change it if we decide to proceed.


Thanks,

Jacek



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to