[libcxx-commits] [libcxx] [llvm] [libcxx] [ci] Test mingw environments with msvcrt.dll, too (PR #115783)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Thu Nov 28 13:37:56 PST 2024


ldionne wrote:

> It's a legacy configuration indeed, and it's not as functional as UCRT. Many users do move away from it - however I don't see being able to entirely drop it within any foreseeable future either. (Note, my toolchain distribution is "upstream-only", I don't carry any downstream patches on anything, as I make sure to work entirely upstream.)

That sometimes makes sense, and sometimes it doesn't. I think it makes sense for mainstream configurations to be supported upstream, but folks must also be OK with maintaining a bit of downstream diff for non-mainstream configurations. We do that at Apple as well -- we have many downstream configurations that we don't try to contribute upstream to avoid creating a support burden upstream. It's all about finding a balance.

I'm not claiming `msvcrt.dll` falls in that category, but this tradeoff is something that does exist.

> In the vast majority of cases, this configuration isn't something that costs us extra maintainance - within the whole libcxx, we have one single `#if` (ok, spread out in 2 files) relating to this, other than that things work exactly the same as with UCRT. So by adding this CI configuration, we get build test coverage for that particular detail (which otherwise is untested in the upstream CI so far).

To be clear, this is a "death by a thousand cuts" scenarios -- we support many platforms and if we're not fairly aggressive about our support policy, we quickly end up in a state where the code base is a mess.
 
> If we keep it as a build-only CI configuration, it's quite cheap wrt CPU time on the CI. If we want to, we can also add running of tests with it; it requires adding a handful of extra `XFAIL`s but nothing really terrible actually (I have patches set up for that on top of this, if we want to go that way).

I had actually not noticed that we were only building the runtimes, not testing them. I don't think that's sufficient -- we want to also run the tests, otherwise this clearly isn't worth supporting upstream.

https://github.com/llvm/llvm-project/pull/115783


More information about the libcxx-commits mailing list