Skip to main content

PlatformIO-compatible embedded build tool (Rust implementation)

Project description

fbuild

fbuild

fbuild is a fast, multi-platform compiler, deployer, emulator runner, and serial monitor for embedded development. It reads the same platformio.ini files already used by PlatformIO sketches, but uses a Rust-native, data-driven build pipeline.

Check Ubuntu Check macOS Check Windows Formatting Documentation Build Native Binaries

Build Matrix

These board builds are part of the front door. They show the platform breadth that fbuild actively protects in CI.

AVR

Build Arduino Uno Build Leonardo Build ATmega8A Build ATtiny85 Build ATtiny88 Build ATtiny4313

MegaAVR

Build ATtiny1604 Build ATtiny1616 Build Nano Every

Renesas

Build UNO R4 WiFi

ESP8266

Build ESP8266

ESP32

Build ESP32 Dev Build ESP32-C2 Build ESP32-C3 Build ESP32-C5 Build ESP32-C6 Build ESP32-H2 Build ESP32-P4 Build ESP32-S2 Build ESP32-S3

CH32V (RISC-V)

Build CH32V003 Build CH32V103 Build CH32V203 Build CH32V208 Build CH32V303 Build CH32V307

CH32X (RISC-V, USB PD)

Build CH32X035

Teensy

Build Teensy 4.1 Build Teensy 4.0 Build Teensy 3.6 Build Teensy 3.5 Build Teensy 3.2 Build Teensy 3.1 Build Teensy 3.0 Build Teensy LC

STM32

Build STM32F103C8 Build STM32F103CB Build STM32F103TB Build STM32F411CE Build STM32H747XI Build Nucleo F429ZI Build Nucleo F439ZI Build Arduino Giga R1

SAM / SAMD

Build Arduino Due Build SAMD21 Build Arduino Zero Build SAMD51J Build SAMD51P

RP2040 / RP2350

Build RP2040 Build RP2350

Nordic NRF52

Build nRF52840 DK Build SuperMini nRF52840 Build nice!nano nRF52840 Build nRFMicro nRF52840 Build Adafruit Feather NRF52840 Sense

Apollo3

Build Apollo3 RedBoard Build Apollo3 expLoRaBLE

NXP LPC (Cortex-M0+)

Build LPC804 Build LPC845 Build LPC845-BRK Build LPCXpresso804 Build LPCXpresso845-MAX

Silicon Labs

Build MGM240 Build SparkFun Thing Plus Matter

Raspberry Pi Pico

Build Raspberry Pi Pico Build Raspberry Pi Pico 2

Board descriptions and family deep-dives live in docs/BOARD_STATUS.md.

Installation

pip install fbuild

For source installs, platform notes, and first-run cache behavior, start with the getting started guide.

Quick Start

Create a minimal Arduino project:

mkdir my-project
cd my-project
mkdir src

Add platformio.ini:

[env:uno]
platform = atmelavr
board = uno
framework = arduino

Add src/main.ino:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

Build it:

fbuild build

On the first build, fbuild downloads the toolchain and framework packages it needs, then caches them for later builds. A successful Uno build writes .fbuild/build/uno/firmware.hex.

Examples

Common workflows:

fbuild build
fbuild deploy --clean
fbuild deploy --monitor
fbuild test-emu . -e uno
fbuild monitor --timeout 60 --halt-on-success "TEST PASSED"

Detailed build, deploy, monitor, and emulator examples live in the CLI reference and emulator testing guide.

Docs Index

The full FAQ-style map is docs/INDEX.md. Common entry points:

Goal Start here
Install fbuild and run the first build docs/getting-started/
Use build, deploy, monitor, or test-emu docs/reference/cli.md
Configure platformio.ini docs/reference/platformio-ini.md
Check board and platform support docs/platforms/
Understand the project rationale docs/WHY.md
Work on fbuild itself docs/development/
Read architecture internals docs/architecture/overview.md

Key Features

  • platformio.ini compatibility for existing Arduino and ESP32 sketches
  • Fast incremental builds with cached toolchains, frameworks, and libraries
  • URL-based package and library management, including GitHub lib_deps
  • Build, deploy, serial monitor, and emulator test workflows from one CLI
  • Cross-platform support on Windows, macOS, and Linux
  • Transparent architecture with Rust workspace internals documented under docs/architecture/

See docs/WHY.md for the full rationale, benefits, and performance notes.

CLI Usage

The user-facing command reference is docs/reference/cli.md. It covers core workflows (build, deploy, monitor, test-emu) and diagnostics such as symbols, bloat, lib-select, compile-many, and ci.

Configuration

fbuild reads platformio.ini project files. The configuration reference, including default_envs, build_flags, lib_deps, upload and monitor settings, and compatibility notes, lives in docs/reference/platformio-ini.md.

Emulator Testing

fbuild can build firmware and run it without hardware via fbuild test-emu or fbuild deploy --to emu. Emulator backends, auto-detection rules, QEMU notes, and known limitations live in docs/guides/emulator-testing.md.

PlatformIO Compatibility: .eh_frame Strip

On supported release builds, fbuild may strip unused GCC .eh_frame unwind metadata to reduce firmware size. The policy, opt-out controls, and rationale are documented in docs/reference/platformio-compatibility.md.

Supported Platforms

fbuild supports AVR, MegaAVR, Renesas RA, ESP8266, ESP32 variants, CH32 RISC-V, Teensy, STM32, SAM/SAMD, RP2040/RP2350, Nordic NRF52, Apollo3, Silicon Labs EFR32, NXP LPC, and WASM via Emscripten.

For the canonical per-board CI badge matrix, support table, and board-family notes, see docs/BOARD_STATUS.md or the platforms docs.

Project Structure

The repository is a Rust workspace with a Python package boundary. The human development guide is docs/development/, and the crate dependency map is crates/CLAUDE.md.

Architecture

Architecture docs are decentralized under docs/architecture/. Start with docs/architecture/overview.md, then follow the subsystem-specific docs.

Development

Testing, troubleshooting, linting, release, and local setup instructions live in docs/development/. Project-wide rules for contributors and LLM agents are in CLAUDE.md.

License

In the spirit of Dan Garcia's permissively licensed software, fbuild is presented as free software.

BSD 3-Clause License

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fbuild-2.2.29-cp310-abi3-win_amd64.whl (16.7 MB view details)

Uploaded CPython 3.10+Windows x86-64

fbuild-2.2.29-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

fbuild-2.2.29-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (15.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

fbuild-2.2.29-cp310-abi3-macosx_11_0_arm64.macosx_10_12_x86_64.whl (15.6 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file fbuild-2.2.29-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: fbuild-2.2.29-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 16.7 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for fbuild-2.2.29-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5de4f1894ccf23a7d3a96416e014743423e20cc363bb997a3db0af76acb618ce
MD5 b96ab5b574109b61d908b0b2d1cf12ec
BLAKE2b-256 7c3f5a1dd202ef0ba2fe9b309945c407e6014391d710c58691b9682633ed33ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbuild-2.2.29-cp310-abi3-win_amd64.whl:

Publisher: release-auto.yml on FastLED/fbuild

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fbuild-2.2.29-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbuild-2.2.29-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b6638b5e88b8e2964d8aae79cd15e170a09e2cd19f4e90b4950ca1769af7f3ab
MD5 19e88dec7072b1d0cb709ca1c942d0b9
BLAKE2b-256 349d5827ada53f673828865bbe6d4e444a88866698a1634fa443c07d0005ecec

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbuild-2.2.29-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release-auto.yml on FastLED/fbuild

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fbuild-2.2.29-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbuild-2.2.29-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f006a047142c2ddacc1c6384a2dc6c3adb62570bdf350b0b9fc27bb9fbe970e3
MD5 1b612671a0d4d2867db4368be0c211c0
BLAKE2b-256 13d5c3d65e9f3b2dea8d236b0ab4a9b55bf8e454c6e7337da99c0aa36e57087e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbuild-2.2.29-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release-auto.yml on FastLED/fbuild

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fbuild-2.2.29-cp310-abi3-macosx_11_0_arm64.macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fbuild-2.2.29-cp310-abi3-macosx_11_0_arm64.macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 964e356d5187c4d146c2f31ce690ee64c3ca9956b145a46a3b87897c42e35e1c
MD5 81c816c8176ffcf3cf680ce93c97ad4e
BLAKE2b-256 31c41a2aafb6864aa0db6cf77017c8c8fc3633ac200737c383d3123f177fa25a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbuild-2.2.29-cp310-abi3-macosx_11_0_arm64.macosx_10_12_x86_64.whl:

Publisher: release-auto.yml on FastLED/fbuild

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page