_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](https://nyxspace.com/blog/2024/10/17/hifitime-version-400-a-leap-forward-in-time-management/?utm_source=gh-release) for details. As of version 4.0.0, Hifitime is licensed under the Mozilla Public License version 2, refer to [discussion #274](https://github.com/nyx-space/hifitime/discussions/274) for details._
Breaking changes
* Refactor epoch to keep time in its own time scale by gwbres and ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/280
* Duration serde now human readable + Display of Epoch is now Gregorian in its initialization time scale by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/299
* Improve error handling (switching to `snafu`) by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/300
* Breaking change: renamed Julian date constants and removed other Julian date constants by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/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 https://github.com/nyx-space/hifitime/pull/301
* Add Python regression test for 249 by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/305
* MJD/JDE UTC fix + `to_time_scale` now available in Python by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/332
* Add Python datetime interop by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/333
* Add autogenerated Kani harnesses by cvick32 in https://github.com/nyx-space/hifitime/pull/316
* Kani autogen follow on by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/318
Bug fixes
* Fix bug in `to_gregorian_str` by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/308
* Fix conversion to Gregorian by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/303
* Rename `EpochError` to `HifitimeError` and add exception testing by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/315
* Prevent rounding of the GNSS from nanoseconds initializers by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/319
* Fix ceil with zero duration by cardigan1008 in https://github.com/nyx-space/hifitime/pull/323
* Fix token exceed in from_str() by cardigan1008 in https://github.com/nyx-space/hifitime/pull/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 https://github.com/nyx-space/hifitime/pull/297
* Refactor epochrs as a module by ChristopherRabotin in https://github.com/nyx-space/hifitime/pull/298
* 4.0.0 dev gh 237 by gwbres in https://github.com/nyx-space/hifitime/pull/289
* Introduce doc_cfg and mark ut1 within ut1 crate feature by gwbres in https://github.com/nyx-space/hifitime/pull/321
* Update pyo3 requirement from 0.21.1 to 0.22.0 by dependabot in https://github.com/nyx-space/hifitime/pull/312
* Update tabled requirement from 0.15.0 to 0.16.0 by dependabot in https://github.com/nyx-space/hifitime/pull/325
* Update lexical-core requirement from 0.8.5 to 1.0.1 by dependabot in https://github.com/nyx-space/hifitime/pull/330