J. Nick Koston
abefd0a90a
[scheduler] Revert cleanup_slow_path_ return type change
...
Put cleanup_slow_path_'s return back to bool (items_ non-empty after
cleanup) as a proper slow-path for the cleanup_() wrapper. The MAX
threshold gate in Scheduler::call() reads to_remove_count_() directly
— it's a plain atomic/uint32_t load (cheap on all platforms) and
matches the pre-refactor semantic of gating on the fresh post-cleanup
value.
2026-04-23 05:43:06 -05:00
J. Nick Koston
4d9e297a0c
[scheduler] Drop redundant process_defer_queue_ wrapper
...
After the snapshot-counter refactor, Scheduler::call() only invokes the
defer-queue slow path when snap_defer > 0 — it never calls the
fast-path wrapper. The wrapper is dead code; drop it and rename
process_defer_queue_slow_path_ back to process_defer_queue_ since
there is nothing left to disambiguate.
2026-04-23 05:40:02 -05:00
J. Nick Koston
ecbc249d7a
[scheduler] Snapshot cross-thread counters once per Scheduler::call()
...
On ESPHOME_THREAD_MULTI_NO_ATOMICS (BK72xx is the sole target — ARMv5TE,
no LDREX/STREX, so std::atomic is off), the per-helper _empty_() fast
paths fall back to "always take the lock". That means Scheduler::call()
paid a separate FreeRTOS mutex round-trip for each of:
- process_defer_queue_ (defer_empty_)
- process_to_add (to_add_empty_)
- cleanup_ (to_remove_empty_)
on every iteration, even on idle ticks where all three counters are
zero. Each round-trip is ~5-10us on BK72xx, adding ~75ms/min of
main-loop overhead at ~3100 iter/min. This matched the measured gap
between BK72xx (sched=125ms/min) and RTL87xx (sched=19ms/min) for
identical code.
Snapshot all three counters once at the top of Scheduler::call():
- NO_ATOMICS: single LockGuard, read three plain uint32_t fields.
- ATOMICS: three relaxed atomic loads (free, same order as the
per-helper fast paths).
- SINGLE: untouched — the existing direct container checks are
already cheap with no concurrent writers.
The three skip-work gates below then branch on the snapshot instead of
each calling its own _empty_() (and re-locking on NO_ATOMICS). When a
gate fires, the slow path is invoked directly so it still acquires the
lock fresh to read container state.
After process_defer_queue_slow_path_ runs, resnapshot to_add_count_ and
to_remove_: callbacks dispatched by the defer queue can call
set_timeout/set_interval/cancel_*, which mutate those counters. Missing
that refresh would cause the subsequent process_to_add / cleanup_ gates
to skip freshly-queued work for one tick. The defer queue itself is
drained inside the slow path so snap_defer is consumed by the single
call.
Measured on BK7238/BK7231N while debugging overhead alongside
libretiny-eu/libretiny#360 .
2026-04-23 05:38:10 -05:00
PolarGoose
43a371caab
[dsmr] Small refactoring: Move Aes128GcmDecryptorImpl type inside esphome::dsmr namespace. ( #15940 )
2026-04-23 04:08:49 -05:00
dependabot[bot]
64290d32a1
Bump aioesphomeapi from 44.20.0 to 44.21.0 ( #15941 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-23 03:32:12 -05:00
J. Nick Koston
9685d4eb0b
[core] feed_wdt wraps feed_wdt_with_time ( #15932 )
2026-04-23 01:15:44 -05:00
Keith Burzinski
4c2efd4165
[radio_frequency] Add experimental radio_frequency entity type (base component + API) ( #15556 )
2026-04-23 01:15:25 -05:00
J. Nick Koston
6f00ea1457
[core] Move host socket-select wake mechanism into wake.h/wake.cpp ( #15931 )
2026-04-23 15:53:10 +12:00
Jonathan Swoboda
a881121110
[ota] Make set_auth_password() lambda-callable via empty-password opt-in ( #15928 )
2026-04-22 23:06:31 -04:00
dependabot[bot]
f8167c9a70
Bump aioesphomeapi from 44.19.0 to 44.20.0 ( #15936 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-23 02:40:19 +00:00
Jesse Hills
e1d629f0d2
[time] Handle Windows EINVAL when validating POSIX TZ strings ( #15934 )
2026-04-23 14:35:13 +12:00
Clyde Stubbs
224cc7b419
[lvgl] Triggers on tabview tabs fix ( #15935 )
2026-04-23 14:35:00 +12:00
Jesse Hills
4d4347d33a
Merge branch 'release' into dev
2026-04-23 14:10:54 +12:00
Jesse Hills
6ca5b31fab
Merge pull request #15933 from esphome/bump-2026.4.2
...
2026.4.2
2026.4.2
2026-04-23 14:10:10 +12:00
dependabot[bot]
17f9269841
Update wheel requirement from <0.47,>=0.43 to >=0.43,<0.48 ( #15926 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 19:12:15 -05:00
dependabot[bot]
6253947311
Bump click from 8.3.2 to 8.3.3 ( #15927 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 19:12:02 -05:00
Jesse Hills
00b71208a6
Bump version to 2026.4.2
2026-04-23 11:18:39 +12:00
Keith Burzinski
76eb8f697f
[usb_uart] Derive TX output chunk count from buffer_size config ( #15909 )
2026-04-23 11:18:39 +12:00
Jonathan Swoboda
2a3bd8bc85
[io_expanders] Self-heal interrupt-driven expanders when INT stays asserted across the read ( #15923 )
2026-04-23 11:18:39 +12:00
Keith Burzinski
629da4d878
[esp32] Add Secure Boot V1 ECDSA signing scheme for pre-rev-3.0 ESP32 ( #15882 )
2026-04-23 11:18:39 +12:00
Jonathan Swoboda
5c2ceb63e0
[ld2412] Fix null deref in set_basic_config when entities unconfigured ( #15893 )
2026-04-23 11:18:39 +12:00
Jonathan Swoboda
92cb6dd7fd
[core] Fix Pvariable placement new losing subclass identity ( #15881 )
2026-04-23 11:18:39 +12:00
Jonathan Swoboda
06e5931ad7
[image] Fix rodata bloat for multi-frame RGB565+alpha animations ( #15873 )
2026-04-23 11:18:39 +12:00
Clyde Stubbs
dc5b06285d
[lvgl] Fix update of textarea attached to keyboard ( #15866 )
2026-04-23 11:18:38 +12:00
Clyde Stubbs
3d0a2421a6
[lvgl] Fix overloads for setting images on styles ( #15864 )
2026-04-23 11:18:38 +12:00
Clyde Stubbs
22f6791dea
[lvgl] Fix format of hello world page ( #15868 )
2026-04-23 11:18:38 +12:00
Keith Burzinski
70b1d9a087
[api_protobuf] Support compound ifdef conditions in proto generator ( #15930 )
2026-04-22 17:57:15 -05:00
Keith Burzinski
36720c8495
[usb_uart] Derive TX output chunk count from buffer_size config ( #15909 )
2026-04-23 09:16:14 +12:00
Jonathan Swoboda
c48ab2ef92
[io_expanders] Self-heal interrupt-driven expanders when INT stays asserted across the read ( #15923 )
2026-04-23 09:05:15 +12:00
Keith Burzinski
162ee2ecaf
[i2s_audio] Split speaker into base class and standard subclass ( #15404 )
2026-04-22 14:40:18 -05:00
Asela Fernando
a73bac0b5f
[ac_dimmer] Zero-crossing interrupt type ( #15862 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-22 14:57:53 -04:00
Rishab Mehta
4e84611ae7
[internal_temperature] Fix internal Temperature discrepancy on BK7231T ( #15771 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-22 17:50:59 +00:00
PolarGoose
ea2e36e55a
[dsmr] Improve performance. Add missing sensors. Remove Crypto-no-arduino. ( #15875 )
2026-04-22 13:49:14 -04:00
Michael Turner
fcbc4d64fe
[one_wire] Reset bus before SKIP ROM command ( #14669 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-04-22 13:20:02 -04:00
Timothy
dcd103cec0
[cse7761] bidirectional active power ( #15162 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-22 13:11:18 -04:00
Ludovic BOUÉ
5e715692d6
[network] Reorder IPv6 configuration for network components ( #11694 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-22 17:01:20 +00:00
rwrozelle
d5263cd46e
[esp32] add watchdog_timeout configuration variable ( #15908 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-22 13:01:23 +00:00
J. Nick Koston
c399cd2fa2
[core] RAII guard for component loop phase ( #15897 )
2026-04-22 14:04:29 +02:00
J. Nick Koston
f6bf6dc8e5
[core] Dedupe yield() fast path in wakeable_delay and always-inline ( #15915 )
2026-04-22 13:52:40 +02:00
J. Nick Koston
e35b435f02
[libretiny] Inline xTaskGetTickCount() for millis() fast path ( #15918 )
2026-04-22 13:52:27 +02:00
J. Nick Koston
886cd7ab72
[core] Collapse adjacent USE_HOST ifdef blocks in Application ( #15914 )
2026-04-22 07:47:01 -04:00
dependabot[bot]
73714dc489
Bump aioesphomeapi from 44.18.0 to 44.19.0 ( #15920 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 12:26:25 +02:00
dependabot[bot]
5218bbd791
Update argcomplete requirement from >=2.0.0 to >=3.6.3 ( #15921 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 12:19:47 +02:00
J. Nick Koston
23ad30cb4c
[esp32] Use xTaskGetTickCount() for millis() when tick rate is 1kHz ( #15661 )
2026-04-22 06:44:53 +02:00
J. Nick Koston
a3b49d1ed9
[core] Use MAC_ADDRESS_BUFFER_SIZE constant instead of duplicated literal ( #15913 )
2026-04-22 04:43:33 +00:00
J. Nick Koston
9c80cbf19c
[light] Reduce validate_ clamp code size and speed up unit-range clamps ( #15728 )
2026-04-22 16:34:26 +12:00
J. Nick Koston
699cf9690a
[core] Optimize value_accuracy_to_buf to avoid snprintf ( #15596 )
2026-04-22 16:31:34 +12:00
J. Nick Koston
67576d4879
[rp2040] Tune oversized lwIP defaults for ESPHome ( #14843 )
2026-04-22 06:29:13 +02:00
J. Nick Koston
edcf96d057
[wifi] Use queue abstraction for LibreTiny WiFi events ( #15343 )
2026-04-22 06:24:09 +02:00
dependabot[bot]
bb81c91d0c
Update tzdata requirement from >=2021.1 to >=2026.1 ( #15911 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 03:08:58 +00:00