Version 4.0.0: More precise time scale conversions, human readable serialization of durations, and lots more
Latest
ChristopherRabotin
released this
19 Oct 04:56
·
5 commits
to master
since this release
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