Releases: nyx-space/anise
0.6.8: SPK Type 01; fix small error in velocities with light-time correction enabled
New Features
- Implement SPK Type 01 Modified Differences by @ChristopherRabotin in #496
Bug fixes
- Version bump 0.6.8 to fix Python release by @ChristopherRabotin in #503
- Light time corrected velocity from spkltc.c by @ephraim71 in #507
Testing
- Updates to various fuzz files to support oss-fuzz integration by @SwitchbackEngineer in #506
Full Changelog: 0.6.7...0.6.8
0.6.7: Fix MacOS15, fix Nepture/Uranus IDs and IAU rotations
New features
- Feat/mars frame by @ChristopherRabotin in #502 : Mars object 499 now prints as
Mars
instead ofobject 499
Bug Fixes
- Fix IAU rotations of Neptune and Uranus do not match SPICE by @ephraim71 in #490
- fix(ci): Set wheel compression level to 0 by @ChristopherRabotin in #494 : fixes macOS 15 support
Dependencies
- Update criterion requirement from 0.6 to 0.7 by @dependabot[bot] in #489
- Update rstest requirement from 0.25.0 to 0.26.1 by @dependabot[bot] in #491
Update nalgebra requirement from 0.33 to 0.34 by @dependabot[bot] in #492Pushed back to release 0.7.0- Update polars requirement from 0.46.0 to 0.50.0 by @dependabot[bot] in #501
New Contributors
- @ephraim71 made their first contribution in #490
Full Changelog: 0.6.6...0.6.7
0.6.6: Support MacOS15 support + various documentation fixes
New features and improvements
- ci: add macos-15 to github workflow by @ChristopherRabotin in #483
- Proposed simplification to the readme by @ChristopherRabotin in #477
- Add how-to guide to Rust readme by @ChristopherRabotin in #478
- Fix de440s.bsp doc typo by @Ryan-D-Gast in #481
- Export SPK data type to Python by @google-labs-jules[bot] in #488
Dependencies
- Update iai-callgrind requirement from 0.15 to 0.16 by @dependabot[bot] in #485
- Update egui_logger requirement from 0.7.0 to 0.8.0 by @dependabot[bot] in #486
Miscellaneous
- Add Logo, thanks Gemini by @ChristopherRabotin in #473
New Contributors
- @Ryan-D-Gast made their first contribution in #481
Full Changelog: 0.6.5...0.6.6
0.6.5: Update to hifitime 4.1.2, fix Python typing documentation
What's Changed
- Pull request for issue #233 by @google-labs-jules in #468
- Fix: Correct Rustdoc :type annotations for Python bindings by @ChristopherRabotin in #471
- Deps/hifitime 4.1.2 by @ChristopherRabotin in #472
New Contributors
- @google-labs-jules made their first contribution in #468
Full Changelog: 0.6.4...0.6.5
0.6.4: Add `anise-gui` executable script to Python project
What's Changed
- Chore/python mixed prj gh 455 bis by @ChristopherRabotin in #464
- Add anise-gui executable to Python package by @ChristopherRabotin in #465
Full Changelog: 0.6.3...0.6.4
0.6.3: Improve Python packaging; no Rust change
What's Changed
- Update iai-callgrind requirement from 0.14 to 0.15 by @dependabot in #462
- Refactored Python package for better IDE support by @ChristopherRabotin in #463
Full Changelog: 0.6.2...0.6.3
0.6.2: Add LTAN and mean motion + Fix multithreading in python
New features and improvements
- feat: Add duration_to_radius function and utils, mean motion method to
Orbit
(mean_motion_deg_s
), and Longitude of the Ascending Node (LTAN) (ltan_deg
) by @ChristopherRabotin in #456 - a few typos and minor details by @fchapoton in #459
Bug Fixes
- Fix Python GIL deadlock in
many
functions by @ChristopherRabotin in #458
New Contributors
- @fchapoton made their first contribution in #459
Full Changelog: 0.6.1...0.6.2
0.6.1: Python multithreading, unit vector querying, beta angle
New features
- Introduce Unit Vector functions by @gwbres in #446
- Add beta angle computation by @ChristopherRabotin in #452
- Enable Rust multithreading speeds for Python: search for the
many
keyword in the functions by @ChristopherRabotin in #454
Dependencies
- Update tabled requirement from =0.19 to =0.20 by @dependabot in #448
Full Changelog: 0.6.0...0.6.1
ANISE 0.6.0: Faster Hermite Interpolation (Type 13), Hifitime 4.1.0 & Enhanced Fuzz Testing
Summary
ANISE version 0.6.0 is a minor release primarily focused on dependency management for Rust users. Importantly, this update does not introduce breaking changes to the ANISE binary file format (PCA/EPA). Files generated with version 0.5.4 remain fully compatible with version 0.6.0. Furthermore, any new PCA/EPA files created using ANISE 0.6.0 will retain the 0.4 versioning, consistent with the 0.5.x series.
This release brings several improvements to error handling and parsing robustness, fixes critical bugs related to item parsing and state translation, and introduces a new regression test. Key dependency versions have also been updated.
Detailed Change Log
New Features
- Add AER regression test; freeze Earth high prec BPC used in AER test by @ChristopherRabotin in #438
Improvements
- Update kpl/fk key extraction to return -1 if unwrap fails by @SwitchbackEngineer in #414
- Update kpl/tpc key extraction to return -1 if unwrap fails by @SwitchbackEngineer in #416
- Update error message on malformed dataset + fix tests for PRs from forks by @ChristopherRabotin in #419
- Skip over non-UTF8 lines during kpl parsing by @SwitchbackEngineer in #425
- Error Handling for FK Item Conversion by @SwitchbackEngineer in #427
- Error Handling for TPC Item Conversion by @SwitchbackEngineer in #429
- Cosmetic: Add pair count to validation; update version in anise-fuzz by @ChristopherRabotin in #430
- Use registry for hermite type 13 by @ChristopherRabotin in #439
- Duplicate python sig for newer pyo3 by @ChristopherRabotin in #443
Bug Fixes
- FK Item Parsing Crashes if Body ID is Empty by @SwitchbackEngineer in #412
- Almanac load_from_bytes Fails Fuzz Tests by @SwitchbackEngineer in #418
- Fix bug in
translate_state
for custom input vectors by @ChristopherRabotin in #433
Dependencies
- Update egui_logger requirement from 0.6.3 to 0.7.0 by @dependabot in #422
- Update criterion requirement from 0.5 to 0.6 by @dependabot in #432
- Prepare for hifitime v4.1.0 by @gwbres in #440
New Contributors
- @SwitchbackEngineer made their first contribution in #412
Full Changelog: 0.5.4...0.6.0
0.5.4: Fuzz testing + TPC parsing fix
Announcement: ANISE 0.5.4 Released! 🎉
We're excited to announce the release of ANISE v0.5.4, our modern Rust implementation of NASA's SPICE toolkit with Python bindings!
This release brings significant under-the-hood improvements focused on robustness and reliability. The biggest highlight is the introduction of extensive fuzz testing. We've added dozens of fuzz targets that continuously bombard ANISE's core components – including file parsers (SPK, BPC, text kernels), data structures, and calculations – with random data to shake out bugs and edge cases before they reach you. Huge thank you to @jonathan-g-davis for these tests!
Key changes in v0.5.4 include:
- 🚀 Enhanced Robustness: Comprehensive fuzz testing suite added across the library.
- 🔧 Dependency Refresh: Replaced the
reqwest
HTTP client with the lighter-weightureq
for fetching remote data, potentially improving build times. Updated core dependencies liketabled
,rstest
, and GUI libraries (egui
/eframe
). - 🐛 Bug Fixes: Corrected an issue with Text PCK (TPC) file conversion. Improved KPL parsing to handle SPICE 'D' exponents.
- ⚙️ Build Adjustments: We've temporarily removed the build for Linux
aarch64
Python wheels. We'll re-evaluate adding this back in the future. Other CI processes for artifact handling and testing have been refined. - 🧹 Data Management: Removed large embedded ephemeris files from the repository to reduce bloat, favoring on-demand downloads. Added new example TPC and BSP files.
- ✨ Minor Improvements: Increased capacity for planetary constants, refined interpolation math, and improved error messages.
This release makes ANISE more reliable and maintainable, paving the way for future feature development.
As always, please report any issues you encounter. Thank you for using ANISE!
Detailed Changelog
This release focuses on improving robustness through fuzz testing, updating dependencies, refining build processes, and fixing specific issues.
✨ Features & Enhancements
- Fuzz Testing: Added a comprehensive fuzz testing suite (
anise/fuzz
) targeting various components including file parsing (SPK, BPC, KPL), data structures, almanac operations, and mathematical functions (rotation, interpolation) to significantly improve code robustness and uncover edge cases. - Dependency Update (HTTP Client): Replaced
reqwest
withureq
for HTTP requests inmetaload
andembed_ephem
features.ureq
is a smaller dependency, potentially reducing compile times and binary size. - Improved KPL Parsing: Text Kernel (TPC, FK) parser now handles SPICE-style 'D' floating-point exponents (e.g.,
1.23D+05
) correctly and trims whitespace before parsing floats. - Increased Planetary Data Capacity: Doubled the maximum number of planetary data entries the Almanac can hold (
MAX_PLANETARY_DATA
from 64 to 128). - Code Refinements:
- Used
div_ceil
for potentially more robust integer division in Hermite interpolation and DAF file record calculations. - Refactored KPL parsing and conversion logic into smaller, reusable functions (
parse_bytes
,convert_tpc_items
,convert_fk_items
). - Improved error message clarity for I/O errors.
- Used
🐛 Bug Fixes
- TPC Conversion: Fixed an issue related to converting multiple TPC files, particularly when overwriting the output file. Added
test_convert_tpc
to verify, thanks @translunar for the test case and for your patience!
⚙️ Build & CI
- Removed Linux aarch64 Wheels: Temporarily removed the build target for Linux ARM64 (
aarch64
) wheels due to potential build complexities with theureq
switch -- please open a bug report if this causes an issue for your use cases. - Improved Artifact Handling: Updated PyPI publishing workflow to correctly download and merge all wheel artifacts before uploading.
- Dependency Management: Switched from GitHub
secrets
tovars
for accessing test data paths (e.g.,LAGRANGE_BSP
) in CI, likely reflecting a change in sensitivity or access pattern. This allows external contributions' CI tests to run the Lagrange interpolation tests. - Dependency Updates:
tabled
: 0.17 -> 0.19rstest
: 0.24.0 -> 0.25.0eframe
,egui
,egui_extras
: 0.30 -> 0.31 (GUI)egui_logger
: 0.6.2 -> 0.6.3 (GUI)parquet
,arrow
: 54.0.0 -> 55.0.0 (Dev dependency)- Other minor updates via workspace bump.
🧪 Testing
- New Test: Added
test_convert_tpc
to verify TPC file conversion functionality. - Updated Test: Updated expected values in the
type9_lagrange_query
test after updating the underlying BSP in the test - (See Fuzz Testing above)
📊 Data
- Removed Large BSPs: Removed several large DE ephemeris
.bsp
files (DE421, DE430, DE440, DE440s, DE440 type3) from the repository, likely favoring download-on-demand viametaload
or reducing repository size. - Added Test/Example Data: Included
gm_de440.tpc
andgmat-lagrange.bsp
files in the repository.
📚 Documentation
- GUI Build Instructions: Minor clarification in
anise-gui/README.md
regarding the directory from which to run build commands.
Pull request summary
- Try to release 0.5.3 on pypi by @ChristopherRabotin in #387
- Fuzz Test Anise by @jonathan-g-davis in #400
- Fix build instructions for anise-gui by @translunar in #405
- Update arrow requirement from 54.0.0 to 55.0.0 by @dependabot in #402
- Unit test showing convert_tpc not working with gm_de440.tpc by @ChristopherRabotin in #407
- Switch from reqwest to ureq by @ChristopherRabotin in #409
- Update tabled requirement from =0.17 to =0.18 by @dependabot in #384
New Contributors
- @jonathan-g-davis made their first contribution in #400
- @translunar made their first contribution in #405
Full Changelog: 0.5.3...0.5.4