Releases: nyx-space/hifitime
Version 4.0.0: More precise time scale conversions, human readable serialization of durations, and lots more
This update is not merely an iteration, but a redesign in how time scale are handled in hifitime, fixing nanosecond rounding errors, and improving the Python user experience. Refer to the blog post for details. As of version 4.0.0, Hifitime is licensed under the Mozilla Public License version 2, refer to discussion #274 for details.
Breaking changes
- Refactor epoch to keep time in its own time scale by @gwbres and @ChristopherRabotin in #280
- Duration serde now human readable + Display of Epoch is now Gregorian in its initialization time scale by @ChristopherRabotin in #299
- Improve error handling (switching to
snafu
) by @ChristopherRabotin in #300 - Breaking change: renamed Julian date constants and removed other Julian date constants by @ChristopherRabotin in #307
- Minimum Support Rust Version (MSRV) bumped to 1.77.0
Note: as of version 4.0.0, dependency updates will increment the minor version.
New features / improvements
- Support exceptions in Python by @ChristopherRabotin in #301
- Add Python regression test for #249 by @ChristopherRabotin in #305
- MJD/JDE UTC fix +
to_time_scale
now available in Python by @ChristopherRabotin in #332 - Add Python datetime interop by @ChristopherRabotin in #333
- Add autogenerated Kani harnesses by @cvick32 in #316
- Kani autogen follow on by @ChristopherRabotin in #318
Bug fixes
- Fix bug in
to_gregorian_str
by @ChristopherRabotin in #308 - Fix conversion to Gregorian by @ChristopherRabotin in #303
- Rename
EpochError
toHifitimeError
and add exception testing by @ChristopherRabotin in #315 - Prevent rounding of the GNSS from nanoseconds initializers by @ChristopherRabotin in #319
- Fix ceil with zero duration by @cardigan1008 in #323
- Fix token exceed in from_str() by @cardigan1008 in #324
The main change in this refactoring is that Epoch
s now keep the time in their own time scales. This greatly simplifies conversion between time scales, and ensures that all computations happen in the same time scale as the initialization time scale, then no sub-nanosecond rounding error could be introduced.
Maintenance
- Removed der dependency by @ChristopherRabotin in #297
- Refactor epochrs as a module by @ChristopherRabotin in #298
- 4.0.0 dev gh 237 by @gwbres in #289
- Introduce doc_cfg and mark ut1 within ut1 crate feature by @gwbres in #321
- Update pyo3 requirement from 0.21.1 to 0.22.0 by @dependabot in #312
- Update tabled requirement from 0.15.0 to 0.16.0 by @dependabot in #325
- Update lexical-core requirement from 0.8.5 to 1.0.1 by @dependabot in #330
4.0.0-beta: Nearing 4.0.0
New features / improvements
- MJD/JDE UTC fix +
to_time_scale
now available in Python by @ChristopherRabotin in #332 - Add Python datetime interop by @ChristopherRabotin in #333
- Add autogenerated Kani harnesses by @cvick32 in #316
- Introduce doc_cfg and mark ut1 within ut1 crate feature by @gwbres in #321
- Kani autogen follow on by @ChristopherRabotin in #318
Bug fixes
- Rename
EpochError
toHifitimeError
and add exception testing by @ChristopherRabotin in #315 - Prevent rounding of the GNSS from nanoseconds initializers by @ChristopherRabotin in #319
- Fix ceil with zero duration by @cardigan1008 in #323
- Fix token exceed in from_str() by @cardigan1008 in #324
Maintenance
- Update pyo3 requirement from 0.21.1 to 0.22.0 by @dependabot in #312
- Update tabled requirement from 0.15.0 to 0.16.0 by @dependabot in #325
- Update lexical-core requirement from 0.8.5 to 1.0.1 by @dependabot in #330
New Contributors
Full Changelog: 4.0.0-alpha...4.0.0-beta
4.0.0-alpha: Hifitime rewrite
Version 4.0.0-alpha
The main change in this refactoring is that Epoch
s now keep the time in their own time scales. This greatly simplifies conversion between time scales, and ensures that all computations happen in the same time scale as the initialization time scale, then no sub-nanosecond rounding error could be introduced.
What's Changed
- 4.0.0 dev gh 237 by @gwbres in #289
- Refactor epoch to keep time in its own time scale by @gwbres and @ChristopherRabotin in #280
- Removed der dependency by @ChristopherRabotin in #297
- Refactor epochrs as a module by @ChristopherRabotin in #298
- Duration serde now human readable + Display of Epoch is now Gregorian in its initialization time scale by @ChristopherRabotin in #299
- Improve error handling by @ChristopherRabotin in #300
- Support exceptions in Python by @ChristopherRabotin in #301
- Fix conversion to Gregorian by @ChristopherRabotin in #303
- Add Python regression test for #249 by @ChristopherRabotin in #305
- Breaking change: renamed Julian date constants and removed other Julian date constants by @ChristopherRabotin in #307
- Fix bug in
to_gregorian_str
by @ChristopherRabotin in #308 - Update pyo3 requirement from 0.21.1 to 0.22.0 by @dependabot in #309
- Revert "Update pyo3 requirement from 0.21.1 to 0.22.0" by @ChristopherRabotin in #310
Full Changelog: 3.10.0...4.0.0-alpha
4.0.0-dev0: Add QZSS time scale -- possibly a breaking change (essentially 3.10.0)
What's next?
This is probably the last release of version 3.x. There's a fair amount of small bugs here and there in 3.x, and these aren't trivial to fix. The architecture changes introduced by @gwbres and I for the development of 4.x should fix all of those in one go.
Also, version 4.0 will likely switch to the Mozilla Public License from Apache 2: if you have concerns about this, please head over to #274 to voice them. From the user point of view, there should be absolutely no change, even if you're selling code that uses an unmodified version of Hifitime.
Naming error
This release is published as 4.0.0-dev
on crates.io and 4.0.0.dev0
on PyPi. This was a mistake. It should have been 3.10.0
. That's probably for the better though since it introduces one breaking change. Version 4.0.0 will introduce several breaking changes and a new architecture.
What's Changed
- support qzss time scale by @gwbres in #228
- Update 4.0.0-dev to latest master by @ChristopherRabotin in #243
- Integrate 3.8.6 into 4.0.0-dev by @ChristopherRabotin in #264
- BREAKING CHANGE: 4.0.0-dev branch become 3.10.0 by @ChristopherRabotin in #277
- Draft: replace std::time:SystemTime with web_time::SystemTime by @karpfediem in #279
- Update reqwest requirement from 0.11 to 0.12 by @dependabot in #286
- Fix panic caused by arithmetic overflow by @cardigan1008 in #283
- Fix panic caused by array out of bounds by @cardigan1008 in #284
- Fix panic caused by unwrap by @cardigan1008 in #285
New Contributors
- @karpfediem made their first contribution in #279
- @cardigan1008 made their first contribution in #283
Full Changelog: 3.9.0...3.10.0
Version 3.9.0: Add short year formatter and fix year of day computation
What's Changed
- Relax UNIX test + release 3.8.6 by @ChristopherRabotin in #266
- Introduce %y formatter by @gwbres in #268
- Update tabled requirement from 0.14.0 to 0.15.0 by @dependabot in #269
- Update der requirement from 0.6.1 to 0.7.8 by @dependabot in #252
- [Maybe breaking change] Fix day of year computation by @ChristopherRabotin in #273
- docs(fix): fixed reversed description of duration magnitude by @ethanmsl in #271
New Contributors
Full Changelog: 3.8.6...3.9.0
Version 3.8.6: Add support for WASM targets
What's Changed
- Adds support for using hifitime in WASM targets by @thomasantony in #262
New Contributors
- @thomasantony made their first contribution in #262
Full Changelog: 3.8.5...3.8.6
Version 3.8.5: Update pyo3 and bump MSRV to 1.70
What's Changed
- Update pyo3 requirement from 0.19.0 to 0.20.0 by @dependabot in #259
Full Changelog: 3.8.4...3.8.5
Version 3.8.3: Fix incorrect hour/minute/second when initializing from days in year
What's Changed
- Day of year formatting now parses elapsed time by @ChristopherRabotin in #253
Full Changelog: 3.8.3...3.8.4
Notice for 3.x
With a bit of luck, this will be the last release of 3.x as version 4 makes its way to production. Version 4 will bring more consistency in time scale handling by not converting everything to TAI, but using the initialization time scale whenever possible. Follow the progress on https://github.com/nyx-space/hifitime/milestone/14 and don't hesitate to propose features or contribute. Thanks
Version 3.8.3: Update pyo3 and tabled
What's Changed
- Update pyo3 requirement from 0.18.1 to 0.19.0 by @dependabot in #242
- Update tabled requirement from 0.12.0 to 0.14.0 by @dependabot in #251
Full Changelog: 3.8.2...3.8.3
Version 3.8.2: Various enhancements and readme
What's Changed
- Add example for #202 by @ChristopherRabotin in #207
- Update tabled requirement from 0.10.0 to 0.11.1 by @dependabot in #219
- Export epoch formatters to Python by @ChristopherRabotin in #220
- Switch from staticmethod to classmethod by @ChristopherRabotin in #222
- Add action summary for benchmark by @ChristopherRabotin in #223
- Update tabled requirement from 0.11.1 to 0.12.0 by @dependabot in #225
- Cleanup README and fix Gregorian print bug < 1900 by @ChristopherRabotin in #233
- Update criterion requirement from 0.4.0 to 0.5.1 by @dependabot in #236
- fix december for MonthName from u8 by @Massou31 in #235
New Contributors
Full Changelog: 3.8.1...3.8.2