It seems like it would be so much easier to ship the tzdb algorithm as a single C library that could do arbitrary computation.
Instead, the authors prefer to use their own domain language — source files with a compiler to a binary format with a reference parser implementation. The thrust of this article is that’s mostly good enough but their domain language doesn’t include lunar information.
The downside would be size and runtime efficiency. I’m guessing tzdata is built the way it is so that it can be extremely small and efficient rather than large and, computationally speaking, comprehensive. You can run it on an Arm M0 as well as an Apple M2.
A lot of people appreciate the fact that whenever some random government decides to change of rule of their timezone (such as announcing DST changes), they only get a file update where the file is not powerful enough to be Turing complete instead of a C library update.
That’s a great point. For me though, these updates come via the same OS vendor channels that provided updated binaries too, so it’s not like I’m dodging a recompile.
Instead, the authors prefer to use their own domain language — source files with a compiler to a binary format with a reference parser implementation. The thrust of this article is that’s mostly good enough but their domain language doesn’t include lunar information.
The downside would be size and runtime efficiency. I’m guessing tzdata is built the way it is so that it can be extremely small and efficient rather than large and, computationally speaking, comprehensive. You can run it on an Arm M0 as well as an Apple M2.