Skip to content

Releases: bxparks/AceTime

1.11.7 - upgrade to TZDB 2022f

02 Nov 22:56
bdd831d
Compare
Choose a tag to compare
  • 1.11.7 (2022-11-02, TZDB 2022f)
    • Upgrade TZDB from 2022e to 2022f
      • https://mm.icann.org/pipermail/tz-announce/2022-October/000075.html
        * Mexico will no longer observe DST except near the US border.
        * Chihuahua moves to year-round -06 on 2022-10-30.
        * Fiji no longer observes DST.
        * Move links to 'backward'.
        * In vanguard form, GMT is now a Zone and Etc/GMT a link.
        * zic now supports links to links, and vanguard form uses this.
        * Simplify four Ontario zones.
        * Fix a Y2438 bug when reading TZif data.
        * Enable 64-bit time_t on 32-bit glibc platforms.
        * Omit large-file support when no longer needed.
        * In C code, use some C23 features if available.
        * Remove no-longer-needed workaround for Qt bug 53071.

v1.11.6 - upgrade to TZDB 2022e

23 Oct 01:02
8bed5e1
Compare
Choose a tag to compare
  • 1.11.6 (2022-10-22, TZDB 2022e)
    • Upgrade TZDB from 2022d to 2022e
      • https://mm.icann.org/pipermail/tz-announce/2022-October/000074.html
        • Jordan and Syria switch from +02/+03 with DST to year-round +03.
      • BasicZoneProcessor can no longer support Asia/Amman (Jordan) and
        Asia/Damascus because the transition to permanent +03 occurs
        at an instant which cannot be handled by the simple algorithm in
        BasicZoneProcessor. Use ExtendedZoneProcessor instead.

v1.11.5 - upgrade to TZDB 2022d

06 Oct 17:09
9f523e8
Compare
Choose a tag to compare

v1.11.4 - upgrade to TZDB 2022b; add daysUntil() utility function

14 Aug 03:08
22be0e7
Compare
Choose a tag to compare
  • 1.11.4 (2022-08-13, TZDB 2022b)
    • Add ace_time::daysUntil(localDate, month, day) utility function that
      returns the number of days until the next (month, day) date. Useful for
      calculating the number of days until the next Christmas for example.
    • Upgrade to TZDB 2022b.
      • https://mm.icann.org/pipermail/tz-announce/2022-August/000071.html
        • Chile's DST is delayed by a week in September 2022.
        • Iran no longer observes DST after 2022.
        • Rename Europe/Kiev to Europe/Kyiv.
        • Finish moving duplicate-since-1970 zones to 'backzone'.
      • zonedb
        • Number of zones decreases from 258 to 237.
        • Number of links increases from 193 to 215.
      • zonedbx
        • Number of zones decreases from 377 to 356.
        • Number of links increases from 217 to 239.

v1.11.3 - upgrade to TZDB 2022a

21 Mar 14:40
28d1532
Compare
Choose a tag to compare

v1.11.2 - fix nullptr crash in certain subclasses of *ZoneProcessor

24 Feb 20:36
cdf4488
Compare
Choose a tag to compare
  • 1.11.2 (2022-02-24, TZDB 2021e)
    • Fix crash triggered by certain subclasses of BasicZoneProcessor and
      ExtendedZoneProcessor.
      • The code did not handle nullptr for the BrokerFactory properly.
      • These particular classes do not know their BrokerFactory at
        compile-time, so they are set to nullptr initially. The
        setBrokerFactory() is expected to be called at runtime later.
      • No effect on the AceTime library itself which does not trigger this
        condition.

v1.11.1 - update ZoneInfoBroker::targetZoneInfo(); no functional change

17 Feb 00:34
d8acf1f
Compare
Choose a tag to compare
  • 1.11.1 (2022-02-16, TZDB 2021e)
    • Update ZoneInfoBroker::targetZoneInfo() to return a ZoneInfoBroker
      instead of a raw ZoneInfo* pointer.
      • Internal wiring change, no change to external API.
      • Allows alternative ZoneInfoBroker classes to implement a consistent
        API.

v1.11.0 - change Link timezones from hard links to symbolic links

14 Feb 22:17
c2b5c00
Compare
Choose a tag to compare
  • 1.11.0 (2022-02-14, TZDB 2021e)
    • Regenerate zonedb/ and zonedbx/ using latest AceTimeTool which
      identifies notable Zones and Policies whose DST shifts are not exactly
      0:00 or 1:00. No actual data change. Notable policies relevant from 2000
      until 2050 are:
      • ZonePolicy Eire: DST shift -1:00
      • ZonePolicy LH: DST shift 0:30
      • ZonePolicy Morocco: DST shift -1:00
      • ZonePolicy Namibia: DST shift -1:00
      • ZonePolicy StJohns: DST shift 2:00
      • ZonePolicy Troll: DST shift 2:00
    • Add support for overflow and underflow to TimePeriod.
      • When isError() returns true, the sign() method discriminates
        3 error conditions, and the printTo() prints the following:
    • Change Link entries from "hard links" to "symbolic links".
      • This allows a TimeZone object to know whether it is a Zone entry
        or a Link entry.
      • Add TimeZone::isLink() and ZoneProcessor::isLink() methods.
      • Add bool followLink = true parameter to various other methods
        (getZoneId(), printTo(), printShortTo()) which determines
        whether the method resolves to the current Link entry or follows the
        link to the destination Zone entry.
      • MemoryBenchmark says that this increases
        flash consumption by 100-300 bytes, due to the extra code needed to
        follow the symlink. But the ability to determine whether the TimeZone
        is a link or not will be necessary for an upcoming feature, so this
        slight increase in flash consumption seems worth it.
      • Regenerate zonedb/ and zonedbx to convert Link entries from
        hard links to symbolic links.
      • See Symbolic Links for more info.
    • Add offset_date_time_mutation methods.
      • Similar to zoned_date_time_mutation methods.
      • Provides some convenient mutation methods for OffsetDateTime.
    • Upgrade Arduino CLI from 0.19.2 to 0.20.2.

v1.10.0 - add 'fold' to control DST gaps and overlaps; add more docs and examples for ESP8266 and ESP32

18 Jan 21:07
1a98be0
Compare
Choose a tag to compare
  • 1.10.0 (2022-01-18, TZDB 2021e)
    • MemoryBenchmark: Add memory consumption for ZoneSorterByName and
      ZoneSorterByOffsetAndName.
      • AVR: 180-530 bytes of flash
      • 32-bit: 120-600 bytes of flash
    • Rename internal TransitionStorage::findTransition() to
      findTransitionForSeconds() for better self-documentation.
    • Move third party SAMD21 boards to new Tier 3 (May work, but not supported)
      level.
      • I can no longer upload binaries to these boards using Arduino IDE
        1.8.19 and SparkFun SAMD Core 1.8.6.
    • Add support for fold parameter to control behavior around DST gaps
      and overlaps.
      • The semantics of the fold parameter is intended to be identical to
        Python PEP 495.
      • Add LocalTime::fold(), LocalDateTime::fold(),
        OffsetDateTime::fold(), ZonedDateTime::fold().
      • Update ExtendedZoneProcessor::getOffsetDateTime(acetime_t) to
        calculate the OffsetDateTime::fold() as an output parameter.
      • Update ExtendedZoneProcessor::getOffsetDateTime(const LocalDateTime&) to handle LocalDateTime::fold() as an input
        parameter.
      • Increases flash usage of ExtendedZoneProcessor by around 600 bytes
        on AVR, and 400-600 bytes on 32-bit processors.
    • Add toUnixSeconds64() and forUnixSeconds64() methods to
      LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime.
      • These use 64-bit int64_t integers, which allows Unix seconds to be
        used up to 2068-01-19T03:14:07Z (which is the limit of these
        various classes due to the internal use of 32-bit acetime_t).
      • These methods make it easier to interoperate with the time_t typedef
        for int64_t on the ESP8266 and ESP32 platforms.
    • Add EspTime app that shows how to integrate
      the SNTP client on the ESP8266 and ESP32 platforms with AceTime.

v1.9.0 - allow sorting of zones by name or offset-name; reduce flash by 1100-1300 bytes on AVR

03 Dec 02:47
02ff26c
Compare
Choose a tag to compare
  • 1.9.0 (2021-12-02, TZDB 2021e)
    • Add ZoneSorterByName and ZoneSorterByOffsetAndName classes
      to sort zone indexes, ids, or names according to 2 pre-defined sorting
      criteria: (1) by name, or (2) by UTC offset and then by name.
    • Add examples/CompareAceTimeToHinnantDate to compare the performance of
      AceTime compared to Hinnant date library.
      • AceTime seems to be about 90X faster for converting date-time
        components to epoch seconds.
    • Add MaxBufSize comment field into zonedb[x]/zone_infos.h which is the
      maximum over all zones in that file. Must be less than or equal to
      ExtendedZoneProcessor::kMaxTransitions.
    • Potential Breaking Change: class TransitionStorage
      • Rename getHighWater() to getAllocSize(). This now returns the
        maximum number of transitions that has been allocated so far, which
        happens to be getHighWater() + 1.
      • Rename resetHighWater() to resetAllocSize().
      • Rename ExtendedZoneProcessor::resetTransitionHighWater() to
        resetTransitionAllocSize().
      • All of these methods were intended for internal debugging so these
        changes are not considered to be an API change.
      • The semantics of these methods are now closer to the algorithm in
        AceTimePython/zone_processor.ZoneProcessor.
    • Breaking Change: Extract BasicZoneProcessorCache and
      ExtendedZoneProcessorCache out of BasicZoneManager and
      ExtendedZoneManager. Remove all pure virtual methods from
      ZoneManager, making the class hierarchy non-polymorphic.
      • Saves 1100-1300 bytes of flash on AVR processors.
      • See Migrating to v1.9 for
        migration info.
    • Breaking Change: Remove pure virtual methods from LinkManager,
      analogous to their removal from ZoneManager.
      • Saves 68 bytes of flash on AVR processors.
      • See Migrating to v1.9 for
        migration info.