Skip to main content



  • Language reimplemented in Typescript instead of Rescript.
  • 2x performance boost on average on typical Squiggle code. Most improvements come from optimizations in distribution operations.
  • Color fixes and improved distribution charts in components.
  • mean() on mixed pointsets now works correctly.


  • Error locations and stacktraces.
  • New functions: List.length, Dist.set and
  • Improved to precedence order.
  • Improvements to -> operator: more stuff can be passed on the right side, e.g. anonymous functions.
  • Support for empty records ({}).
  • Various performance improvements; overall speedup on real code is around 5%.


  • Performance improvements:
    • Interpreter is now 5x-20x faster on code written in Squiggle
    • SampleSet to PointSet conversions are 2x faster
    • cdf function on SampleSets is 30x faster
    • overall speedup is about 2x on average on real code written in Squiggle
  • 50% smaller bundle size for @quri/squiggle-lang; 20% smaller bundle size for @quri/squiggle-components.

Breaking changes

Some rarely used math functions got removed or moved to the Math namespace.

For example, cos(x) is now Math.cos(x), and atanh(x) doesn't exist.

If your code is now failing with <function> is not defined for anything from this list, try adding Math. prefix first, and then complain on Github issues.