Re: C99 compliance for src/port/snprintf.c - Mailing list pgsql-hackers

From Thomas Munro
Subject Re: C99 compliance for src/port/snprintf.c
Date
Msg-id CAEepm=0cJ5RqJAprEmfTm+2Fz4WQNS8acT=41S3dBLThRJP32A@mail.gmail.com
Whole thread Raw
In response to Re: C99 compliance for src/port/snprintf.c  (Andres Freund <andres@anarazel.de>)
Responses Re: C99 compliance for src/port/snprintf.c
Re: C99 compliance for src/port/snprintf.c
List pgsql-hackers
On Thu, Aug 16, 2018 at 11:06 AM, Andres Freund <andres@anarazel.de> wrote:
> On 2018-08-16 10:54:01 +1200, Thomas Munro wrote:
>> Really?  I am not an MSVC user but I had the impression that their C
>> mode (/TC or files named .c) was stuck on C89/C90 as a matter of
>> policy, as Herb Sutter explained here (though maybe the situation has
>> changed since then):
>
> They revised their position gradually, starting soon after. They claim
> full C99 "language" (vs library, which is also pretty complete)
> compliance now.  I've not yet bothered to fully figure out which version
> supports what however.  Nor am I really sure about the whole flag thing,
> it appears there's a gui element to choose, which we might need to mirror on
> the xml level.

Hah, I see.  Thanks apparently due to FFmpeg for helping them change
their minds.  That seems like a bit of a catch-22 for projects that
care about portability.  (Maybe if we start writing C11 they'll change
the compiler to keep up?  Actually I already did that once, with an
anonymous union that turned the build farm slightly red...)

https://stackoverflow.com/questions/27826409/what-is-the-official-status-of-c99-support-in-vs2013

> ...
> which I think is what we roughly would want.  So it looks like msvc 2013
> might be the relevant requirement.

FWIW cfbot is using Visual Studio 2010 right now.  Appveyor provides
2008, 2010, 2012, 2013 (AKA 12.0), 2015, 2017, and to test with a
different toolchain you can take the example patch from
https://wiki.postgresql.org/wiki/Continuous_Integration and add a line
like this to the end of the install section (worked for me; for 2015+
you probably also need to request a different image):

  - 'call "C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\vcvarsall.bat" x86_amd64'

I'll make that change to cfbot if we decree that it is the new
baseline for PostgreSQL on Windows.  Or I could do it sooner if anyone
wants to be able to post test C99 patches in the Commitfest before we
decide.

-- 
Thomas Munro
http://www.enterprisedb.com


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: C99 compliance for src/port/snprintf.c
Next
From: Michael Paquier
Date:
Subject: Re: Improve behavior of concurrent TRUNCATE