"John Ericson" <l...@johnericson.me> writes:

> In fairness I just recently submitted the patches added them, so
> absent a clear notion of GNU config releases I think a grace period
> where we can reconsider recently added changes is acceptable.

So let's please remove that change, and replace it with one that
canonicalizes *-*-windows-*.

>  Even more important than this is the principle that config.sub canonical 
> names are *never* changed, even if
>  they are wrong according to some external standard.
>
> That said, I don't think we should so normalize them. I took them from LLVM, 
> which has supported them for years and normalized in
> the *other* direction (i.e. to these), and Rust which follows LLVM's lead. I 
> knew we couldn't change the old ones to normalize to the new
> ones, so I thought a fair middle ground was that neither would normalize to 
> the other.
>
> For the record LLVM, Rust, and even sometimes GNU config don't treat
> *-*-foo-bar as *-*-$kernel-$os, but rather *-*-$kernel-$abi.  Where
> ABI is a sort of catch-all residual. This is why
> e.g. riscv-unknown-linux-musl is accepted --- no one would think the
> Musl libc is an operating system! Rather "gnu" is interpreted to be
> mean "glibc, libstdcxx++, etc.".

GNU is an operating system.  Musl-based systems are not GNU, so -musl
represents a ``musl-based operating system''.

> I do not think this is something to be frowned upon because "Operating
> System.", after all, also lacks any rigorous objective definition.  

It does not, within the GNU project at least.  GNU is one operating
system; Android is another, as are Musl-based systems.  And MS-Windows
is a single operating system.

> At the end of the day there is:
>
> 1 The syscall interface to communicate with "the outside world". (By
> "kernel" we really mean syscall interface, it is possible for two
> different implementations, like the actual Windows kernel, and Wine,
> to support the same syscall interface.)

There is already a set precedent for how such changes are treated by
config*: see mips*n32, arm*eabi, et cetera.

> 2 Other code linked into the same process. ABI covers the "most
> important" parts of this, especially when the userland ABI is more
> stable than the syscall ABI (Many BSDs, some Windows NT things, etc.)

ABI differences don't constitute a new operating system.

> And even ignoring all that, the *windows*-* convention makes clear
> that these are variations of extra stuff atop on Windows. In many
> instances, it doesn't matter which one of them is in use. Using the
> new triples makes it easier for that agnostic code to roll with the
> punches.

They are invalid triples.

> ----
>
> My intention in adding these to GNU config was to then rework our
> Windows cross compilation in Nixpkgs to use them, which would mean
> likewise submitting patches to GCC and other things to accept them
> too. Normalizing them away would prevent me from doing all these other
> yak shaves, and trying to get the various flavors of Windows cross to
> work more consistently, because everything downstream from config.sub
> invocations would work the same way as before. IMO that would
> basically defeat the purpose of accepting them at all in GNU config
> --- better to reject that do a normalization that may not be desired.

If these configuration triplets are normalized, GNU projects (and others
using config*) will automagically work when they are provided.  How is
that worse than forcing every program wishing to support MS-Windows to
introduce express support for 2 or 3 disparate and incorrect triplets?

Anyway, I plan to merge the latest config.* into Emacs soon.  So
speaking as someone responsible, in part, for keeping the MS-Windows
port of Emacs in working order, I would like to see the change I
illustrated installed ASAP.

Reply via email to