Friday, July 24, 2026

A tool for anyone tired of waiting on Arduino builds.


The problem
-
Anyone who's spent real time with Arduino knows this loop: tweak one line, hit Upload, wait. And wait. Even for a one-character change, the IDE (or arduino-cli under the hood) recompiles the entire core and every library the sketch touches - every single time. On a small sketch that's a few seconds. On something pulling in a big library - FastLED, a WiFi stack, a display driver - it can be 20-30 seconds or more, before even getting to test whether the change worked.
-
That doesn't sound like much until deep in an iteration loop - tuning LED animation timing, debugging a sensor threshold, chasing a race condition - and that's happening 40 times in an evening. The actual bottleneck usually isn't the code. It's waiting for the compiler to redo work it already did five minutes ago.
-
The idea
-
This is a solved problem in normal C/C++ development - tools like ccache skip recompiling when nothing that could affect the output has actually changed. fastbuild applies that same idea to Arduino sketches specifically: a small Go tool that wraps arduino-cli, hashes everything that could affect a build (the sketch's own source, the libraries it actually includes, even the installed toolchain version), and skips straight to reusing the last result when nothing's different. A build that used to take 20-30 seconds becomes about a second.
-
*Illustrative timings only. Actual performance depends on project size, board package, libraries, hardware, and whether the build can be served from cache.
-
On top of that sits fastbuilduix - a desktop UI, since a command-line config file isn't the friendliest thing to hand someone. It adds a proper board picker (no more hand-typing FQBN strings), live build output, a lightweight sketch editor with error highlighting, and a persistent status bar showing cache hits, flash/RAM usage, and more.
-
What it actually gets you
-
Repeat builds in ~1 second instead of 20-30+
-
*Illustrative timings only. Actual performance depends on project size, board package, libraries, hardware, and whether the build can be served from cache.
-
A background daemon mode, so the toolchain stays warm across an entire session instead of paying startup cost every time
-
Watch mode - save the sketch, it rebuilds automatically
-
A friendlier board-picking wizard instead of memorizing FQBN syntax
-
Standalone build scripts that can run without the UI open at all
-
Neither piece tries to replace the Arduino IDE or arduino-cli - they still do the actual compiling. This is purely about not waiting for work that's already been done.
-
Try it
-
Feedback, issues, and contributions are all welcome - especially from anyone who's felt this exact pain and wants to know whether it actually fixes it for their setup.

No comments:

Post a Comment