Skip to content

Releases: SpaceDataLab/spacelab

spacelab 0.3.0

Choose a tag to compare

@ilgrad ilgrad released this 26 Oct 16:23
v0.3.0
8da2422

spacelab 0.3.0 removes the JB2008 translation. SET's JB2008 License Agreement (15 October 2026)
does not allow JB2008.for to be translated or a translation to be distributed, so
spacelab-propagation no longer has a jb2008 module, and the repository no longer carries
excerpts of SET's index files. The 0.1.0 and 0.2.0 versions that contained or depended on the
translation are yanked on crates.io: spacelab-propagation, spacelab-control and
spacelab-ephemeris 0.1.0 and 0.2.0, spacelab-python 0.2.0. The validation campaigns still score
JB2008, by running SET's own unmodified program, which is not distributed here.

Upgrade

[dependencies]
spacelab = "0.3"   # or any of the 29 `spacelab-*` crates on crates.io
pip install -U spacedatalab   # built from spacelab-python 0.3.0

Breaking changes

  • propagation: the jb2008 module is gone (see above).
  • propagation: Knocke's Earth albedo and infrared weigh each element by Lambert's emission cosine,
    the angle between the element's normal and the ray it emits along. 0.2 used the geocentric angle,
    as Orekit 13.1.7 does; a uniform Lambertian sphere decides between them.
  • dsst: the SRP mean rates and short-period coefficients average over the whole orbit, cut at the
    penumbra and umbra cones. 0.2 averaged over a cylinder's arc, 5.5e-4 to 1.2e-2 off the defining
    average, relative to the rates' scale.
  • fa: the leap-second table is closed for continuous UTC (CGPM 2026 Resolution 5): TAI − UTC =
    37 s from 2017-01-01 for every later date, so current dates no longer stop converting a year after
    a build.
  • eop: EopSeries::parse_c04 reads the IERS EOP 20 C04 series and the ITRF it states;
    EopError gains a Header variant.

Also new

  • propagation: wam_ipe reads NOAA's operational WAM-IPE neutral density, which
    docs/verification.md §10.18 measures against GRACE-FO and Swarm accelerometer densities.
  • propagation: EOT20 ocean-tide coefficients, computed from the atlas.
  • dsst: the Gaussian short periods solve their defining equation.
  • shadow: the lens term is computed without cancellation, gated on a certified reference.
  • spacelab: UT1 stays continuous through a leap second, and a spurious 23:59:60 is refused.

Every change: git log v0.2.0..v0.3.0.

spacelab 0.2.0

Choose a tag to compare

@ilgrad ilgrad released this 23 Oct 21:41
v0.2.0
d48e88e

spacelab-python, the PyO3 bridge, is now a published crate: its register adds every binding to a
Python module. The spacedatalab wheel on PyPI is built from it in
SpaceDataLab/spacedatalab, the organisation's entry
point, and is imported as import spacedatalab from its own
v0.2.0. The import moves because
the top-level name spacelab is already installed by another project's package on PyPI, and two
distributions that install the same top-level package overwrite each other. The other 28 crates
change nothing but their version.

Upgrade

[dependencies]
spacelab = "0.2"   # or any of the 29 `spacelab-*` crates on crates.io
pip install -U spacedatalab   # built from spacelab-python 0.2.0
import spacedatalab as sl   # was: import spacelab as sl

Also new

  • The README leads with four comparisons, each against something that did not come from the
    project: SGP4 against python-sgp4, the CIO chain against ERFA, access windows against brute force,
    and coverage against the analytic reach. tools/gen-figures.py regenerates the figures and the
    numbers their captions quote; just figures --check fails if a quoted number moves.
  • The design rationale the README carried is now docs/design.md.
  • spacelab-python-harness, never published, loads the bridge for this repository's Python tests,
    figures and experiments. The wheels workflow moved to the umbrella, which runs the same smoke and
    bindings tests, at this tag, against every wheel before it uploads it.

Every change: CHANGELOG.md.

spacelab 0.1.0

Choose a tag to compare

@ilgrad ilgrad released this 23 Oct 15:04
v0.1.0
e22b35d

The first public release.

Astrodynamics in Rust, organised around independent verification: fundamental astronomy and
reference frames, SGP4, numerical and semi-analytical propagation with the IERS 2010 force model,
orbit determination, GNSS, satellite laser ranging, closed-loop control, coverage and constellation
design, and Earth-observation geometry. Every check, its oracle and its residual is recorded in
docs/verification.md.

Install

[dependencies]
spacelab = "0.1"   # or any of the 28 `spacelab-*` crates on crates.io
pip install spacedatalab   # CPython 3.11+ (abi3) and free-threaded 3.15t (abi3t); `import spacelab`

Wheels for Linux x86_64/aarch64 (manylinux 2.28), macOS arm64/x86_64 and Windows x64.
API documentation: https://docs.rs/spacelab

The C ABI and its C++20 header build with CMake from crates/spacelab-capi.

Licensed MIT OR Apache-2.0; third-party attributions are in NOTICE.