Skip to content

Releases: Bloom-Engine/engine

v0.4.1

16 May 13:58

Choose a tag to compare

What changes for consumers

@bloomengine/engine@0.4.1 now declares @bloomengine/jolt-prebuilt@0.4.1 as a regular dependencies entry. npm install @bloomengine/engine pulls both packages; Perry's compile step finds the prebuilt archives via node_modules/@bloomengine/jolt-prebuilt/lib/<target>/ and skips the multi-minute Jolt cmake build entirely.

If you're upgrading from 0.4.0 (or any 0.3.x), there's nothing to do beyond npm install — your first Perry compile should take seconds for the Jolt portion instead of 5–15 minutes.

Engine tarball shrinks

Dropping the bundled JoltPhysics sources from files: cuts the engine tarball from 2.2 MB → 1.2 MB packed (and 8.4 MB → 4.1 MB unpacked, 446 → 115 files). The Jolt bytes now live in @bloomengine/jolt-prebuilt, where each consumer only ever downloads one platform's worth of archives once.

Removed

  • scripts/prepack.sh — its only job was to verify the JoltPhysics submodule was initialised before packing source into the tarball. With source no longer shipped, the guard is meaningless.

Escape hatches

  • BLOOM_JOLT_FROM_SOURCE=1 still forces a cmake build of Jolt for in-repo development (the submodule remains in this repository). It will not work for npm consumers, since the source is no longer in the engine tarball — by design.
  • If @bloomengine/jolt-prebuilt is somehow absent (--omit=optional, custom registry filtering, etc.), build.rs falls back to cmake and will fail with a clear bloom_jolt shim not found message. Install the prebuilt package to fix.

v0.4.0

16 May 13:44

Choose a tag to compare

Highlights

First release that ships prebuilt JoltPhysics. Consumers of @bloomengine/engine no longer wait through a 5–15 minute cold cmake build on first install — native/shared/build.rs finds the prebuilt archives via node_modules/@bloomengine/jolt-prebuilt/ and links them directly. The legacy source-build path stays put as a fallback for in-repo dev work and for BLOOM_JOLT_FROM_SOURCE=1 overrides.

Features

  • New sibling package @bloomengine/jolt-prebuilt@0.4.0 carrying libJolt.a + libbloom_jolt.a for every (os, arch) variant Bloom supports: 17 slices across macos / ios / tvos / watchos / windows / linux / android. ~15 MB packed total. Build outputs come from a per-target CI matrix on the appropriate native runner — Apple cross-compiles on macos-14 with the Xcode generator, Android NDK cross-compiles on ubuntu-22.04, Linux native on x64 and arm64 runners, Windows on windows-latest.
  • Engine still ships source for the moment — the dependency on @bloomengine/jolt-prebuilt isn't declared yet. That follow-up lands once this release has gone green end-to-end and we've confirmed every matrix slice actually produces working archives.

Infrastructure

  • release.yml gains build-jolt-prebuilt (17-job matrix, fail-fast: false) → publish-jolt-prebuilt (assembles per-target artifacts into npm/jolt-prebuilt/lib/<target>/, publishes via OIDC trusted publishing). The existing engine publish-npm now waits on publish-jolt-prebuilt so the dependency version always resolves at consumer install time.
  • Trusted publishing now covers both packages — @bloomengine/engine and @bloomengine/jolt-prebuilt — with this workflow + their respective job names configured as the trusted publisher.

What to expect on first run

The matrix is opinionated about how each Apple cross-compile slice configures cmake (Xcode generator, explicit CMAKE_SYSTEM_NAME + SYSROOT per platform). Most of those flags are tested patterns, but the iOS/tvOS/watchOS simulator slices and the Android NDK paths are first-attempt and may need iteration. If any slice fails, publish-jolt-prebuilt won't run (matrix dependency) — fix on main, bump to v0.4.1, retry.

v0.3.3

16 May 10:19

Choose a tag to compare

Fixes

  • Ship JoltPhysics/Build/ in the tarball. 0.3.2's files: allowlist included JoltPhysics/Jolt/ but not JoltPhysics/Build/. The Build/ directory has a confusing name — it's not a build output dir, it's where Jolt's primary CMakeLists.txt lives, and bloom_jolt's shim does add_subdirectory(.../Build) to consume it. Without it, downstream consumers hit JoltPhysics submodule not found (misleading: the submodule was present, just incomplete).

If you installed @bloomengine/engine@0.3.2 and saw a Jolt-not-found error from Perry's compile step, upgrade to 0.3.3 — that's the fix.

Tarball grew ~10% (2.0 → 2.2 MB packed). The Jolt extras we still don't ship (TestFramework/, UnitTests/, Samples/, Docs/, Assets/, etc.) are guarded by a CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR check inside Build/CMakeLists.txt and only fire for standalone Jolt builds, so they're genuinely not needed when consuming Jolt via add_subdirectory.

v0.3.2

16 May 09:23

Choose a tag to compare

Highlights

First release of the engine to npmnpm install @bloomengine/engine works as of this version. Beyond the package itself, the release wires up GitHub Actions so future tag pushes auto-publish via OIDC trusted publishing.

Features

  • On-disk SDF cache — per-mesh SDFs are now cached to disk, so cold restarts skip the bake step (closes #22).
  • npm packaging@bloomengine/engine ships TypeScript sources, the engine's Rust crates, and vendored JoltPhysics sources. A single install is enough; no postinstall step. Tarball is ~2 MB packed / 8 MB unpacked.
  • Updated docs — README install instructions, scoped import paths (from "@bloomengine/engine" everywhere), prereqs section covering Perry / Rust / wasm-pack.

Infrastructure

  • Tag-driven release flow — pushing a v* tag fires release.yml, which gates on the Tests workflow, creates the GitHub Release, and publishes to npm.
  • OIDC trusted publishing — no long-lived NPM_TOKEN secret, provenance attestation automatic.
  • prepack guard — refuses to publish a tarball without an initialised JoltPhysics submodule, so the registry never gets a broken package.

v0.1.0

04 Apr 19:25

Choose a tag to compare

Prebuilt native libraries for cross-compilation