J. Nick Koston
6fe6bf79d4
Address Copilot review: fix namespace and custom separator test
2026-04-09 09:30:06 -10:00
J. Nick Koston
a941422fa6
Add unit tests for format_hex helpers
2026-04-09 08:36:40 -10:00
J. Nick Koston
36ac6e277a
Merge branch 'dev' into optimize-value-accuracy
2026-04-09 07:54:37 -10: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
3b45179948
Split uint32_to_str/frac_to_str into internal and public API
...
- uint32_to_str_(): raw pointer, internal use
- uint32_to_str(): template with compile-time buffer size check
- frac_to_str_(): raw pointer, internal use
- small_pow10(): simplify to ternary chain
2026-04-08 21:01:32 -10:00
J. Nick Koston
e52c3b01e6
Extract buf_append_sep_str helper, add tests
2026-04-08 20:52:51 -10:00
J. Nick Koston
c8e636f253
Add unit tests for small_pow10, uint32_to_str, frac_to_str
2026-04-08 20:51:06 -10:00
J. Nick Koston
d8e586609f
[core] Optimize value_accuracy_to_buf to avoid snprintf
...
Replace snprintf("%.*f") with integer-based formatting for finite
float values with accuracy_decimals 0-3 (covers virtually all sensor
usage). Falls back to snprintf for higher accuracy or NaN/Inf.
Uses lrint() with double cast for the multiply to match snprintf's
rounding behavior exactly. The fast path avoids snprintf's heavy
float formatting machinery entirely.
Also optimizes value_accuracy_with_uom_to_buf to append the UOM
string directly instead of going through snprintf.
Adds C++ unit tests that verify output matches snprintf for a range
of values including edge cases.
Benchmark: 92,961ns -> 6,484ns (14.3x faster, 2000 iterations).
2026-04-08 20:46:16 -10:00
J. Nick Koston
352121b7bf
[core] Add CodSpeed benchmarks for hot helper functions
...
Add benchmarks for format_hex_to, format_hex_pretty_to,
format_mac_addr_upper, fnv1_hash, fnv1a_hash, fnv1_hash_object_id,
parse_hex, crc8, crc16, value_accuracy_to_buf, int8_to_str, and
base64_decode to establish baseline performance data before optimization.
2026-04-08 19:57:37 -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
J. Nick Koston
d9ebe1e1e7
Merge branch 'crash-handler-dual-core' into integration
2026-04-08 09:34:33 -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
J. Nick Koston
ca61dc5d69
Merge remote-tracking branch 'upstream/test_merge_to_beta_again' into integration
2026-04-07 22:48:15 -10:00
J. Nick Koston
7ba5398418
Merge remote-tracking branch 'upstream/templatable-value-specialize' into integration
2026-04-07 22:48:10 -10:00
J. Nick Koston
618ee77e43
Merge remote-tracking branch 'upstream/fix-test-build-include-file' into test_merge_to_beta_again
2026-04-07 22:47:14 -10:00
J. Nick Koston
67f26b6cf7
fix 8266 flash string opt
2026-04-07 22:46:31 -10:00
J. Nick Koston
5079c86d1d
Merge remote-tracking branch 'upstream/templatable-value-specialize' into integration
2026-04-07 21:51:20 -10:00
J. Nick Koston
b53f1c694b
Add test for top-level !include resolution in load_yaml
2026-04-07 21:36:49 -10:00
J. Nick Koston
fe17c86f58
now fix is always the same for unwrapped
2026-04-07 21:32:20 -10:00
J. Nick Koston
e7a33a93eb
Merge branch 'dev' of https://github.com/esphome/esphome into templatable-value-specialize
2026-04-07 19:27:41 -10:00
J. Nick Koston
2a79f91947
Merge remote-tracking branch 'upstream/dev' into integration
2026-04-07 19:14:39 -10:00
J. Nick Koston
f278e12841
Merge remote-tracking branch 'upstream/templatable-value-specialize' into integration
2026-04-07 19:14:36 -10: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
0dfd906cb5
Merge branch 'dev' of https://github.com/esphome/esphome into templatable-value-specialize
2026-04-07 17:09:39 -10: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
2d9e03352c
Merge remote-tracking branch 'upstream/fix-include-file-dumper' into templatable-value-specialize
2026-04-07 16:11:07 -10:00
J. Nick Koston
32fcbc8823
address bot comments
2026-04-07 16:10:40 -10:00
J. Nick Koston
a9ce676151
Merge remote-tracking branch 'upstream/fix-include-file-dumper' into templatable-value-specialize
2026-04-07 16:07:04 -10:00
J. Nick Koston
6d44b37297
Merge branch 'dev' of https://github.com/esphome/esphome into templatable-value-specialize
2026-04-07 16:05:15 -10:00
J. Nick Koston
1d982c47cc
[yaml] Add tests for IncludeFile YAML dumper representer
2026-04-07 16:02:34 -10:00
J. Nick Koston
de7f081799
[emontx] Fix uart package name in tests ( #15546 )
2026-04-07 21:52:37 -04:00
J. Nick Koston
dc9cf44eb1
Merge remote-tracking branch 'upstream/dev' into templatable-value-specialize
2026-04-07 15:48:17 -10: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
J. Nick Koston
0ec4e98374
[core] Expand = delete to catch inconvertible return types, add to_exp test
...
- TemplatableFn = delete now catches both stateful lambdas AND stateless
lambdas with inconvertible return types (e.g., string -> int)
- Add test for to_exp with non-string output_type (lambda-wraps result)
2026-04-07 14:54:41 -10:00
J. Nick Koston
11c24324d5
Merge remote-tracking branch 'upstream/templatable-value-specialize' into integration
2026-04-07 14:31:35 -10:00
J. Nick Koston
7d497e6b52
Merge remote-tracking branch 'upstream/dev' into integration
2026-04-07 14:31:13 -10:00
J. Nick Koston
0dddeea4d2
[core] Assert stateless capture in test, fix TemplatableFn comment
2026-04-07 14:10:18 -10:00
J. Nick Koston
11934ab27f
[sensor] Wrap benchmark filter constants in lambdas for TemplatableFn
2026-04-07 13:49:55 -10:00
Jesse Hills
b307c7c74c
[config_validation] Add unbounded percentage validators ( #15500 )
2026-04-08 11:44:52 +12:00
J. Nick Koston
8cd78441a6
Revert "[sensor] Wrap filter constants in lambdas for TemplatableValue in benchmarks"
...
This reverts commit 5e2187581a .
2026-04-07 13:34:11 -10:00
J. Nick Koston
5e2187581a
[sensor] Wrap filter constants in lambdas for TemplatableValue in benchmarks
2026-04-07 13:26:21 -10:00
J. Nick Koston
9bf0133525
[core] Specialize TemplatableValue for non-string types as function pointer
...
Specialize TemplatableValue so non-string types use function-pointer-only
storage (4 bytes on 32-bit) instead of the tagged union with std::function
support (8 bytes). The std::string specialization retains full support for
VALUE, STATIC_STRING, FLASH_STRING, and stateful lambdas.
Codegen now wraps non-string constants in stateless lambdas automatically,
so the generated C++ always assigns a function pointer.
2026-04-07 13:16:14 -10: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