Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/benchmark-build-comparison.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
branches: [main]
paths:
- 'bench/blink/**'
- 'bench/fastled-examples/src/build_comparison.rs'
- 'bench/fastled-examples/src/build_comparison*.rs'
- 'bench/fastled-examples/Cargo.toml'
- '.github/workflows/benchmark-build-comparison.yml'
schedule:
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ The current inventory is auto-published to a stable tracking issue every Monday

## Key Constraints

- **No file-based locks** — all locking through daemon's in-memory managers
- **No file-based locks, with one sanctioned exception** — almost all synchronization is through the daemon's in-memory managers. The narrow exception is fbuild-daemon startup/lifetime root-ownership and spawn-herd election (soldr-style, FastLED/fbuild#1159): a version-blind `root-owner.lock` held for the daemon's whole lifetime, plus a `spawn.lock` single-flight election for concurrent CLI spawns. zccache compile/object access keeps its own zccache-internal in-memory synchronization — these locks never gate cache reads/writes. Locks are OS-released on process death and must never be manually broken or deleted.
- **Dev mode isolation** — `FBUILD_DEV_MODE=1` → `~/.fbuild/dev/`. The daemon endpoint is no longer a fixed port: it's derived per (backend version + cache identity) in the IANA dynamic range 49152–65535 (`fbuild_paths::default_daemon_port` / `daemon_endpoint_key`), so different-version checkouts get isolated daemons and can't serve each other wrong-version builds (FastLED/fbuild#1009). Override with `FBUILD_DAEMON_PORT`.
- **HTTP API compatibility** — same endpoints and JSON schemas as the Python daemon
- **Windows USB-CDC** — 30 retries, aggressive buffer drain, DTR/RTS toggling after flash
Expand Down
4 changes: 4 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ bytes = "1"
uuid = { version = "1", features = ["v4"] }
base64 = "0.22"
futures = "0.3"
fs2 = "0.4"
tokio-tungstenite = "0.24"
async-trait = "0.1"
dashmap = "6"
Expand Down
2 changes: 1 addition & 1 deletion agents/docs/commands-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ help text).
| Command | Use this when | See more |
|---|---|---|
| `fbuild build` | You want to compile firmware for the env specified by `-e <env>` and `<project_dir>`. The default path; cache via daemon. | `fbuild help build` |
| `fbuild clean sketch|all` | You want to remove one environment/profile's project outputs, optionally including its exact reusable framework-cache entries, without compiling or deploying. | `fbuild help clean`, FastLED/fbuild#1089 |
| `fbuild clean sketch|all|cache` | You want to remove one target's project outputs, optionally its reusable framework objects; `cache` additionally resets the active mode's global compiler-object cache while retaining installed packages/toolchains. | `fbuild help clean`, FastLED/fbuild#1089, FastLED/fbuild#1154 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Escape the pipes — the table row is broken (MD056).

The | characters in sketch|all|cache are parsed as column delimiters, so this row expands to 5 cells against a 3-column table and renders incorrectly. Escape them as \|.

Proposed fix
-| `fbuild clean sketch|all|cache` | You want to remove one target's project outputs, optionally its reusable framework objects; `cache` additionally resets the active mode's global compiler-object cache while retaining installed packages/toolchains. | `fbuild help clean`, FastLED/fbuild#1089, FastLED/fbuild#1154 |
+| `fbuild clean sketch\|all\|cache` | You want to remove one target's project outputs, optionally its reusable framework objects; `cache` additionally resets the active mode's global compiler-object cache while retaining installed packages/toolchains. | `fbuild help clean`, FastLED/fbuild#1089, FastLED/fbuild#1154 |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| `fbuild clean sketch|all|cache` | You want to remove one target's project outputs, optionally its reusable framework objects; `cache` additionally resets the active mode's global compiler-object cache while retaining installed packages/toolchains. | `fbuild help clean`, FastLED/fbuild#1089, FastLED/fbuild#1154 |
| `fbuild clean sketch\|all\|cache` | You want to remove one target's project outputs, optionally its reusable framework objects; `cache` additionally resets the active mode's global compiler-object cache while retaining installed packages/toolchains. | `fbuild help clean`, FastLED/fbuild#1089, FastLED/fbuild#1154 |
🧰 Tools
🪛 LanguageTool

[style] ~15-~15: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...| fbuild clean sketch|all|cache | You want to remove one target's project outputs, op...

(REP_WANT_TO_VB)

🪛 markdownlint-cli2 (0.23.0)

[warning] 15-15: Table column count
Expected: 3; Actual: 5; Too many cells, extra data will be missing

(MD056, table-column-count)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@agents/docs/commands-reference.md` at line 15, Escape the pipe separators in
the `fbuild clean sketch|all|cache` command text within the commands-reference
table as `\|`, preserving the three-column table structure and all other row
content.

Source: Linters/SAST tools

| `fbuild deploy` | You want to build AND flash to a connected board. Pass `--monitor` to attach the monitor after flash. | `fbuild help deploy` |
| `fbuild monitor` | You want to attach the serial monitor to an already-running board without re-flashing. | `fbuild help monitor` |
| `fbuild reset` | You want to reset the device without re-flashing. | `fbuild help reset` |
Expand Down
12 changes: 9 additions & 3 deletions bench/blink/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,17 @@ distribution is pinned independently: `arduino:avr@1.8.8` for Arduino CLI and

Each tool is measured for three trials by default:

- **Cold** removes project outputs and matching compiled framework caches before
compiling. Installed toolchains/framework packages and global
download/compiler caches remain available.
- **Cold** removes every tool's project outputs, reusable framework objects,
and compiler-object caches before compiling. Arduino CLI and PlatformIO
download/HTTP caches are also cleared. Installed packages/toolchains and
fbuild package archives remain available.
- **Warm** immediately repeats the same build without changing any input.

Cleanup runs before the timer for every cold trial. Arduino CLI runs
`arduino-cli cache clean` and removes its build directory; PlatformIO runs
`pio system prune --cache --force` and its project clean target; fbuild runs
`fbuild clean cache`. None of these operations uninstalls the pinned packages.

The Rust runner records every trial and publishes the median. Cold bars are
drawn behind narrower warm overlays using the same GitHub-dark gray, blue, and
red palette as the zccache and soldr benchmark graphics.
Expand Down
2 changes: 2 additions & 0 deletions bench/fastled-examples/src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ Sources for the repository's end-to-end benchmark binaries:
- `main.rs` implements `bench-fastled-examples`.
- `build_comparison.rs` implements the nightly Arduino CLI vs PlatformIO vs
fbuild Blink build comparison and static-site renderer.
- `build_comparison_tests.rs` covers the comparison runner's cold-cache
sequencing, output metadata, and renderer behavior.

See the parent [`README.md`](../README.md) for the FastLED harness and
[`../../blink/README.md`](../../blink/README.md) for the whole-build benchmark.
Loading
Loading