connor horman <chorma...@gmail.com> writes:

> It seems to me reading this thread that we've come into two
> conflicting realities: * There exists targets that need to be
> distinguished, and * They are not distinct in any component that
> config.sub has, therefore they cannot and should not be distinguished.
>
> mingw and msvc both use the NT kernel, and the windows operating
> system. So it seems to me that windows, the OS, is the correct way to
> describe them. According to the discussions on this thread, they
> should thusly both canonicalize to the same target. And yet, not only
> is there desire to separate these targets, they already are.
>
> LLVM (as well as my own target parsing tool) refer to the last two
> components as "sys" with two subcomponents (of which at least one
> exists), being os and env. IMO, this seems a far more coherent
> definition that satisfies the requirements, and even more correctly
> matches targets that already exist.

The objective is to keep the status quo unchanged till Hell freezes
over, so that no programs will ever be broken.

> musl is another extreme example: There is no musl OS. The last
> component being musl refers to the use of the musl libc. The resulting
> binary can then be used on either a GNU system or a non-GNU linux
> system like alpine, void, or iglunix. Thus musl cannot be regarded as
> an "OPERATING_SYSTEM" but rather an an environment.
>
> Even on linux-gnu the definition is murky at best. While I won't
> dispute the existence of a GNU operating system running atop the linux
> kernel, in many cases, the actual linux-gnu tag merely refers to
> glibc. Few things using targets nowadays actually cares about the rest
> of the tools, and when they do care that they exist (on --host or even
> --target), they typically don't care that they're provided by GNU, and
> even may not care that they match the interface of the tool provided
> by GNU. Only on --build are the tools really cared about, and I don't
> see many things matching the build tuple or even canonicalizing it. If
> we thus define an "Operating System" as "kernel+libc+tools atop that"
> it becomes clear to me that few things written nowadays care about the
> "GNU Operating System" and only really care about the "GNU
> Environment".

For the purpose of compiling programs, systems using the GNU libc are
equivalent to GNU systems.  config.* does not draw excessively fine
distinctions between them.

In keeping with that, systems using the Musl libc are so similar that
they may as well be considered as a single operating system.  This
contrasts with MinGW and MSVC, whose discrepancies are of sufficient
consequence to warrant individual identification by config.*.

And as configurations which embody these distinctions _already exist_,
they should never change, nor be supplanted by new and purportedly
``improved'' configurations.  I reiterate, until the very end of time...

Reply via email to