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