git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "brian m. carlson" <sandals@crustytoothpaste.net>
Cc: Jeff King <peff@peff.net>, Daniel Gurney <dgurney99@gmail.com>,
	git@vger.kernel.org, Johannes.Schindelin@gmx.de
Subject: Re: [PATCH v2] compat/bswap.h: simplify MSVC endianness detection
Date: Mon, 09 Nov 2020 22:00:13 -0800	[thread overview]
Message-ID: <xmqqft5h92fm.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <20201110023620.GH6252@camp.crustytoothpaste.net> (brian m. carlson's message of "Tue, 10 Nov 2020 02:36:20 +0000")

"brian m. carlson" <sandals@crustytoothpaste.net> writes:

> On 2020-11-10 at 00:31:27, Jeff King wrote:
>> On Sun, Nov 08, 2020 at 11:57:41AM +0200, Daniel Gurney wrote:
>> 
>> > Modern MSVC or Windows versions don't support big-endian, so it's
>> > unnecessary to consider architectures when using it.
>> 
>> This made me wonder if we support any non-modern versions (which would
>> be negatively impacted).
>
> I'm pretty sure we don't.  As I said, we're using several C99 features
> and that version precedes the C99 standard (and 1999).
>
>> From the earlier thread at [1], it sounds like probably not, but I
>> wonder if we can offer a stronger argument there (or just define
>> "modern" a little more clearly).
>
> According to Wikipedia[0]:
>
>   Visual C++ 2013 [12.0] finally added support for various C99 features
>   in its C mode (including designated initializers, compound literals,
>   and the _Bool type), though it was still not complete. Visual C++ 2015
>   further improved the C99 support, with full support of the C99
>   Standard Library, except for features that require C99 language
>   features not yet supported by the compiler.
>
> The version mentioned that supported MIPS, Alpha, and m68k was Visual
> C++ 2.0 RISC Edition.  While Wikipedia doesn't mention its release date,
> its successor, Visual C++ 4.0, was released in 1995.  The m68k version
> ran on Macs using those processors, and Apple abandoned m68k for PowerPC
> in 1994[1].

So, 

	The only versions of MSVC that support big-endian are too
	ancient and do not understand some C99 features we use in
	our codebase, so it is unnecessary...

would be sufficient?

> I'm entirely comfortable with requiring that people use a compiler and
> operating system newer than 25 years old to compile Git correctly.  As
> I've said or implied in previous threads, I'm also fine requiring C99
> (vendors having had over two decades to implement it) and only
> supporting OSes with vendor security support, although obviously these
> latter two items are much more controversial.

Maybe controversial, but worth at least laying the ground rules
ahead of time?

Do we have any specific feature we avoid only due to portability
concerns?  Declaring an identifier in the first part of for() is the
only thing that comes to my mind, but there may be others.  I think
we should consider how well each individual feature is supported by
systems we care about as we feel the need.

Thanks.

  reply	other threads:[~2020-11-10  6:00 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-07 23:47 [PATCH] compat/bswap.h: Simplify MSVC endianness detection Daniel Gurney
2020-11-08  0:12 ` brian m. carlson
2020-11-08  9:57 ` [PATCH v2] compat/bswap.h: simplify " Daniel Gurney
2020-11-10  0:31   ` Jeff King
2020-11-10  2:36     ` brian m. carlson
2020-11-10  6:00       ` Junio C Hamano [this message]
2020-11-10 14:04         ` Johannes Schindelin
2020-11-10 15:35           ` Daniel Gurney
2020-11-10 15:47             ` Johannes Schindelin
2020-11-10 17:20               ` Junio C Hamano
2020-11-10 17:30                 ` Junio C Hamano
2020-11-10 22:37                   ` Johannes Schindelin
2020-11-10 14:21       ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqft5h92fm.fsf@gitster.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=dgurney99@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    --cc=sandals@crustytoothpaste.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).