The engine is released as engine-v<version> in ripple_engine_releases. Every target is built in both variants, and every archive is named in the release’s signed manifest with its SHA-256 digest. Why it is shaped this way is How the engine ships.
| Target |
Platform |
Floor |
C and C++ |
C# |
Dart |
JavaScript |
x86_64-unknown-linux-gnu |
Linux, x64 |
glibc 2.35 |
yes |
linux-x64 |
yes |
|
aarch64-unknown-linux-gnu |
Linux, arm64 |
glibc 2.35 |
yes |
linux-arm64 |
yes |
|
x86_64-apple-darwin |
macOS, Intel |
macOS 12.0 |
yes |
osx-x64 |
yes |
|
aarch64-apple-darwin |
macOS, Apple silicon |
macOS 12.0 |
yes |
osx-arm64 |
yes |
|
x86_64-pc-windows-msvc |
Windows, x64 |
|
yes |
win-x64 |
yes |
|
aarch64-pc-windows-msvc |
Windows, arm64 |
|
yes |
win-arm64 |
yes |
|
aarch64-linux-android |
Android, arm64 |
API 24 |
yes |
android-arm64 |
yes |
|
x86_64-linux-android |
Android, x86_64 (the emulator) |
API 24 |
yes |
android-x64 |
yes |
|
aarch64-apple-ios |
iOS, device |
iOS 13.0 |
static only |
ios-arm64, static only |
yes |
|
aarch64-apple-ios-sim |
iOS, arm64 simulator |
iOS 13.0 |
static only |
iossimulator-arm64, static only |
yes |
|
wasm32-unknown-emscripten |
a program compiled with Emscripten |
Emscripten 4.0 |
yes |
|
|
|
wasm32-component |
browsers and Node |
|
|
|
web |
yes |
- The C archives are in every release from engine 1.5.1; 1.5.0 carried the web component and the editor’s own libraries only.
- Nothing older or 32-bit is built: no 32-bit Android, no Intel iOS simulator, no musl Linux.
- Android is linked with segments aligned for 16 KB pages.
- iOS shipped a static library only until engine 1.5.4, which added a shared one. The C, C++ and C# bindings link the static library.
- Engine 1.5.1’s macOS shared library names its build machine’s path instead of
@rpath, and cannot be loaded. It is fixed from 1.5.2. The static library is unaffected.
wasm32-unknown-emscripten is available from engine 1.5.3. It is single-threaded, and a panic ends the module instead of poisoning one handle. Emscripten 3.1.38, which Unity 6000.0 to 6000.4 bundle, links the engine but cannot open a campaign from a folder; Unity 6000.5 and later bundle Emscripten 4.0.19. .NET’s own browser build bundles an older Emscripten, so it is not a target.
wasm32-component is not a rustc triple: the python component is built for wasm32-wasip2 and imports WASI’s clock and random numbers, while the no-python one is built for wasm32-unknown-unknown and imports nothing.
| Variant |
What it is |
Archive name |
python |
The engine with its sandboxed Python interpreter. |
ripple-engine-c-<version>-<target>.tar.gz, ripple-engine-<version>-wasm32-component.tar.gz |
no-python |
The same engine and API without it. About half the size natively. Refuses at open a campaign whose manifest says it needs Python. |
the same names with -no-python after the version |
| Binding |
How the variant is chosen |
| C and C++ |
RIPPLE_ENGINE_PYTHON, a CMake option, ON by default. |
| C# |
The package referenced: RippleFx.Engine.Native or RippleFx.Engine.Native.NoPython. |
| Dart |
Native: the python user-define in the pubspec, true by default. Web: --dart-define=RIPPLEFX_PYTHON=false. |
| JavaScript and TypeScript |
Campaign.load’s python option: 'auto' by default, which reads the campaign’s needs, or true or false. |
The C archive, ripple-engine-c-<version>[-no-python]-<target>.tar.gz, for every native target and for Emscripten:
| Path |
What it is |
include/ripple/ripple.h |
The C header, C99. |
lib/libripple_effect_engine.so, .dylib or ripple_effect_engine.dll |
The shared library, with ripple_effect_engine.dll.lib, its import library, on Windows. Linux and Android carry the soname libripple_effect_engine.so; macOS and iOS the install name @rpath/libripple_effect_engine.dylib. Not in the Emscripten archive. |
lib/libripple_effect_engine.a or ripple_effect_engine.lib |
The static library. |
lib/native-static-libs.txt |
The system libraries a static link needs, for this target. One empty line for Emscripten, whose compiler links them itself. |
NOTICE |
The Runtime Licence notice and the third-party notices, naming the variant. |
The web component, ripple-engine-<version>[-no-python]-wasm32-component.tar.gz:
| Path |
What it is |
lib/ripple_engine.wasm |
The component. |
wit/ |
The interface it exports, ripple:engine@1.5.0. |
NOTICE |
As above. |
The desktop archive, ripple-engine-<version>[-no-python]-<target>.tar.gz, also carries two command-line tools: bin/ripple, the terminal player, which plays a bundle (ripple <bundle> --auto --seed N for an unattended run), and bin/compile, which compiles a project into a bundle.
| File |
What it is |
engine-manifest.json |
Every archive with its size and SHA-256, the engine’s version, its contract and the contracts it reads, and the bundle and save formats. |
engine-manifest.json.sig |
An Ed25519 signature over the manifest’s exact bytes. |
ripple-conformance-<version>.tar.gz |
The conformance fixtures, each a bundle with the inputs to replay and what a correct host sees, and a FORMAT.md saying how to drive one. |
SHA256SUMS |
The digest of every file above. |
| Contract |
Codename |
Reads campaigns of |
Engine releases |
| 1.5 |
Multiclassing |
1.3, 1.4 and 1.5 |
1.5.0 to 1.5.4 |
A binding’s version is the contract’s MAJOR.MINOR and its own patch. The engine release each binding pins is in its repository’s engine.json.