mirror of
https://github.com/esphome/esphome.git
synced 2026-09-02 02:56:01 +00:00
29dcf9fc5176a84bcf27e98411c5a665028af7c4
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).
Description
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Readme
Multiple Licenses
585 MiB
Languages
C++
56.1%
Python
43.3%
C
0.3%
JavaScript
0.2%
