Acorn 8.6 Is Out, and Some Geeky Info on the New Brush Tool

The Shape of Everything
A website mostly about Mac stuff, written by August "Gus" Mueller
June 26, 2026

Acorn 8.6 is out!

The big new things are:

  • A new brushing engine that has been rewritten using Metal shaders. It includes an option for “velocity thinning”, where the faster you draw your brush strokes, the thinner the lines.
  • A new acorn shell tool that you can use to send JavaScript to Acorn, as well as start an MCP server. So if you’ve got a favorite LLM you like to use, you can now use it to drive Acorn. The JavaScript section of the release notes are a good read if you’re interested in that. In addition:
    • The JS API has also been updated with examples for most calls.
    • The shell tool has a -jsio argument which lets you do things like:
      echo "acorn.takeLayeredScreenshot();" | acorn -jsio
  • Big ML models (used for Select Subject and Super Resolution Scaling) are now downloaded on demand. If AI isn’t your thing, they won’t take up any space on your Mac. If you do use those features, the models are downloaded once and cached, and future Acorn updates are faster because those models no longer ship with the app.

There’s more of course, including bug fixes and QOL things, which are covered in the release notes.

Details on the new brushing engine (kind of nerdy)

The new brush engine is really exciting for me, as it’s something I’ve been wanting to do for years now, and I think I really got it right this time around.

There are two main components to this new brush engine (which I call ”FMVelocityBrush”).

The first collects all the input points for brush strokes and smooths them before painting. If you’re using a mouse for brushing, then sometimes lines get a little jagged. Or maybe you’re moving the cursor faster than MacOS can deliver input, so Acorn has to smooth out those lines. Acorn has done this for decades at this point - that’s not new.

What’s new is the use of a low-pass IIR (Infinite Impulse Response) filter, which smooths the input even further. Once I had that working, the brush simply felt right in a way it never had before. That made me very happy.

The second component is the use of Metal shaders for painting. Previously, Acorn used a handful of Core Image filters to lay down pixels. Even though Core Image itself uses Metal, it was never quite fast enough for this particular workload. Core Image is incredibly fast for most tasks, but I was effectively abusing it by sending it a huge number of tiny rendering requests. Large brushes performed well, while small brushes could be painfully slow.

So now the engine paints the brush strokes using Metal shaders directly, where I have more fine-grained control over what is going on. I even have the brush strokes blend using a custom compositor, so instead of dark fringes when you paint red over green, you get nice perceptual blending. It’s pretty great.

In the past I’ve used straight Core Graphics APIs or simple Core Image filters to paint. I even spent way too much time creating a multi-threaded engine that would take input on the main thread and perform the calculations and drawing on a background thread to speed things up. In a way I’m proud of that one but it never really got me to where I wanted things.

But Acorn’s brush drawing now feels really good in a way it never has before, and I’m looking forward to building on it in the future. The smudge and clone tools also use this new engine - and with the speedup in painting, using the smudge tool is actually pretty fun.

If you’ve been frustrated with Acorn's brushing in the past, give it another try. And let me know if anything feels off with it.