|
1 | 1 | # Changelog |
2 | 2 |
|
3 | 3 | * Unreleased |
| 4 | +* 2.3.0 (2023-06-27, TZDB version 2023c) |
| 5 | + * Create [CustomZoneRegistry](examples/CustomZoneRegistry/) example |
| 6 | + to illustrate how to use a custom registry. |
| 7 | + * Update `BasicZoneManager` to detect gaps. |
| 8 | + * Allows `AceTimeValidation/validation` tests to pass. |
| 9 | + * Still not able to distinguish between exact and overlap though. |
| 10 | + * Allow multi-character `ZoneRule.letter` in `BasicZoneProcessor`. |
| 11 | + * Regenerate `zonedb` which enables 2 more zones: `/Africa/Windhoek`, |
| 12 | + and `America/Belize` |
| 13 | + * Increases `zonedb` by 150-200 bytes. |
| 14 | + * Rename `BrokerFactory` to `ZoneInfoStore` for better self-documentation. |
| 15 | + * This is an internal implementation detail. Downstream clients should |
| 16 | + not be affected. |
| 17 | + * `ZoneContext` |
| 18 | + * Move `ZoneContext`, `letters[]`, `fragments[]` into PROGMEM. |
| 19 | + * Move `zonedbXxx::kTzDatabaseVersion` string into PROGMEM, and change |
| 20 | + type to `const __FlashString*`. |
| 21 | + * Create `ZoneContextBroker` around `ZoneContext`, for consistency |
| 22 | + with all other zoneinfo data structures. Merge `ZoneContext.h` into |
| 23 | + `ZoneInfo.h`. |
| 24 | + * Add `startYearAccurate` and `untilYearAccurate` to `ZoneContext` which |
| 25 | + define the interval of accurate transitions. |
| 26 | + * Saves around 150-200 bytes of RAM on AVR processors, |
| 27 | + 200-350 bytes of RAM on ESP8266. |
| 28 | + * Cleanly separate zoneinfo storage classes from their brokers classes. |
| 29 | + * Three storage implementations instead of one: `zoneinfolow`, |
| 30 | + `zoneinfomid`, `zoneinfohigh`, supporting low, middle, and high time |
| 31 | + resolutions. |
| 32 | + * `zoneinfohigh` was created to support `CompleteZoneProcessor`, |
| 33 | + `CompleteZoneManager` and the `zonedbc` database. |
| 34 | + * `zoneinfomid` initially used in `ExtendedZoneProcessor`, but now |
| 35 | + unused. |
| 36 | + * Merge `zoneinfo/ZonePolicy.h` into `zoneinfo/ZoneInfo.h`. |
| 37 | + * Convert structs in `zoneinfo/ZoneInfo.inc` into templates, with |
| 38 | + synthetic `typename S` selector. Merge `ZoneInfo.inc` into |
| 39 | + `ZoneInfo.h`. |
| 40 | + * Support timezones before 1972 using `CompleteZoneManager`, |
| 41 | + `CompleteZoneProcessor`, and `zonedbc` database |
| 42 | + * Before standardizing on UTC around 1970, many timezones had local |
| 43 | + times offsets from UTC which require one-second resolution instead of |
| 44 | + one-minute resolution. This requires changing many internal variables |
| 45 | + from `int16_t` to `int32_t`. |
| 46 | + * Change `TimeOffset` to support one-second resolution using `int32_t`. |
| 47 | + * Rename `BasicZone::stdOffseMinutes()` to `BasicZone::stdOffset()` |
| 48 | + which returns a `TimeOffset` object. |
| 49 | + * Rename `ExtendedZone::stdOffseMinutes()` to |
| 50 | + `ExtendedZone::stdOffset()` which returns a `TimeOffset` object. |
| 51 | + * Leave `BasicZoneProcessor` using one-minute resolution because its |
| 52 | + algorithm has an inherent limitations which cannot handle many |
| 53 | + timezones before 1972, so no need to convert `int16_t` to `int32_t` |
| 54 | + fields. |
| 55 | + * Add `CompleteZoneManager`, `CompleteZoneProcessor`, |
| 56 | + `CompleteZoneProcessorCache`, `CompleteZone` |
| 57 | + * Add `zonedbc` database which is valid from `[1800,10000)`, which |
| 58 | + includes all transitions in the TZDB since the first transition is |
| 59 | + 1844. |
| 60 | + * Add `scope=complete` to access the `zonedbc` database. |
| 61 | + * Zone Processor with graceful degradation |
| 62 | + * Remove range checks against `ZoneContext.startYear()` and |
| 63 | + `ZoneContext.untilYear()` |
| 64 | + * Replace with `LocalDate::kMinYear` and `LocalDate::kMaxYear`, mostly |
| 65 | + for formatting reasons (prevent negative |
| 66 | + years, and years with more than 4 digits). |
| 67 | + * The zone processors will always return something reasonble across the |
| 68 | + entire `int16_t` range. |
| 69 | + * Only the accuracy suffers outside of the `startYearAccurate()` and |
| 70 | + `untilYearAccurate()` limits. |
| 71 | + * Along with v2.2 which always generates anchor rules for all zone |
| 72 | + policies, the `startYearAccureate()` and `untilYearAccurate()` allows |
| 73 | + for graceful degradation of classes like `ZonedDateTime` for years |
| 74 | + outside of this accuracy range. |
| 75 | + * Rename `src/tzonedb*` directories |
| 76 | + * to `src/zonedb*testing` for consistency with other acetime libraries |
4 | 77 | * 2.2.3 (2023-05-31, TZDB version 2023c) |
5 | 78 | * Update `ace_time/testing/*` classes to support splitting the test data |
6 | 79 | into 2 separate lists: `transitions` and `samples`. |
|
0 commit comments