J. Nick Koston
9a022baa06
[core] Optimize main loop with -O2
...
Add __attribute__((optimize("O2"))) to the main loop functions
(loop_task on ESP32, codegen loop() on other platforms) so GCC
inlines scheduler helpers and loop bookkeeping more aggressively.
Under -Os, GCC outlines small functions (Scheduler::call helpers,
millis conversions, etc.) that are called every loop iteration.
With -O2, these get inlined into the loop body, reducing call
overhead on the hottest code path in the firmware.
ESP32: loop_task grows from 303 to 416 bytes (+113 bytes).
ESP8266: no change (already fully inlined via ESPHOME_ALWAYS_INLINE).
2026-04-12 20:06:34 -10:00
J. Nick Koston
d9762759c0
Merge branch 'benchmark-use-os-optimization' into proto-speed-optimized-v2
2026-04-12 19:30:45 -10:00
J. Nick Koston
d217ab3cd4
[api] Add speed_optimized proto option for hot encode paths
...
Add a new (speed_optimized) message option that emits
__attribute__((optimize("O2"))) on the generated encode() and
calculate_size() methods. Under -Os, GCC does not inline the small
ProtoEncode helpers (write_raw_byte, encode_varint, etc.) into the
generated methods, causing significant overhead on hot paths.
Apply to SensorStateResponse and BluetoothLERawAdvertisementsResponse
which are the highest-frequency encode paths.
2026-04-12 19:23:39 -10:00
J. Nick Koston
70dd732821
[api] Add speed_optimized proto option for hot encode paths
...
Add a new (speed_optimized) message option that emits
__attribute__((optimize("O2"))) on the generated encode() and
calculate_size() methods. Under -Os, GCC does not inline the small
ProtoEncode helpers (write_raw_byte, encode_varint, etc.) into the
generated methods, causing significant overhead on hot paths.
Apply to SensorStateResponse and BluetoothLERawAdvertisementsResponse
which are the highest-frequency encode paths.
2026-04-12 19:21:47 -10:00
J. Nick Koston
9acfeec431
Merge branch 'dev' into benchmark-use-os-optimization
2026-04-12 18:40:32 -10:00
J. Nick Koston
02f828fcbf
[benchmark] Use -Os to match firmware optimization level
...
CodSpeed benchmarks were building with -O2, while all firmware
targets (ESP8266, ESP32, LibreTiny) use -Os. This mismatch means
the benchmarks cannot detect inlining regressions that affect real
devices — GCC under -O2 inlines functions that -Os outlines due to
its size-conscious cost model.
Switch to -Os with -ffunction-sections/-fdata-sections for proper
dead-code stripping (needed because -Os preserves references that
-O2 optimizes away at compile time).
2026-04-12 18:37:50 -10:00
J. Nick Koston
ab64916c37
[benchmark] Use -Os to match firmware optimization level
...
CodSpeed benchmarks were building with -O2, while all firmware
targets (ESP8266, ESP32, LibreTiny) use -Os. This mismatch means
the benchmarks cannot detect inlining regressions that affect real
devices — GCC under -O2 inlines functions that -Os outlines due to
its size-conscious cost model.
Remove the -Os unflag and -O2 override so benchmarks use the
platform default -Os, matching what actually runs on devices.
2026-04-12 18:32:03 -10:00
Jonathan Swoboda
ac8a2467a5
[core] Fix PlatformIO progress bar rendering in subprocess mode ( #15681 )
2026-04-12 22:51:55 -04:00
Jesse Hills
dc1dd9ebb7
Merge branch 'beta' into dev
2026-04-13 12:45:02 +12:00
Jesse Hills
0c06d78a4f
Merge pull request #15675 from esphome/bump-2026.4.0b2
...
2026.4.0b2
2026.4.0b2
2026-04-13 12:44:27 +12:00
schrob and J. Nick Koston
41c9ed28cd
[esp32] Use static stack memory for loop task instead of heap ( #15659 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-04-12 23:23:01 +00:00
Jesse Hills
5608aa10a5
[CI] Don't run label workflow on closed/merged PRs ( #15678 )
2026-04-12 12:46:49 -10:00
Javier Peletier
daa68a2a60
[packages] fix support packages: !include mypackages.yaml ( #15677 )
2026-04-13 09:48:30 +12:00
Jesse Hills
a408b5a4fe
Bump version to 2026.4.0b2
2026-04-13 08:48:19 +12:00
Clyde Stubbs and Jesse Hills
e264c97454
[lvgl] Fix use of rotation on host SDL ( #15611 )
...
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2026-04-13 08:48:19 +12:00
J. Nick Koston
8790dec137
[packages] Fix false deprecation warning and wrong error paths in nested packages ( #15605 )
2026-04-13 08:48:19 +12:00
Jonathan Swoboda
6480868e6e
[esp32] Bump platform to 55.03.38, Arduino to 3.3.8, ESP-IDF to 5.5.4 ( #15666 )
2026-04-13 08:48:19 +12:00
Jonathan Swoboda
0578e43352
[canbus] Fix canbus.send can_id compile error ( #15668 )
2026-04-13 08:48:19 +12:00
Jonathan Swoboda
2a89d4835f
[mdns] Bump espressif/mdns to 1.11.0 ( #15670 )
2026-04-13 08:48:19 +12:00
dependabot[bot]
5084c61016
Bump aioesphomeapi from 44.13.2 to 44.13.3 ( #15641 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-13 08:48:19 +12:00
dependabot[bot]
b45f94d511
Bump aioesphomeapi from 44.13.1 to 44.13.2 ( #15637 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-13 08:48:18 +12:00
J. Nick Koston and Copilot
66a4752e13
[rp2040] Fix W5500 Ethernet pbuf corruption by mirroring LWIPMutex semantics ( #15624 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-04-13 08:48:18 +12:00
Jonathan Swoboda
4d4f78de81
[sx127x][cc1101][sx126x] Use GPIO interrupt to wake loop ( #15627 )
2026-04-13 08:48:18 +12:00
Kevin Ahrendt
0faa641c8a
[micro_wake_word] Pin esp-nn version ( #15628 )
2026-04-13 08:48:18 +12:00
J. Nick Koston
0f16d27a72
[api] Add (inline_encode) proto option for sub-message inlining ( #15599 )
2026-04-13 08:48:18 +12:00
J. Nick Koston
835ee456a5
[mcp23016] Add interrupt pin support ( #15616 )
2026-04-13 08:48:18 +12:00
J. Nick Koston
17f3b7dbd5
[pca6416a] Add interrupt pin support ( #15614 )
2026-04-13 08:48:18 +12:00
J. Nick Koston
171a429526
[tca9555] Add interrupt pin support ( #15613 )
2026-04-13 08:48:18 +12:00
Jesse Hills
e4ee2b7c04
[hbridge] Move light pin switching to loop ( #15615 )
2026-04-13 08:48:18 +12:00
Jonathan Swoboda
c85a062e23
[sx127x][cc1101] Disable loop when packet mode is inactive ( #15606 )
2026-04-13 08:48:18 +12:00
J. Nick Koston
873378fa1f
[gdk101] Increase reset retries for slow-booting sensor MCU ( #15584 )
2026-04-13 08:48:18 +12:00
dependabot[bot]
4f00ad409e
Bump aioesphomeapi from 44.12.0 to 44.13.1 ( #15600 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-13 08:48:18 +12:00
J. Nick Koston
20b516ff11
[api] Fix ListEntitiesRequest not read due to LWIP rcvevent tracking ( #15589 )
2026-04-13 08:48:18 +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
Jonathan Swoboda
e6318a2d16
[mdns] Bump espressif/mdns to 1.11.0 ( #15670 )
2026-04-12 09:54:30 -10:00
Jonathan Swoboda
bef4c8a86c
[cc1101] Extract chip configuration into configure() method ( #15635 )
2026-04-11 17:36:27 -04:00
Farmer-shin
6e67864510
[epaper_spi] Add Waveshare 3.97inch E-Paper Display ( #15466 )
2026-04-11 21:27:25 +10:00
dependabot[bot]
c2af4874f9
Bump aioesphomeapi from 44.13.2 to 44.13.3 ( #15641 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-11 08:58:20 +00:00
dependabot[bot]
2001b91280
Bump resvg-py from 0.3.0 to 0.3.1 ( #15640 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-11 08:57:39 +00:00
dependabot[bot]
5460ee7edd
Bump aioesphomeapi from 44.13.1 to 44.13.2 ( #15637 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 15:55:15 -10:00
J. Nick Koston and Copilot
40081e5ae7
[rp2040] Fix W5500 Ethernet pbuf corruption by mirroring LWIPMutex semantics ( #15624 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-04-10 13:13:05 -10:00
Jonathan Swoboda
a7c5b0ab46
[sx127x][cc1101][sx126x] Use GPIO interrupt to wake loop ( #15627 )
2026-04-10 16:26:09 -04:00
dependabot[bot]
e1a813e11f
Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 ( #15630 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 10:21:01 -10:00
dependabot[bot]
1dfeef0265
Bump actions/github-script from 8.0.0 to 9.0.0 ( #15632 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 10:20:43 -10:00
dependabot[bot]
395610c117
Bump docker/build-push-action from 7.0.0 to 7.1.0 in /.github/actions/build-image ( #15633 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 10:20:17 -10:00
dependabot[bot]
ae96f82b82
Bump actions/upload-artifact from 7.0.0 to 7.0.1 ( #15631 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 10:20:04 -10:00
dependabot[bot]
2c610abcd0
Bump resvg-py from 0.2.6 to 0.3.0 ( #15629 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 10:19:52 -10:00