Guy Harris via tz wrote in
<[email protected]>:
|On Mar 8, 2026, at 4:41 AM, Dag-Erling Smørgrav <[email protected]> wrote:
|> Guy Harris via tz <[email protected]> writes:
|>> Paul Eggert via tz <[email protected]> writes:
|>>> On my Ubuntu 25.10 platform, my email client (Thunderbird) uses the
|>>> GNU C library to read TZif data. I was talking about that usage, not
|>>> any ICU usage.
|>> So that's a case of an independent reimplementation of the same
|>> C/POSIX API that the tzcode implements. [...]
|>
|> Yes, an independent reimplementation maintained by [checks notes] some
|> guy named Paul Eggert. I bet he sucks.
|
|And not as independent as I'd originally thrught:
|
| https://lists.iana.org/hyperkitty/list/[email protected]/thread/3TRCQROTP2WT4O\
| KEWC6UKAQ34WOJT5OH/
|
|"The GNU C Library (see prep.ai.mit.edu:pub/gnu/glibc-1.05.tar.z) is \
|derived from Olson's 1989 code. Here are its changes:..."
...
|The musl C library, used by some *other* Linux distributions, has its \
|own separate implementation.
But to note it started over half a decade before the RFC on
some binary file format.
|And then there's the code used by at least a plurality of smartphones \
|on the planet, from the Bionic C library, which looks more directly \
|tzcode-derived.
|
|I don't know what code Huawei's doing in its collection of various \
|operating systems all of which, at least from the collection of Wikipedia \
|pages about those various operating systems, seem to be based on each \
|other in some cyclic graph, uses, so I can't speak for their smartphones.
|
|But most of those have, as I noted, constraints stemming from a desire \
|to Look Somewhat Like C and Unix.
|
|Various *other* programming languages have their own libraries. I don't \
|have a list of which ones are wrappers around the C/POSIX APIs and \
|which are completely independent. Some of the latter, as noted, don't \
|read TZif files.
RFC 8536 came in 2019. 9636 in 2024. There are changes to 8536.
There is a new format. There are bugs. There are what i would
interpret as "wild" in-code comments.
For some practice, see for example [585a0a78f9] of musl's
src/time/__tz.c:
explicitly prefer 64-bit/v2 zoneinfo tables
since commit 38143339646a4ccce8afe298c34467767c899f51, the condition
sizeof(time_t) > 4 is always true, so there is no functional change
being made here. but semantically, the 64-bit tables should always be
preferred now, because upstream zic (zoneinfo compiler) has quietly
switched to emitting empty 32-bit tables by default, and the resulting
backwards-incompatible zoneinfo files will be encountered in the wild.
Oops.
--steffen
|
|Der Kragenbaer, The moon bear,
|der holt sich munter he cheerfully and one by one
|einen nach dem anderen runter wa.ks himself off
|(By Robert Gernhardt)