Skip to content

v2.8.1

Choose a tag to compare

@github-actions github-actions released this 27 Sep 04:42
· 112 commits to main since this release

What's Changed

  • Show every branch of a nondeterministic run, and fit animation to playback speed by @thethinkmachine in #95
  • Add a benchmark for the engine, the player and the canvas by @thethinkmachine in #96
  • Space-time diagram: linear memory, reset that frees it, a fast overview strip; speed dial on reload by @thethinkmachine in #97
  • Long runs: tape runs as columns, checkpoints and undo for jumps by @thethinkmachine in #98

Highlights

Busy beavers, run to the end (#97, #98) — a Turing machine can now run for tens of millions of steps and still be played, scrubbed and drawn. The five-state busy beaver champion runs to its halt at 47,176,870 steps in about 286 MB, space-time diagram included, where it used to need over 10 GB and could not finish in a browser tab. The player keeps a few bytes per step instead of a copy of each step.

Scrub anywhere in a long run, instantly (#98) — stepping back is now as cheap as stepping forward, and jumping to any point costs about the same however long the run is: roughly a tenth of a millisecond anywhere in the busy beaver's 47 million steps. Before, every step back rebuilt the tape from the start of the run, several milliseconds per step on a run of a million steps.

Every branch of a nondeterministic run (#95) — a new Computation Tree card draws the whole search, not just the path the trace follows: every branch, where it forked, and how it ended (accepted, stuck, merged into another branch, or never explored). On the canvas, each live branch is a coloured token that travels the edge its branch took, splits at a fork and fades when its branch dies. Related branches get related colours. Available on the NFA, ε-NFA, NPDA, QA, Counter, 2PDA, PDT, EPDA, NDTM, FST and 2NFA.

Animation keeps up with the playback speed (#95) — the travelling token and the arrival pulse now fit inside each step, so they are no longer cut off at 5× and faster, and from 50× the canvas, tape and space-time view snap instead of fading.

A faster, leaner space-time diagram (#97, #98) — the diagram no longer keeps its own copies of the tape, builds its rows several times faster, and lets go of a run's memory when the run is reset, even with the section folded. The overview strip beside a long run draws in under a tenth of a second where it could take 20.

Fixes — the speed dial shows the saved speed after a reload, instead of 1× while playing at the saved speed (#97).

For contributors — npm run bench measures the engine, the player, the canvas, the space-time diagram and whole long runs against a recorded baseline, and flags a case only when it moves by more than its own noise (#96, #97, #98).

Full Changelog: v2.8.0...v2.8.1