J. Nick Koston
325d9db499
[esp8266] Replace delay() with yield loop to allow GC of original millis
...
Arduino's ::delay() is implemented in core_esp8266_wiring.cpp alongside
millis(). Because __delay calls millis() within the same compilation
unit, --wrap=millis can't intercept that intra-object reference, which
prevents the linker from garbage-collecting the original millis body
(~80 bytes of IRAM).
Replace esphome::delay() with a simple yield loop that uses our fast
millis() accumulator. This has the same behavior as Arduino's delay:
feeds the watchdog and processes SDK tasks via yield(), keeping WiFi
alive. With __delay unreferenced, the linker can now GC both __delay
and the original millis function.
2026-04-11 22:56:59 -10:00
J. Nick Koston
dff6199fc8
[esp8266] Add USE_FAST_MILLIS_ACCUMULATOR define for benchmark guard
2026-04-11 22:37:45 -10:00
J. Nick Koston
16f7effcf3
[esp8266] Fix clang-format: drop trailing underscore from static function
2026-04-11 22:21:57 -10:00
J. Nick Koston
406546876a
[esp8266] Replace millis() with fast accumulator, wrap Arduino callers
...
Arduino ESP8266's millis() uses 4x 64-bit multiplies with magic
constants to convert system_get_time() to ms while tracking overflow.
On the LX106 (no hardware multiply-high instruction), each 64-bit
multiply goes through the __umulsidi3 software helper — costing
~3.3 us per call.
Replace with a simple accumulator that tracks a running millis counter
from system_get_time() deltas using pure 32-bit integer ops (subtract,
add, compare, subtract). No 64-bit math, no __umulsidi3.
Use -Wl,--wrap=millis to intercept all ::millis() calls site-wide so
Arduino libraries and ISR handlers (Wiegand, ZyAura) also get the fast
version. Brief interrupt disable (~125 ns) protects the static state.
Overflow safety: unsigned 32-bit delta arithmetic handles the 71-minute
system_get_time() wrap correctly for one wrap. ESPHome calls millis()
thousands of times per second, so missing a full wrap is not a realistic
concern. At boot, both the accumulator and system_get_time() start at 0,
so no special initialization is needed.
Benchmarked on real ESP8266 hardware:
Before: 3348 ns/call (Arduino 4x 64-bit multiply)
After: ~800-900 ns/call (accumulator, estimated)
2026-04-11 22:16:38 -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
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
Kevin Ahrendt
d3591c8d9e
[micro_wake_word] Pin esp-nn version ( #15628 )
2026-04-10 15:21:26 -04:00
J. Nick Koston
ec420d5792
[api] Add (inline_encode) proto option for sub-message inlining ( #15599 )
2026-04-10 15:33:56 +12: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
Jesse Hills
c04dfa922e
[hbridge] Move light pin switching to loop ( #15615 )
2026-04-10 14:02:49 +12:00
Jesse Hills
668007707d
[CI] Add org fork detection warning to auto-label PR workflow ( #15588 )
2026-04-10 12:13:22 +12:00
dependabot[bot]
ab71f5276f
Bump ruff from 0.15.9 to 0.15.10 ( #15609 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-09 19:36:25 +00:00
Jonathan Swoboda
d062f62656
[sx127x][cc1101] Disable loop when packet mode is inactive ( #15606 )
2026-04-09 15:00:52 -04: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
8f6d489a9a
[ci] Use --base-only for memory impact builds ( #15598 )
2026-04-09 11:48:33 -04:00
J. Nick Koston
dd07fba943
[socket] Document ready() contract: callers must drain or track ( #15590 )
2026-04-09 11:48:18 -04:00
J. Nick Koston
6f5d642a31
[gdk101] Increase reset retries for slow-booting sensor MCU ( #15584 )
2026-04-09 11:48:10 -04:00
dependabot[bot]
2721f08bcc
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-09 10:03:58 +00:00
J. Nick Koston
eafc5df3f2
[safe_mode] Combine related OTA rollback log messages ( #15592 )
2026-04-09 05:30:39 +00:00
J. Nick Koston
46d0c29be5
[safe_mode] Use loop component start time instead of millis() ( #15591 )
2026-04-09 05:20:32 +00:00
J. Nick Koston
abdbbf4dd2
[api] Fix ListEntitiesRequest not read due to LWIP rcvevent tracking ( #15589 )
2026-04-09 02:14:01 +00:00
Jesse Hills
4dc0599a7d
Merge branch 'beta' into dev
2026-04-09 13:41:27 +12:00
Jesse Hills
ded0936b2a
Merge pull request #15587 from esphome/bump-2026.4.0b1
...
2026.4.0b1
2026.4.0b1
2026-04-09 13:40:37 +12:00
Jesse Hills
52c35ec09c
Bump version to 2026.5.0-dev
2026-04-09 11:28:48 +12:00
J. Nick Koston
76490e45bc
[ci] Fix status-check-labels workflow flooding CI queue ( #15585 )
2026-04-08 13:08:29 -10:00
Angel Nunez Mencias
0a8130858c
[ade7953_spi] Fix SPI mode on esp-idf ( #14824 )
...
Co-authored-by: Copilot Autofix powered by AI <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-08 22:57:53 +00:00
Jesse Hills
ff5ba99d16
Bump version to 2026.4.0b1
2026-04-09 10:39:13 +12:00
Clyde Stubbs
14ec82084b
[rpi_dpi_rgb][qspi_dbi] Add deprecation warnings ( #15583 )
2026-04-09 10:35:09 +12: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
d4cce142c5
[api] Fix batch messages stuck in Nagle buffer ( #15581 )
2026-04-08 21:11:31 +00: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
J. Nick Koston
4a18ef87d7
[codegen] Fix templatable float type to use cg.float_ ( #15568 )
2026-04-08 20:23:36 +00:00
Jonathan Swoboda
2cd92a311b
[esp32] Capture both cores' backtraces in crash handler ( #15559 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-04-08 20:14:18 +00:00
J. Nick Koston
94f1e48d95
[esp32] Preserve crash data across OTA rollback reboots ( #15578 )
2026-04-08 16:09:43 -04:00
Jonathan Swoboda
19c8f0ac7a
[zephyr] Fix user overlay only emitting first property ( #15560 )
2026-04-08 09:46:36 -10:00
J. Nick Koston
312dea7ddb
[json] Fix heap buffer overflow in SerializationBuffer truncation path ( #15566 )
2026-04-08 19:46:16 +00:00
Jonathan Swoboda
fb0033947c
[qspi_dbi] Connect _validate to CONFIG_SCHEMA ( #15563 )
2026-04-08 09:45:43 -10:00