Releases / v0.117.0-rc22

v0.117.0-rc22 Whole Worlds

2026-10-26

Everything in rc20, plus an end to the stutter that decals caused on a streamed world, crafts and vehicles that come to rest, and a smoother take-off roll.

No more decal stutter

A world with decals on it froze for a moment every time ground streamed in or was dug: every mark in range was laid again in one go, and one large mark could take tens of milliseconds.

  • Ground that streams in lays again only the marks that were lying on its coarse stand-in, and ground that is put away lays nothing again. A dig lays again only the marks it reaches.
  • A mark laid again is laid a piece at a time within a small budget each frame, like a new mark, and the old one stays on screen until the new one is whole.
  • The ground a mark needs is prepared on a worker before the mark is laid.
  • perf.counts() reports decalsChecked and decalsRelaid.

Things come to rest

  • A craft that broke into pieces falls asleep once its pieces have settled, including pieces lying against each other. Before, pieces leaning on one another kept each other awake forever.
  • A vehicle on wheel joints falls asleep when parked: its body and wheels rest together and wake together.
  • Pieces asleep against each other are no longer compared every step.
  • node.asleep on a part of an assembly reads its assembly's state.
  • Motion is unchanged up to the moment something falls asleep.

Smoother take-off

A fast craft's collision ground is prepared ahead of it on a worker, so a plane's take-off roll or a fast rover no longer builds whole terrain chunks on the frame it reaches them.

Scripts and tools

  • terrain.deleteSaveDir can delete the active save from a scene with no terrain, such as a menu, and releases it. The refusal while a world still uses it says how to release it.
  • The profiler names a split and a rebuild (assemblySplit, assemblyRebuild), times a split or rebuild callback from its own start, and names time lost to running out of GPU or script memory (gpuOutOfMemory, scriptOutOfMemory).
  • perf.pacing() answers from the first frame.
  • floptle lint --vec3 follows scopes and statement order, so it no longer reports values that are not vectors.
  • json.encode writes a number in a table that lies beside 0 or 1, such as 1e-20 or 0.9999999999999999, as itself; it was written as 0 or 1.

Upgrading

Projects upgrade themselves; nothing to do. What upgrading cannot change for you:

  • A split or rebuild callback now runs under the same per-pass time budget as every other script hook. A callback that ran very long before is now stopped like any other overrunning script.

Floptle Hub

Linux x86_64 10.7 MB Download → sha256 3aee2f6aa835e6a7e4c81ced631cc4bbd6b722bd8a7f79562bd0d17ad70a1fa0
macOS Apple Silicon 7.5 MB Download → sha256 456bb10744d844c497892ee2ef52da89ddd0c220e33c2708b490b02f6fc979bf
macOS Intel 8.0 MB Download → sha256 77a8a8987fffed54fba4d3a3f0ceaa3d31166ae093f853b2452f080b6c3c7d2c
Windows x86_64 9.2 MB Download → sha256 c736bb1a496ef9694507d3fa899de2bd98e5ee8980609e08be1b070d6bcf0759

Engine

Linux x86_64 58.7 MB Download → sha256 9e7e6af4418fe2d82e805c2401ed9ca3ade9e572c6c0d59ee429eecced9d43a7
macOS Apple Silicon 46.1 MB Download → sha256 5218b728cc3628b317d301b6961df96edc6c48161758823b14938e490d68c75e
macOS Intel 49.7 MB Download → sha256 957fb0ca9e5445a63192325ce542158bbb94e3fd1f996a00fc8375d42ffcc900
web 5.6 MB Download → sha256 30b5b7d6975d04fb2512774a072ab38dec31b61919c8d3750742890c7f90631c
Windows x86_64 56.1 MB Download → sha256 f094afbdbc78198aa6ce0932797d2e51d051205cc7ae6c3583d01f514336c766

The binaries are not signed yet. On macOS, right-click the app and pick Open the first time. On Windows, if SmartScreen appears, pick More info then Run anyway.