Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Swiss Ephemeris Ffi Laravel Package

jayeshmepani/swiss-ephemeris-ffi

PHP 8.3+ FFI wrapper for the Swiss Ephemeris C library. Exposes all 106 public API functions with 1:1 constant/signature parity and zero abstraction. No swetest shelling; outputs verified for parity via PHPUnit against swetest.

View on GitHub
Deep Wiki
Context7

Swiss Ephemeris PHP FFI

PHP Version License Latest Version on Packagist Total Downloads

PHP 8.3+ FFI wrapper for the Swiss Ephemeris C library.

This package is designed to expose the Swiss Ephemeris C API to PHP through FFI, without shelling out to the swetest command-line tool.

Zero abstraction. Native-level FFI. Verified output parity with Swiss Ephemeris C engine.

Swiss Ephemeris PHP FFI provides a zero-abstraction, 1:1 mapping of the native Swiss Ephemeris C library. All 106 public API functions are exposed with complete constant and signature parity.

The wrapper performs no additional calculations, transformations, or rounding, ensuring direct memory-level interaction with the C engine.

Outputs are verified against the official swetest CLI using automated PHPUnit tests, demonstrating bit-level parity in verified test scenarios for planetary positions, house systems, eclipses, and edge-date calculations.

Latest Upstream Status

Checked against upstream on April 25, 2026.

  • Latest upstream release tag: v2.10.3final released on April 14, 2026.
  • Current upstream master checked: commit 2f18c14 from April 18, 2026 (fixed bug in semo4200.se1).
  • Swiss Ephemeris 3.0: announced by upstream as the next major source-code release, but no public v3.0 tag was available at the time of this check.
  • DE441 data update: upstream states that, as of April 14, 2026, all .se1 data files for planets and asteroids were rebuilt with JPL Ephemeris DE441.
  • Compatibility note: upstream states that the rebuilt .se1 files remain compatible with older Swiss Ephemeris versions at least back to release 1.67.
  • Asteroid data: upstream documents more than 760,000 numbered asteroids and more than 25,000 named asteroids. Commit history also records asteroid list updates through numbered asteroid 793066.
  • Internal Swiss Ephemeris version string: the upstream C header still defines SE_VERSION as 2.10.03.

See VERSION.md and UPSTREAM_SYNC.md for detailed version tracking.

Requirements

  • PHP ^8.3
  • PHP FFI extension (ext-ffi)
  • FFI enabled in PHP configuration. Depending on your environment, this usually means setting ffi.enable=true, or configuring FFI preload mode correctly.

Installation

composer require jayeshmepani/swiss-ephemeris-ffi

Quick Start

use SwissEph\FFI\SwissEphFFI;

$sweph = new SwissEphFFI();

$jd = $sweph->swe_julday(2000, 1, 1, 12.0, SwissEphFFI::SE_GREG_CAL);

$xx = $sweph->getFFI()->new("double[6]");
$serr = $sweph->getFFI()->new("char[256]");

$result = $sweph->swe_calc_ut(
    $jd,
    SwissEphFFI::SE_SUN,
    SwissEphFFI::SEFLG_SPEED,
    $xx,
    $serr
);

if ($result >= 0) {
    echo "Sun Longitude: " . $xx[0] . "°\n";
} else {
    echo "Swiss Ephemeris error: " . $sweph->getFFI()->string($serr) . "\n";
}

Performance Audit

We have conducted a rigorous side-by-side benchmark comparing this FFI implementation against the native php-sweph C-extension.

View the Interactive Performance Audit →

The audit demonstrates bit-perfect accuracy and highly competitive performance across all 106 Swiss Ephemeris functions.

Documentation

Read the full documentation →

The documentation covers:

  • Installation on Linux, macOS, and Windows
  • FFI configuration
  • Ephemeris file setup
  • Swiss Ephemeris API usage
  • Examples for tropical, sidereal, and house calculations
  • Laravel integration
  • Troubleshooting

Verification Sources

License

This package metadata declares AGPL-3.0-or-later.

The upstream Swiss Ephemeris C library and ephemeris data are distributed under Astrodienst's dual licensing model: AGPL or Swiss Ephemeris Professional License. If you use Swiss Ephemeris in commercial or closed-source software, or in a public SaaS/web service, review Astrodienst's license terms before use.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium