Skip to content

Commit 373ce16

Browse files
authored
Merge pull request #117 from bxparks/develop
merge 2.3.1 into master
2 parents 3e58e09 + 8b571bd commit 373ce16

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+941
-678
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# Changelog
22

33
* Unreleased
4+
* 2.3.1 (2024-01-12, TZDB version 2023d)
5+
* Upgrade TZDB to 2023d
6+
* https://mm.icann.org/pipermail/tz-announce/2023-December/000080.html
7+
* "Ittoqqortoormiit, Greenland changes time zones on 2024-03-31. Vostok,
8+
Antarctica changed time zones on 2023-12-18. Casey, Antarctica changed
9+
time zones five times since 2020. Code and data fixes for Palestine
10+
timestamps starting in 2072. A new data file zonenow.tab for
11+
timestamps starting now."
412
* 2.3.0 (2023-06-27, TZDB version 2023c)
513
* Create [CustomZoneRegistry](examples/CustomZoneRegistry/) example
614
to illustrate how to use a custom registry.

DEVELOPER.md

Lines changed: 138 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ library.
3636
On 2021-08-25, the scripts under `./tools` were moved into the
3737
[AceTimeTools](https://github.com/bxparks/AceTimeTools/) project, and the
3838
integration tests under `./tests/validation` were moved into the
39-
[AceTimeValidations](https://github.com/bxparks/AceTimeValidation) project. Then
39+
[AceTimeValidation](https://github.com/bxparks/AceTimeValidation) project. Then
4040
on 2021-09-08, the Python timezone classes (`zone_processor.py`, `acetz.py`,
4141
etc) were moved into the
4242
[acetimepy](https://github.com/bxparks/acetimepy) project.
@@ -798,60 +798,84 @@ About 2-4 times a year, a new TZDB version is released. Here are some notes
798798
(mostly for myself) on how to create a new release after a new TZDB version is
799799
available.
800800

801-
* Update the TZDB repo (https://github.com/eggert/tz). This should be a
801+
- Update the TZDB repo (https://github.com/eggert/tz). This should be a
802802
sibling to the `AceTime` repo (since it will cause the least problems
803803
for various internal scripts):
804-
* `$ cd ../tz`
805-
* `$ git pull`
806-
* Check that the correct tag is pulled (e.g. `2020c` tag if that's the
804+
- `$ cd ../tz`
805+
- `$ git pull`
806+
- Check that the correct tag is pulled (e.g. `2020c` tag if that's the
807807
version that we want to upgrade to).
808-
* Update the Hinnant date repo (https://github.com:HowardHinnant/date). This
808+
- Update the Hinnant date repo (https://github.com:HowardHinnant/date). This
809809
should be a sibling to the `AceTime` repo:
810-
* `$ cd ../date`
811-
* `$ git pull`
812-
* Update the zonedb files for acetimepy (needed by AcetzBasicTest and
810+
- `$ cd ../date`
811+
- `$ git pull`
812+
- Update the zonedb files for `acetimepy` (needed by AcetzBasicTest and
813813
AcetzExtendedTest):
814-
* `$ cd acetimepy/src/acetime/zonedb`
815-
* Update the `TZ_VERSION` variable in `Makefile`.
816-
* `$ make`
817-
* Verify that `AceTimeValidation` passes (which compares AceTime with
818-
acetimepy and the Hinnant `date` library):
819-
* `$ cd ../AceTimeValidation`
820-
* Update the `TZ_VERSION` variable in the following files:
821-
* `tests/AcetzBasicTest/Makefile`
822-
* `tests/AcetExtendedzTest/Makefile`
823-
* `tests/HinnantBasicTest/Makefile`
824-
* `tests/HinnantExtendedTest/Makefile`
825-
* `$ make clean`
826-
* `$ make validations`
827-
* `$ make runvalidations`
828-
* Update the various zoneinfo files for AceTime:
829-
* `$ cd AceTime/src`
830-
* Update the `TZ_VERSION` variable in `Makefile`.
831-
* `$ make`
832-
* Update CHANGELOGs
833-
* AceTime/CHANGELOG.md
834-
* acetimepy/CHANGELOG.md
835-
* AceTimeValidation/CHANGELOG.md
836-
* Commit the changes to git
837-
* `$ git add ...`
838-
* `$ git commit -m "..."`
814+
- `$ cd acetimepy/src/acetime`
815+
- `$ vi zonedb*/Makefile`
816+
- Update the `TZ_VERSION` variable in the various makefiles.
817+
- `$ make zonedbs`
818+
- Update the zonedb files for `acetimec` (needed by AcetimecBasicTest and
819+
AcetimecExtendedTest)
820+
- `$ cd acetimec/src`
821+
- `$ vi zonedb*/Makefile`
822+
- Update the `TZ_VERSION` variable in the various makefiles.
823+
- `$ make zonedbs`
824+
- `$ make` to update the `acetimec.a` lib file
825+
- Recompile the binaries in `AceTimeValidation` tools
826+
- `$ cd AceTimeValidation/tools`
827+
- `$ make clean`
828+
- `$ make`
829+
- Verify that `AceTimeValidation` passes. This compares AceTime with 3 other
830+
libraries: acetimec, acetimepy, and the Hinnant `date` library:
831+
- `$ cd AceTimeValidation/tests`
832+
- `$ make clean`
833+
- `$ vi {Acetimec,Acetz,Hinnant}{Basic,Extended}*/Makefile`
834+
- Update the `TZ_VERSION` variable in the following:
835+
- `AcetimecBasicTest/Makefile`
836+
- `AcetimecExtendedTest/Makefile`
837+
- `AcetzBasicTest/Makefile`
838+
- `AcetzExtendedTest/Makefile`
839+
- `HinnantBasicTest/Makefile`
840+
- `HinnantExtendedTest/Makefile`
841+
- Validate against one library, acetimec:
842+
- `$ vi AcetimecExtendedTest/Makefile`
843+
- `$ make -C AcetimecExtendedTest clean`
844+
- `$ make -C AcetimecExtendedTest all`
845+
- `$ make -C AcetimecExtendedTest run`
846+
- Validate against the other libraries:
847+
- `$ make clean`
848+
- `$ make -j4 tests`
849+
- `$ make runtests`
850+
- Update the various zoneinfo files for AceTime:
851+
- `$ cd AceTime/src`
852+
- `$ vi zonedb*/Makefile`
853+
- Update the `TZ_VERSION` variable in the makefiles.
854+
- `$ make zonedbs`
855+
- Update CHANGELOGs
856+
- AceTime/CHANGELOG.md
857+
- acetimec/CHANGELOG.md
858+
- acetimepy/CHANGELOG.md
859+
- AceTimeValidation/CHANGELOG.md
860+
- Commit the changes to git
861+
- `$ git add ...`
862+
- `$ git commit -m "..."`
839863

840864
There are 12 other validation tests in the AceTimeValidation project that
841865
compare AceTime with various other third party libraries:
842866

843-
* `DateUtilBasicTest`
844-
* `DateUtilExtendedTest`
845-
* `GoBasicTest`
846-
* `GoExtendedTest`
847-
* `JavaBasicTest`
848-
* `JavaExtendedTest`
849-
* `NodaBasicTest`
850-
* `NodaExtendedTest`
851-
* `PytzBasicTest`
852-
* `PytzExtendedTest`
853-
* `ZoneInfoBasicTest`
854-
* `ZoneInfoExtendedTest`
867+
- `DateUtilBasicTest`
868+
- `DateUtilExtendedTest`
869+
- `GoBasicTest`
870+
- `GoExtendedTest`
871+
- `JavaBasicTest`
872+
- `JavaExtendedTest`
873+
- `NodaBasicTest`
874+
- `NodaExtendedTest`
875+
- `PytzBasicTest`
876+
- `PytzExtendedTest`
877+
- `ZoneInfoBasicTest`
878+
- `ZoneInfoExtendedTest`
855879

856880
Unfortunately, they all seem to use the underlying TZDB version provided by the
857881
Operating System, and I have not been able to figure out how to manually update
@@ -861,78 +885,78 @@ fail until the underlying timezone database of the OS is updated.
861885
<a name="ReleaseProcess"></a>
862886
## Release Process
863887

864-
* Update `examples/MemoryBenchmark` and `examples/AutoBenchmark`.
865-
* Update and commit the version numbers in various files:
866-
* `src/AceTime.h`
867-
* `README.md`
868-
* `USER_GUIDE.md`
869-
* `MIGRATING.md`
870-
* `CHANGELOG.md`
871-
* `docs/doxygen.cfg`
872-
* `library.properties`
873-
* `$ git commit -m "..."`
874-
* `$ git push`
875-
* Update and commit the Doxygen docs. This is done as a separate git commit
888+
- Update `examples/MemoryBenchmark` and `examples/AutoBenchmark`.
889+
- Update and commit the version numbers in various files:
890+
- `src/AceTime.h`
891+
- `README.md`
892+
- `USER_GUIDE.md`
893+
- `MIGRATING.md`
894+
- `CHANGELOG.md`
895+
- `docs/doxygen.cfg`
896+
- `library.properties`
897+
- `$ git commit -m "..."`
898+
- `$ git push`
899+
- Update and commit the Doxygen docs. This is done as a separate git commit
876900
because the Doxygen changes are often so large that they obscure all other
877901
important changes to the code base:
878-
* `$ cd docs`
879-
* `$ make clean`
880-
* `$ make`
881-
* `$ git add .`
882-
* `$ git commit -m "..."`
883-
* `$ git push`
884-
* (Optional) Create a new Release of acetimepy
885-
* (This should be done first, before AceTime)
886-
* Go to https://github.com/bxparks/acetimepy
887-
* Bump version number on `develop`.
888-
* Merge `develop` into `master`.
889-
* Click on "Releases"
890-
* Click on "Draft a new release"
891-
* Enter a tag version (e.g. `v1.2`), targeting the `master` branch.
892-
* Enter the release title.
893-
* Enter the release notes. I normally just copy and paste the latest changes
902+
- `$ cd docs`
903+
- `$ make clean`
904+
- `$ make`
905+
- `$ git add .`
906+
- `$ git commit -m "..."`
907+
- `$ git push`
908+
- (Optional) Create a new Release of acetimepy
909+
- (This should be done first, before AceTime)
910+
- Go to https://github.com/bxparks/acetimepy
911+
- Bump version number on `develop`.
912+
- Merge `develop` into `master`.
913+
- Click on "Releases"
914+
- Click on "Draft a new release"
915+
- Enter a tag version (e.g. `v1.2`), targeting the `master` branch.
916+
- Enter the release title.
917+
- Enter the release notes. I normally just copy and paste the latest changes
894918
from `CHANGELOG.md`.
895-
* Click Publish release.
896-
* (Optional) Create a new Release of AceTimeTools
897-
* (Depends on acetimepy)
898-
* Go to https://github.com/bxparks/AceTimeTools
899-
* Click on "Releases"
900-
* Click on "Draft a new release"
901-
* Enter a tag version (e.g. `v1.2`), targeting the `master` branch.
902-
* Enter the release title.
903-
* Enter the release notes. I normally just copy and paste the latest changes
919+
- Click Publish release.
920+
- (Optional) Create a new Release of AceTimeTools
921+
- (Depends on acetimepy)
922+
- Go to https://github.com/bxparks/AceTimeTools
923+
- Click on "Releases"
924+
- Click on "Draft a new release"
925+
- Enter a tag version (e.g. `v1.2`), targeting the `master` branch.
926+
- Enter the release title.
927+
- Enter the release notes. I normally just copy and paste the latest changes
904928
from `CHANGELOG.md`.
905-
* Click Publish release.
906-
* (Optional) Create a new Release of AceTimeValidation.
907-
* (Depends on acetimepy)
908-
* Go to https://github.com/bxparks/AceTimeTools
909-
* Click on "Releases"
910-
* Click on "Draft a new release"
911-
* Enter a tag version (e.g. `v1.2`), targeting the `master` branch.
912-
* Enter the release title.
913-
* Enter the release notes. I normally just copy and paste the latest changes
929+
- Click Publish release.
930+
- (Optional) Create a new Release of AceTimeValidation.
931+
- (Depends on acetimepy)
932+
- Go to https://github.com/bxparks/AceTimeTools
933+
- Click on "Releases"
934+
- Click on "Draft a new release"
935+
- Enter a tag version (e.g. `v1.2`), targeting the `master` branch.
936+
- Enter the release title.
937+
- Enter the release notes. I normally just copy and paste the latest changes
914938
from `CHANGELOG.md`.
915-
* Click Publish release.
916-
* Create a new Release of AceTime (third, depends on AceTimeValidation).
917-
* (Depends on acetimepy, AceTimeValidation)
918-
* Go to https://github.com/bxparks/AceTime
919-
* Merge the `develop` branch into `master` by creating a Pull Request.
920-
* Approve and merge the PR.
921-
* Click on "Releases"
922-
* Click on "Draft a new release"
923-
* Enter a tag version (e.g. `v1.2`), targeting the `master` branch.
924-
* Enter the release title.
925-
* Enter the release notes. I normally just copy and paste the latest changes
939+
- Click Publish release.
940+
- Create a new Release of AceTime (third, depends on AceTimeValidation).
941+
- (Depends on acetimepy, AceTimeValidation)
942+
- Go to https://github.com/bxparks/AceTime
943+
- Merge the `develop` branch into `master` by creating a Pull Request.
944+
- Approve and merge the PR.
945+
- Click on "Releases"
946+
- Click on "Draft a new release"
947+
- Enter a tag version (e.g. `v1.2`), targeting the `master` branch.
948+
- Enter the release title.
949+
- Enter the release notes. I normally just copy and paste the latest changes
926950
from `CHANGELOG.md`.
927-
* Click Publish release.
928-
* Add corresponding tags on acetimepy, AceTimeTools and AceTimeValidation
951+
- Click Publish release.
952+
- Add corresponding tags on acetimepy, AceTimeTools and AceTimeValidation
929953
for reference.
930-
* acetimepy
931-
* `$ git tag -a 'atX.Y.Z' -m 'AceTime vX.Y.Z'`
932-
* `$ git push --tags`
933-
* AceTimeTools
934-
* `$ git tag -a 'atX.Y.Z' -m 'AceTime vX.Y.Z'`
935-
* `$ git push --tags`
936-
* AceTimeValidation
937-
* `$ git tag -a 'atX.Y.Z' -m 'AceTime vX.Y.Z'`
938-
* `$ git push --tags`
954+
- acetimepy
955+
- `$ git tag -a 'atX.Y.Z' -m 'AceTime vX.Y.Z'`
956+
- `$ git push --tags`
957+
- AceTimeTools
958+
- `$ git tag -a 'atX.Y.Z' -m 'AceTime vX.Y.Z'`
959+
- `$ git push --tags`
960+
- AceTimeValidation
961+
- `$ git tag -a 'atX.Y.Z' -m 'AceTime vX.Y.Z'`
962+
- `$ git push --tags`

README.md

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ and the `zonedbc` database to support all timezones, for all transitions defined
7676
in the IANA TZ database (`[1844,2087]`), and extending the validity of timezone
7777
calculations from `[2000,10000)` to `[0001,10000)`.
7878

79-
**Version**: 2.3.0 (2023-06-27, TZDB version 2023c)
79+
**Version**: 2.3.1 (2024-01-12, TZDB version 2023d)
8080

8181
**Changelog**: [CHANGELOG.md](CHANGELOG.md)
8282

@@ -990,11 +990,12 @@ The following boards are *not* supported and are explicitly blacklisted to allow
990990
the compiler to print useful error messages instead of hundreds of lines of
991991
compiler errors:
992992
993-
* Any platform using the ArduinoCore-API
994-
(https://github.com/arduino/ArduinoCore-api), such as:
995-
* megaAVR (e.g. Nano Every)
996-
* SAMD21 boards w/ `arduino:samd` version >= 1.8.10 (e.g. Nano 33 IoT,
997-
MKRZero, etc)
993+
* Any platform using the
994+
[ArduinoCore-API](https://github.com/arduino/ArduinoCore-api). For example:
995+
* Arduino Nano Every
996+
* Arduino Nano 33 IoT
997+
* Arduino MKRZero
998+
* Arduino UNO R4
998999
* Raspberry Pi Pico RP2040
9991000
10001001
<a name="ToolChain"></a>
@@ -1020,8 +1021,15 @@ This library is *not* compatible with:
10201021
* Any platform using the
10211022
[ArduinoCore-API](https://github.com/arduino/ArduinoCore-api), for example:
10221023
* [Arduino megaAVR](https://github.com/arduino/ArduinoCore-megaavr/)
1023-
* [MegaCoreX](https://github.com/MCUdude/MegaCoreX)
1024+
* Nano Every
10241025
* [Arduino SAMD Boards >=1.8.10](https://github.com/arduino/ArduinoCore-samd)
1026+
* MKRZero
1027+
* Nano 33 IoT
1028+
* [ArduinoCore-renesas](https://github.com/arduino/ArduinoCore-renesas)
1029+
* Arduino UNO R4
1030+
* [Arduino-Pico](https://github.com/earlephilhower/arduino-pico)
1031+
* Raspberry Pi Pico (RP2040)
1032+
* [MegaCoreX](https://github.com/MCUdude/MegaCoreX)
10251033
10261034
It should work with [PlatformIO](https://platformio.org/) but I have
10271035
not tested it.

USER_GUIDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ The IANA TZ database is programmatically generated into 3 predefined databases:
1818
databases have different accuracy ranges, and are designed to work with
1919
different `ZoneProcessor` and `ZoneManager` classes.
2020

21-
**Version**: 2.3.0 (2023-06-27, TZDB 2023c)
21+
**Version**: 2.3.1 (2024-01-12, TZDB 2023d)
2222

2323
**Related Documents**:
2424

examples/AutoBenchmark/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ nano.txt:
2929
micro.txt:
3030
$(AUNITER_DIR)/auniter.sh --cli upmon -o $@ --eof END micro:ACM0
3131

32+
# Seeeduino XIAO M0 seems to need a short delay after flashing to detect its
33+
# serial port.
3234
samd21.txt:
3335
$(AUNITER_DIR)/auniter.sh --cli upmon --delay 1 -o $@ --eof END xiao:ACM0
3436

examples/MemoryBenchmark/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ ASCII table.
518518
+---------------------------------------------------------------------+
519519
520520
```
521+
521522
## ESP8266
522523

523524
* NodeMCU 1.0, 80MHz ESP8266

examples/MemoryBenchmark/generate_readme.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@
362362
```
363363
{samd51_results}
364364
```
365+
365366
## ESP8266
366367
367368
* NodeMCU 1.0, 80MHz ESP8266

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=AceTime
2-
version=2.3.0
2+
version=2.3.1
33
author=Brian T. Park <[email protected]>
44
maintainer=Brian T. Park <[email protected]>
55
sentence=Date, time, timezone classes for Arduino supporting the full IANA TZ Database to convert epoch seconds to date and time components in different time zones.

src/AceTime.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
#include "zonedbc/zone_registry.h"
7070

7171
// Version format: xxyyzz == "xx.yy.zz"
72-
#define ACE_TIME_VERSION 20300
73-
#define ACE_TIME_VERSION_STRING "2.3.0"
72+
#define ACE_TIME_VERSION 20301
73+
#define ACE_TIME_VERSION_STRING "2.3.1"
7474

7575
#endif

0 commit comments

Comments
 (0)