Skip to content

Releases: nyx-space/anise

0.6.1: Python multithreading, unit vector querying, beta angle

10 Jun 03:42
1d8338e
Compare
Choose a tag to compare

New features

Dependencies

Full Changelog: 0.6.0...0.6.1

ANISE 0.6.0: Faster Hermite Interpolation (Type 13), Hifitime 4.1.0 & Enhanced Fuzz Testing

27 May 20:33
da7295c
Compare
Choose a tag to compare

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

Improvements

Bug Fixes

Dependencies

New Contributors

Full Changelog: 0.5.4...0.6.0

0.5.4: Fuzz testing + TPC parsing fix

25 Apr 23:27
0ea98ea
Compare
Choose a tag to compare

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-weight ureq for fetching remote data, potentially improving build times. Updated core dependencies like tabled, 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 with ureq for HTTP requests in metaload and embed_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.

🐛 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 the ureq 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 to vars 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.19
    • rstest: 0.24.0 -> 0.25.0
    • eframe, 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 via metaload or reducing repository size.
  • Added Test/Example Data: Included gm_de440.tpc and gmat-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

New Contributors

Full Changelog: 0.5.3...0.5.4

0.5.3: Fix range-rate calculation

09 Feb 00:03
4f56a4a
Compare
Choose a tag to compare

New features

None

Bug fixes

Dev-dep updates

Full Changelog: 0.5.2...0.5.3

0.5.2: Fix verbosity of logs + revamp Spacecraft data

31 Dec 15:28
cbd04c7
Compare
Choose a tag to compare

New features and improvements

  • The almanac's rotate and rotate_to functions now exposed to Python. MOON ME/PA of DE421/DE440 now exposed to Python by @ChristopherRabotin in #371

Bug fixes

  • SpacercaftData now copy-friendly (no clone needed), add 0x in front of CRC32 logs, add units to Keplerian element initializers in Rust (was already done in Python) by @ChristopherRabotin in #368
  • Renamed SpacecraftData's mass of "fuel" to "prop" since it represents propellant mass, fix extreme verbosity in querying Almanac, renamed fields of Inertia from axes {1, 2, 3} to {X, Y, Z} to follow the CCSDS conventions by @ChristopherRabotin in #369

P.S.: Sorry for the incredibly poor naming of these pull requests. Also sorry for the breaking changes with only a patch release: I don't think anyone actually uses the SpacecraftData structure: ANISE is also used on Blue Ghost mission 1, launching in two weeks, and it's hard to justify upgrading anything but a patch before launch. I probably should have made two separate releases.

Full Changelog: 0.5.1...0.5.2

0.5.1: Add FK rotations in Almanac (Moon ME/PA) + Expose DCM to Python

24 Dec 16:29
b2258cf
Compare
Choose a tag to compare

New features and improvements

Bug fixes

  • Fix Moon ME and Moon PA frames by searching for Euler Parameter datasets in rotations by @ChristopherRabotin in #364

Dependencies

The polars dependency is only a dev-dependency. Tabled is not a dev dependency, but it should be backward compatible. PyO3 is a bigger pain to update but that only affects users who re-export the ANISE Python library via Rust.

Full Changelog: 0.5.0...0.5.1

0.5.0: Dependency updates

05 Nov 03:29
e5b8d3e
Compare
Choose a tag to compare

Versioning

The minor version bump is solely for dependency management for Rust users. This release does not change the format or versioning of the ANISE binary files used in version 0.4. If you used files for 0.4, these are perfectly compatible with version 0.5.0. If you build new PCA/EPA files with version 0.5 of ANISE, these will be versioned as 0.4.

New features and improvements

Maintenance

Full Changelog: 0.4.5...0.5.0

0.4.5: Fix type 3 SPK interpolation + various minor improvements

16 Oct 14:15
fc14d1b
Compare
Choose a tag to compare

New features and improvements

Full Changelog: 0.4.4...0.4.5

0.4.4: Validate penumbra and line-of-sight + SPK Type 3 support + more orbit comparison options (VNC, RCN frames)

03 Oct 04:13
e60eb15
Compare
Choose a tag to compare

New features and improvements

  • Add spk_ezr function to Almanac to closesly match SPICE's spkezr function + various minor fixes by @ChristopherRabotin in #313
  • Add state differencing functionality + VNC and RCN frames include time derivative of the rotation matrix by @ChristopherRabotin in #316
  • Support SPK Type 3 chebyshev position and velocity by @ChristopherRabotin in #321

Bug fixes

Maintenance

Full Changelog: 0.4.3...0.4.4

0.4.3: Eclipsing, occultation, fix multi-barycenter transformations; various other improvements and fixes

03 Sep 05:31
a63436f
Compare
Choose a tag to compare

New features / improvements

Bug fixes

Maintenance

New Contributors

Full Changelog: 0.4.2...0.4.3