Skip to content

Wouittone/orskit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

orskit - Orbital Mechanics Library in Rust

A Rust library for orbital mechanics calculations, inspired by Orekit. orskit provides orbital propagation, station geometry, and measurement handling with language bindings for Python and Java.

Structure

Core Library (crates/)

  • core: Core orbital mechanics structures and utilities
  • orbit: Orbital propagation using numerical ODE solvers (RK4, Dopri5, Dop853)
  • stations: Ground station and geographic location utilities
  • measurements: Measurement and observation handling
  • utils: Common constants and utility functions

Language Bindings (bindings/)

  • python/: Python bindings using PyO3 (for Python 3.8+)
  • java/: Java FFM (Foreign Function & Memory) bindings for Java 25+

Building

Rust Library

cargo build --release

Python Bindings

cd bindings/python
pip install maturin
maturin develop

Java Bindings

Requires Java 25+ and Gradle 9+:

cd bindings/java
./gradlew build          # Unix/Linux/macOS
gradlew.bat build        # Windows

# Or with locally installed Gradle
gradle build

Java Build Configuration

The Java bindings use Kotlin-based Gradle with modern best practices:

  • Gradle 9.0+: Latest Gradle version with performance improvements
  • Kotlin DSL: Type-safe build configuration (build.gradle.kts)
  • Configuration Cache: Faster build times with incremental caching
  • Build Cache: Reusable build outputs across machines
  • JaCoCo: Code coverage reporting
  • Parallel Builds: Multi-threaded compilation
  • Java 25 Preview Features: Support for latest Java features

Build Properties Optimization

The gradle.properties file includes:

  • Daemon Settings: Long-lived Gradle daemon for faster builds
  • JVM Configuration: Optimized heap size (4GB max) and G1 garbage collector
  • Parallel Execution: Automatic worker detection for concurrent builds
  • Caching: Configuration cache and build cache enabled for incremental builds
  • Feature Preview: Auto-download of Java installations

Gradle Wrapper

The project includes gradlew (Unix/Linux/macOS) and gradlew.bat (Windows) scripts for reproducible builds without installing Gradle locally.

Dependencies

Core Library

  • nalgebra (0.34): Linear algebra for vectors and matrices
  • ode-solvers (0.6): Numerical ODE integration (RK4, Dopri5, Dop853)
  • hifitime (4.1): High-fidelity time handling for precise orbital mechanics

Python Bindings

  • PyO3 (0.21): Python-Rust interop

Java Bindings

License

Licensed under either of:

at your option.

About

Orbital mechanics library in Rust, inspired by Orekit

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages