empyrean-sys
Low-level FFI bindings to the libempyrean astrodynamics C ABI
empyrean-sys exposes the C ABI of libempyrean to Rust as raw,
unsafe, bindgen-generated declarations. It does not attempt to wrap,
type-check, or RAII-manage the underlying handles.
[]
= "0.7"
use *;
use CString;
// All entry points are unsafe; pointer ownership and lifetime are the
// caller's responsibility. See empyrean/include/empyrean.h for the
// authoritative C ABI documentation.
unsafe
Most users want the safe wrapper instead — see the
empyrean crate, which builds on
empyrean-sys to provide typed handles, Result-returning entry points,
and Rust-native lifetime management.
Runtime requirement
empyrean-sys opens libempyrean.{dylib,so,dll} at run time via
libloading (dlopen). The library is distributed separately as a
binary release on
GitHub and
inside the published Python wheel. The path is resolved from the
EMPYREAN_LIB environment variable if set, else a libempyrean.*
sitting next to the loaded module, else a build-time location — a
sibling ../target/release build, an EMPYREAN_LIB_DIR override, or
a checksum-pinned download from the GitHub release. The FFI bindings
are pre-generated and committed, so no C header, libclang, or bindgen
is needed to build.
License
Source code in this crate is licensed under the
BSD 3-Clause License. The closed-source libempyrean
runtime it loads at runtime is governed by a separate proprietary binary
license; see the main repository for the dual-license breakdown.
Copyright © 2024–2026 Joachim Moeyens. All rights reserved.