Releases: Bloom-Engine/engine
v0.4.1
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=1still 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-prebuiltis somehow absent (--omit=optional, custom registry filtering, etc.),build.rsfalls back to cmake and will fail with a clearbloom_jolt shim not foundmessage. Install the prebuilt package to fix.
v0.4.0
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 carryinglibJolt.a+libbloom_jolt.afor 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 onmacos-14with the Xcode generator, Android NDK cross-compiles onubuntu-22.04, Linux native on x64 and arm64 runners, Windows onwindows-latest. - Engine still ships source for the moment — the dependency on
@bloomengine/jolt-prebuiltisn'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.ymlgainsbuild-jolt-prebuilt(17-job matrix,fail-fast: false) →publish-jolt-prebuilt(assembles per-target artifacts intonpm/jolt-prebuilt/lib/<target>/, publishes via OIDC trusted publishing). The existing enginepublish-npmnow waits onpublish-jolt-prebuiltso the dependency version always resolves at consumer install time.- Trusted publishing now covers both packages —
@bloomengine/engineand@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
Fixes
- Ship
JoltPhysics/Build/in the tarball.0.3.2'sfiles:allowlist includedJoltPhysics/Jolt/but notJoltPhysics/Build/. TheBuild/directory has a confusing name — it's not a build output dir, it's where Jolt's primaryCMakeLists.txtlives, andbloom_jolt's shim doesadd_subdirectory(.../Build)to consume it. Without it, downstream consumers hitJoltPhysics 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
Highlights
First release of the engine to npm — npm 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/engineships TypeScript sources, the engine's Rust crates, and vendored JoltPhysics sources. A singleinstallis 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 firesrelease.yml, which gates on theTestsworkflow, creates the GitHub Release, and publishes to npm. - OIDC trusted publishing — no long-lived
NPM_TOKENsecret, provenance attestation automatic. prepackguard — refuses to publish a tarball without an initialised JoltPhysics submodule, so the registry never gets a broken package.
v0.1.0
Prebuilt native libraries for cross-compilation