Re: PRI?64 vs Visual Studio (2022)

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Tom Lane <tgl@sss.pgh.pa.us>, Thomas Munro <thomas.munro@gmail.com>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2025-11-19T09:19:47Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Test PRI* macros even when we can't test NLS translation.

  2. Avoid requiring Spanish locale to test NLS infrastructure.

  3. Drop support for MSVCRT's float formatting quirk.

  4. Drop support for MSVCRT's %I64 format strings.

  5. Use PRI?64 instead of "ll?" in format strings (continued).

  6. Use <stdint.h> and <inttypes.h> for c.h integers.

  7. Make float exponent output on Windows look the same as elsewhere.

Attachments

On 19.11.25 04:15, Tom Lane wrote:
> Thomas Munro <thomas.munro@gmail.com> writes:
>> Perhaps meson/configure should do a po -> mo -> gettext() check with a
>> canned test message?  That'd also make sure your msgfmt and libintl
>> are compatible, something I worried about when I wrote about musl
>> recently.
> 
> No, I don't think that's a good approach.  That is testing the library
> available at configure time, not the one you are actually running
> with (possibly years later and on a different machine, even without
> considering cross-compilation cases).  I think we should do it
> honestly with a regression test.  It doesn't need to be very
> complicated --- I think checking one message in one translation is
> sufficient, so long as it includes a PRI?64 usage.

We could generate an English message catalog that translates all 
messages unchanged, and run the whole test suite with that.  This would 
exercise the whole gettext run-time machinery.

Generating the message catalog is easy, gettext provides a tool for 
that.  What's a little tricky is convincing all our testing 
infrastructure to *not* disable NLS-related locale settings.  See 
attached for a rough, incomplete demo.