Re: On non-Windows, hard depend on uselocale(3)

From: Dagfinn Ilmari Mannsåker <ilmari(at)ilmari(dot)org>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "Tristan Partin" <tristan(at)neon(dot)tech>, "pgsql-hackers" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: On non-Windows, hard depend on uselocale(3)
Date: 2023-11-15 18:42:31
Message-ID: 87y1eyn9ig.fsf@wibble.ilmari.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> writes:

> "Tristan Partin" <tristan(at)neon(dot)tech> writes:
>> I would like to propose removing HAVE_USELOCALE, and just have WIN32,
>> which means that Postgres would require uselocale(3) on anything that
>> isn't WIN32.
>
> You would need to do some research and try to prove that that won't
> be a problem on any modern platform. Presumably it once was a problem,
> or we'd not have bothered with a configure check.
>
> (Some git archaeology might yield useful info about when and why
> we added the check.)

For reference, the Perl effort to use the POSIX.1-2008 thread-safe
locale APIs have revealed several platform-specific bugs that cause it
to disable them on FreeBSD and macOS:

https://github.com/perl/perl5/commit/9cbc12c368981c56d4d8e40cc9417ac26bec2c35
https://github.com/perl/perl5/commit/dd4eb78c55aab441aec1639b1dd49f88bd960831

and work around bugs on others (e.g. OpenBSD):

https://github.com/perl/perl5/commit/0f3830f3997cf7ef1531bad26d2e0f13220dd862

But Perl actually makes use of per-thread locales, because it has a
separate interpereer per thread, each of which can have a different
locale active. Since Postgres isn't actually multi-threaded (yet),
these concerns might not apply to the same degree.

> regards, tom lane

- ilmari

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2023-11-15 19:04:03 Re: On non-Windows, hard depend on uselocale(3)
Previous Message Thomas Munro 2023-11-15 18:38:55 Re: On non-Windows, hard depend on uselocale(3)