I’m happy to present you Ephemerides.jl, a package that provides fast, thread-safe and allocation-free access to binary JPL SPK and PCK ephemeris files. Completely written in Julia, it enables Automatic-Differentiation (AD) via ForwardDiff across all of its function calls.
Once you have the desired kernels on your PC, you can easily load them:
# Load a single SPK kernel eph = EphemerisProvider("de440.bsp")
and then compute all the desired positions, angles and their higher-order derivatives (up to the jerk):
# TDB seconds at 2000-01-01T12:00:00 (J2000) time = 0.0 # Compute the position of point 399 with respect to 3 at J2000 pos = ephem_vector3(eph, 3, 399, time)
It also beats both SPICE and CALCEPH in terms of execution speed, as you can see from some of the benchmarks we performed.