J. Nick Koston
29dcf9fc51
[core] Use __attribute__((noinline)) on IIFE lambdas to honor attribute
...
The C++ standard-attribute spelling [[gnu::noinline]] placed between a
lambda's parameter list and body binds to the return type, not the
call operator. GCC 14 silently ignores it and emits -Wattributes
warnings at every chunk site. Switch to GCC's __attribute__((...))
syntax which binds to operator() as intended.
Measured impact on apollo-r-pro-1-eth (esp32-s3, -Os) vs the broken
[[gnu::noinline]] version: setup() frame 160 B -> 32 B, peak stack
304 B -> 176 B (another -42%). Flash grows by 888 B because all 86
chunks now stay as separate functions instead of GCC inlining the
small ones (which it was free to do when the attribute was ignored).
Net vs baseline -Os: peak stack 1264 B -> 176 B (-86%); flash
+388 B (<0.05% of a typical esp32 partition).
2026-04-17 15:06:42 -05:00
J. Nick Koston
6b67224286
[core] Chunk setup() into per-component noinline IIFEs
...
Generated setup() is a single monolithic function whose stack frame
scales super-linearly with config size. On a 5,943-line apollo build
the frame reached 1,264 B at -Os; extrapolation onto larger configs
(e.g. the 16k-line LVGL config in #15796 ) plausibly overflows the
8 KB loop task stack before safe_mode can increment its boot counter.
Emit a ComponentMarker sentinel at the start of each component's
to_code output, then have cpp_main_section wrap each component's
block (and sub-splits of up to 50 statements within each block) in a
noinline IIFE lambda. Each lambda's ENTRY frame is released on
return, bounding peak stack to setup() frame + max chunk frame.
Measured on apollo-r-pro-1-eth (esp32-s3, -Os):
setup() frame 1264 B -> 160 B
max chunk frame n/a -> 144 B
peak setup stack 1264 B -> 304 B (-76%)
total flash 792,471 B -> 791,995 B (-476 B)
The brace-depth guard in _wrap_in_noinline_iifes ensures we never
split between the RawStatement("{") / RawStatement("}") pair emitted
by cg.with_local_variable() (currently only wifi), so scoped locals
stay intact.
2026-04-17 15:06:41 -05:00
J. Nick Koston
34c35c84d5
[core] Fix DelayAction compile error with non-const reference args ( #15814 )
2026-04-17 14:31:31 +00:00
Jonathan Swoboda and J. Nick Koston
bcbfc843ae
[ethernet] Fix SPI3_HOST default breaking compile on variants without SPI3 ( #15809 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-17 14:05:30 +00:00
J. Nick Koston
523c6f2376
[core] coerce set_interval(0) / update_interval: 0ms to 1ms ( #15799 )
2026-04-17 02:45:50 -10:00
Clyde Stubbs
1a529a62aa
[mipi_spi] Drawing fixes for native display ( #15802 )
2026-04-17 21:17:16 +10:00
J. Nick Koston
b232fc91ab
[runtime_stats] Track main loop active time and report overhead ( #15743 )
2026-04-16 14:07:26 -10:00
J. Nick Koston
c6ad23fbc0
[bundle] Force-resolve nested IncludeFile during file discovery ( #15762 )
2026-04-16 08:45:33 -10:00
04a58159d0
[zephyr_ble_server] add support for on_numeric_comparison_request ( #14400 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-16 09:43:03 -04:00
J. Nick Koston
4c758fa1da
[time] Fix RTC is_valid() rejecting valid times after day_of_year cleanup ( #15763 )
2026-04-16 09:40:22 -04:00
J. Nick Koston
e48c7165c5
[light] Avoid addressable transition stall at low gamma-corrected values ( #15726 )
2026-04-15 07:45:42 +12:00
J. Nick Koston
79cee864cb
[esphome][ota] Disable loop while idle, wake on listening-socket activity ( #15636 )
2026-04-14 08:20:14 -10:00
J. Nick Koston
da9fbb8044
[core] Fix app_state_ status bits clobbered for non-looping components ( #15658 )
2026-04-14 07:50:11 -10:00
J. Nick Koston
cf01163c8c
[core] Add uint32_to_str helper and use in preferences ( #15597 )
2026-04-14 07:49:44 -10:00
J. Nick Koston
2a530a4bf4
[core] Optimize format_hex_internal by splitting separator loop ( #15594 )
2026-04-14 07:48:33 -10:00
J. Nick Koston
6b4b653462
[globals] Fix TemplatableFn deprecation warning for globals.set ( #15733 )
2026-04-14 09:18:38 -04:00
J. Nick Koston and Copilot Autofix powered by AI
edb16a27d3
[esphome] Skip missing extra flash images in upload_using_esptool ( #15723 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-04-13 16:58:48 -10:00
Jonathan Swoboda
5d0cfc31fa
[core] Move FILTER_PLATFORMIO_LINES into platformio_runner ( #15707 )
2026-04-13 14:18:44 -04:00
J. Nick Koston
4f69c3b850
[benchmark] Add SubscribeLogsResponse encode benchmarks ( #15696 )
2026-04-13 02:03:53 -05:00
Javier Peletier
daa68a2a60
[packages] fix support packages: !include mypackages.yaml ( #15677 )
2026-04-13 09:48:30 +12:00
Clyde Stubbs and Jesse Hills
8754bbfa89
[lvgl] Fix use of rotation on host SDL ( #15611 )
...
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2026-04-12 20:29:11 +00:00
J. Nick Koston
6d92cc3d2b
[packages] Fix false deprecation warning and wrong error paths in nested packages ( #15605 )
2026-04-13 08:24:23 +12:00
Jonathan Swoboda
2f684bf4f3
[esp32] Bump platform to 55.03.38, Arduino to 3.3.8, ESP-IDF to 5.5.4 ( #15666 )
2026-04-12 10:07:04 -10:00
Jonathan Swoboda
45af21bf38
[canbus] Fix canbus.send can_id compile error ( #15668 )
2026-04-12 09:58:51 -10:00
J. Nick Koston
17209df7b5
[mcp23016] Add interrupt pin support ( #15616 )
2026-04-10 15:29:52 +12:00
J. Nick Koston
9cf9b02ba2
[pca6416a] Add interrupt pin support ( #15614 )
2026-04-10 15:29:26 +12:00
J. Nick Koston
c90fa2378a
[tca9555] Add interrupt pin support ( #15613 )
2026-04-10 15:29:00 +12:00
J. Nick Koston
03db32d045
[core] Add CodSpeed benchmarks for hot helper functions ( #15593 )
2026-04-09 07:48:32 -10:00
J. Nick Koston
8e02d0a20e
[fan] Store preset mode vector on Fan entity to eliminate heap allocation ( #15209 )
2026-04-09 10:25:37 +12:00
J. Nick Koston
faa05031a7
[climate] Store custom mode vectors on Climate entity to eliminate heap allocation ( #15206 )
2026-04-09 10:25:29 +12:00
J. Nick Koston
576d89a82a
[api] Peel first write iteration, inline socket writes, zero-gap batch encoding ( #15063 )
2026-04-08 11:05:53 -10:00
Clyde Stubbs
7de060ed55
[lvgl] Fix args for lambda in set_rotation action ( #15555 )
2026-04-09 07:22:24 +12:00
J. Nick Koston
a72609e640
[yaml] Resolve top-level IncludeFile in load_yaml ( #15557 )
2026-04-08 08:39:14 -04:00
J. Nick Koston and Copilot
a8b7c7a4ac
[core] Add TemplatableFn for 4-byte function-pointer templatable storage ( #15545 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-04-08 08:38:00 -04:00
Jonathan Swoboda
9bf53e0ab8
[esp32_hosted] Add SPI transport and SDIO 1-bit bus width support ( #15551 )
2026-04-08 03:17:58 +00:00
J. Nick Koston
e658a8559e
[ethernet] Add W6100 and W6300 support for RP2040 ( #15543 )
2026-04-07 16:57:05 -10:00
J. Nick Koston
4db82877af
[yaml] Add IncludeFile representer to ESPHomeDumper ( #15549 )
2026-04-07 16:27:11 -10:00
J. Nick Koston
de7f081799
[emontx] Fix uart package name in tests ( #15546 )
2026-04-07 21:52:37 -04:00
Clyde Stubbs
88f4067dd6
[lvgl] Implement rotation with PPA ( #15453 )
2026-04-08 13:19:29 +12:00
d20d613c1d
[substitutions] !include ${filename}, Substitutions in include filename paths (package refactor part 5) ( #12213 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-04-07 15:12:55 -10:00
Clyde Stubbs
801f3fadaa
[epaper_spi] Fix deep sleep command ( #15544 )
2026-04-08 13:00:39 +12:00
Jesse Hills
b307c7c74c
[config_validation] Add unbounded percentage validators ( #15500 )
2026-04-08 11:44:52 +12:00
14bcdfe700
[emontx] emonTx component ( #9027 )
...
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-07 22:29:55 +00:00
ee7b38504b
[nextion] Expose custom protocol frames as automation triggers ( #13248 )
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-07 22:13:58 +00:00
J. Nick Koston
5d31f4aeba
[light] Use function-pointer fields in LightControlAction ( #15132 )
2026-04-07 12:00:17 -10:00
Jonathan Swoboda
17ec5389d8
[mcp4461] Fix terminal disable passing string where C++ expects char ( #15528 )
2026-04-07 11:07:28 -10:00
Jonathan Swoboda
9d396cea5a
[grove_tb6612fng] Move direction logic from Python to C++ to fix lambda crash ( #15513 )
2026-04-07 10:56:25 -10:00
J. Nick Koston
ef6c65c7ec
[cli] Add config bundle CLI command for remote compilation ( #13791 )
2026-04-07 10:37:19 -10:00
J. Nick Koston
6460f3a757
[api] Add max_data_length and force to DeviceInfoResponse/HelloResponse proto fields ( #15514 )
2026-04-07 10:24:36 -10:00
J. Nick Koston
0d809a7481
[automation] Add CallbackAutomation dataclass and build_callback_automations helper ( #15246 )
2026-04-07 10:09:27 -10:00