Skip to content

v0.2.0

Latest

Choose a tag to compare

@simnaut simnaut released this 09 Jun 04:06
· 2 commits to main since this release
0aee912

Second release. Headlined by the frame-identity work (#659 / #660#664 / #668): every reference frame now carries a stable FrameUid, every cross-source reference resolves through it, and a new astrodyn_frame_doc crate captures that identity in a self-describing, replayable wire schema.

Added

  • astrodyn_frame_doc crate (#663) — frame-document schema: a self-describing serialized form of a reference-frame tree (snapshot FrameDocument + replay-series FrameSeries) carrying identity, topology, origin, and epoch on every record, with bit-exact f64 round-trips. Per-record validators (validate_header, validate_uid_table, validate_record) support independent streaming consumers (#659). The gateway exposes it behind a new, off-by-default frame-doc feature (astrodyn::frame_doc + astrodyn::frame_doc_io), keeping the production build serde-free.
  • Frame identity vocabulary (#660) — FrameUid plus Frame::DESCRIPTOR on the sealed Frame trait.
  • CartesianState<F> (#650) — typed position + velocity state record with opt-in serde (the gateway's serde feature forwards to it).
  • New frames and presets: Moon mean-Earth (ME) frame for DEM georeferencing (#652); site-anchored topocentric ENU frame (#651); generic IAU body-fixed rotation beyond Moon/Mars (#653); a typed Ephemeris rotation accessor (#648); Jupiter + Saturn shape presets (#649).
  • LSODE integrator family (#615/#616/#617) — non-stiff Adams and stiff BDF (Newton corrector + Jacobian) integrators, wired through the Bevy adapter with a parity test.

Changed

  • MSRV bumped to 1.89 (was 1.87). Forced by bevy 0.18.1 declaring its own rust-version = "1.89"; cargo's MSRV-aware resolution refuses to build the workspace on older toolchains.
  • Docs and package metadata reframed to describe astrodyn as an engine-agnostic framework rather than a Bevy-first library (#647).

Breaking

  • Frame identity is now required throughout (#661/#664/#668). RefFrameKind was removed; FrameUid is required on FrameTree nodes behind a checked typed boundary (validate() + namespace rules); and the former SourceId collapsed so every cross-source reference is a FrameUid. Downstream code that built frames without identities, or referenced frames via the old SourceId / RefFrameKind types, must migrate to FrameUid.
  • astrodyn::source_frames::SourceFrameIds gained a pub central: bool field (originally landed in #568 without a version bump). Downstream code constructing this struct via struct literal must add the new field.

Tooling

Bundled as part of #527: cargo-deny supply-chain fence; Dependabot weekly cadence; MSRV CI gate; cargo-semver-checks (advisory) against the crates.io baseline; cargo-hack feature-powerset on astrodyn_ephemeris; cancel-superseded CI concurrency; Claude Code review + @claude mention workflows (#666).

Verification

Large Tier 2 / Tier 3 cross-validation expansion against JEOD Trick sims: SIM_orbinit (full 46/46 init-variant matrix), SIM_verif_attach_mass, SIM_dyncomp, SIM_MET, SIM_tide_verif, SIM_7_time_reversal, SIM_VER_DRAG (with the DRAG_OPT_CONST aero option), SIM_RNP_J2000_prop, and the SIM_csr_compare gravity-acceleration octant sweep. Added Rosetta swing-by and Phobos mission benchmarks (#203/#204).

Crates

Fourteen publishable workspace crates published to crates.io at this version — the thirteen from 0.1.0 plus the new astrodyn_frame_doc.


📦 All 14 crates live on crates.io · 📖 Full changelog · 🔍 Compare v0.1.1...v0.2.0