Releases: bxparks/AceTime
Releases · bxparks/AceTime
1.11.7 - upgrade to TZDB 2022f
- 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.
- https://mm.icann.org/pipermail/tz-announce/2022-October/000075.html
- Upgrade TZDB from 2022e to 2022f
v1.11.6 - upgrade to TZDB 2022e
- 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.
- https://mm.icann.org/pipermail/tz-announce/2022-October/000074.html
- Upgrade TZDB from 2022d to 2022e
v1.11.5 - upgrade to TZDB 2022d
- 1.11.5 (2022-10-06, TZDB 2022d)
- Upgrade TZDB from 2022b to 2022d
- 2022c
- https://mm.icann.org/pipermail/tz-announce/2022-August/000072.html
- Work around awk bug in FreeBSD, macOS, etc.
- Improve tzselect on intercontinental Zones.
- Skipped because there were no changes that affected AceTime.
- https://mm.icann.org/pipermail/tz-announce/2022-August/000072.html
- 2022d
- https://mm.icann.org/pipermail/tz-announce/2022-September/000073.html
- Palestine transitions are now Saturdays at 02:00.
- Simplify three Ukraine zones into one.
- https://mm.icann.org/pipermail/tz-announce/2022-September/000073.html
- 2022c
- Upgrade tool chain
- Arduino CLI from 0.19.2 to 0.27.1
- Arduino AVR Core from 1.8.4 to 1.8.5
- STM32duino from 2.2.0 to 2.3.0
- ESP32 Core from 2.0.2 to 2.0.5
- Teensyduino from 1.56 to 1.57
- Upgrade TZDB from 2022b to 2022d
v1.11.4 - upgrade to TZDB 2022b; add daysUntil() utility function
- 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.
- https://mm.icann.org/pipermail/tz-announce/2022-August/000071.html
- Add
v1.11.3 - upgrade to TZDB 2022a
- 1.11.3 (2022-03-20, TZDB 2022a)
- Update to TZDB 2022a.
- https://mm.icann.org/pipermail/tz-announce/2022-March.txt
- "Palestine will spring forward on 2022-03-27, not -03-26."
- No changes to code.
- Update to TZDB 2022a.
v1.11.2 - fix nullptr crash in certain subclasses of *ZoneProcessor
- 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 tonullptr
initially. The
setBrokerFactory()
is expected to be called at runtime later. - No effect on the AceTime library itself which does not trigger this
condition.
- The code did not handle nullptr for the
- Fix crash triggered by certain subclasses of
v1.11.1 - update ZoneInfoBroker::targetZoneInfo(); no functional change
- 1.11.1 (2022-02-16, TZDB 2021e)
- Update
ZoneInfoBroker::targetZoneInfo()
to return aZoneInfoBroker
instead of a rawZoneInfo*
pointer.- Internal wiring change, no change to external API.
- Allows alternative
ZoneInfoBroker
classes to implement a consistent
API.
- Update
v1.11.0 - change Link timezones from hard links to symbolic links
- 1.11.0 (2022-02-14, TZDB 2021e)
- Regenerate
zonedb/
andzonedbx/
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()
returnstrue
, thesign()
method discriminates
3 error conditions, and theprintTo()
prints the following:- 0: generic error, ""
- +1: overflow, "<+Inf>"
- -1: underflow, "<-Inf>"
- See USER_GUIDE.md#TimePeriod.
- When
- 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()
andZoneProcessor::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/
andzonedbx
to convert Link entries from
hard links to symbolic links. - See Symbolic Links for more info.
- This allows a TimeZone object to know whether it is a Zone entry
- Add
offset_date_time_mutation
methods.- Similar to
zoned_date_time_mutation
methods. - Provides some convenient mutation methods for
OffsetDateTime
.
- Similar to
- Upgrade Arduino CLI from 0.19.2 to 0.20.2.
- Regenerate
v1.10.0 - add 'fold' to control DST gaps and overlaps; add more docs and examples for ESP8266 and ESP32
- 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.
- I can no longer upload binaries to these boards using Arduino IDE
- 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 theOffsetDateTime::fold()
as an output parameter. - Update
ExtendedZoneProcessor::getOffsetDateTime(const LocalDateTime&)
to handleLocalDateTime::fold()
as an input
parameter. - Increases flash usage of
ExtendedZoneProcessor
by around 600 bytes
on AVR, and 400-600 bytes on 32-bit processors.
- The semantics of the
- Add
toUnixSeconds64()
andforUnixSeconds64()
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-bitacetime_t
). - These methods make it easier to interoperate with the
time_t
typedef
forint64_t
on the ESP8266 and ESP32 platforms.
- These use 64-bit
- Add EspTime app that shows how to integrate
the SNTP client on the ESP8266 and ESP32 platforms with AceTime.
- MemoryBenchmark: Add memory consumption for
v1.9.0 - allow sorting of zones by name or offset-name; reduce flash by 1100-1300 bytes on AVR
- 1.9.0 (2021-12-02, TZDB 2021e)
- Add
ZoneSorterByName
andZoneSorterByOffsetAndName
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.- See the Zone Sorting section in the
USER_GUIDE.md
. - Adds a new dependency to
AceSorting library.
- See the Zone Sorting section in the
- 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.
- AceTime seems to be about 90X faster for converting date-time
- Add
MaxBufSize
comment field intozonedb[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()
togetAllocSize()
. This now returns the
maximum number of transitions that has been allocated so far, which
happens to begetHighWater() + 1
. - Rename
resetHighWater()
toresetAllocSize()
. - 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
.
- Rename
- Breaking Change: Extract
BasicZoneProcessorCache
and
ExtendedZoneProcessorCache
out ofBasicZoneManager
and
ExtendedZoneManager
. Remove all purevirtual
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 fromLinkManager
,
analogous to their removal fromZoneManager
.- Saves 68 bytes of flash on AVR processors.
- See Migrating to v1.9 for
migration info.
- Add