What's New
IANA Timezone Database Update
- Updated to IANA TZDB 2026a
Bug Fixes
-
Windows alias lookup performance —
Europe/Kievand other IANA aliases were triggering a full Windows Registry scan (140+ keys) on every cache miss because the alias lookup calledGetNonLocalizedTZNamebefore checking the in-memoryCAliasesarray. The in-memory lookup now always runs first; the registry is only consulted as a fallback. This eliminates hundreds of expensive I/O operations per query when using timezone aliases on Windows. (#52) -
%zabbreviation for negative fractional-hour offsets — Timezones likePacific/Marquesas(UTC-09:30) were producing malformed abbreviations such as-09-30instead of the correct-0930. Fixed by usingAbs(LDelta)for both hours and minutes components when the offset is negative. (#53) -
Alias cache miss in
GetTimeZone— CallingGetTimeZone('Europe/Kiev')always missed the cache and triggered a fullTBundledTimeZone.Create+Freecycle on every call, since the cache was keyed only by the canonical ID (Europe/Kyiv). The alias key is now also stored in the cache after resolution.FinalizeDictupdated to deduplicate before freeing to prevent double-free when multiple cache keys reference the same instance. (#53)
New Tests
Europe/Kievalias resolution and cache hit verificationPacific/Marquesas%zabbreviation correctness- UTC and
Asia/Kolkata(no-DST zones) - Year boundary (Dec 31 → Jan 1) in DST zones (
America/New_York)