Repository navigation
perf(glyph): retain prepared layout and scoped publication (held) - #310
Draft
thejustinwalsh wants to merge 48 commits into
Draft
thejustinwalsh wants to merge 48 commits into
thejustinwalsh wants to merge 48 commits into
Conversation
thejustinwalsh
added this pull request to stack #293
October 16, 2026 15:15
thejustinwalsh
force-pushed
the
feat/rust-text-input-wire
branch
2 times, most recently
from
October 17, 2026 20:56
02ed1ac to
40078e6
Compare
thejustinwalsh
force-pushed
the
feat/rust-text-input-wire
branch
from
October 18, 2026 16:46
57243ee to
328aedb
Compare
Docs report 📚Advisory only — this never blocks merging. Anything left open is tracked in the
✅ attested · After your last source change, update each concept if it is now wrong, then record what you changed and checked:
|
Package performance:
|
| statistic | baseline | candidate |
|---|---|---|
| Median workload p50 | 5.720ms | 4.050ms |
| Workloads ≤1 ms | 5 | 6 |
| Workloads ≤2 ms | 24 | 27 |
| Workloads ≤3 ms | 32 | 37 |
| Workloads >3 ms | 49 | 44 |
Largest candidate workloads (including neutral results):
| workload | baseline | candidate | Δ time |
|---|---|---|---|
| mutate one trailing span across 1000 formatted labels | 114.62ms | 138.15ms | +23.530ms |
| 1000 labels 100 edits interleaved edit-read publication | 320.65ms | 121.53ms | -199.120ms |
| publish 1024 retained Text instances | 38.97ms | 56.48ms | +17.510ms |
| 1000 labels 100 edits immediate measurements with publication | 245.37ms | 54.86ms | -190.510ms |
| 100 labels interleaved edit-read publication | 61.98ms | 42.05ms | -19.930ms |
faster ◀ ┊ ▶ slower Δ p50 p baseline candidate
- rewrite 512 labels in one group ┊ ▶ +54.3% <.001 ▃█▄▂▁▁▁▁▁▁ ▁▁▁▁▁▁█▄▄▂
- rewrite 64 labels in one group ┊ ├─▶ +51.2% <.001 ▇█▇▅▃▂▁▁▁▁ ▁▁▃█▄▅▆▃▂▂
- rewrite 256 labels in one group ┊ ├─●┤ +47.5% <.001 ▃█▃▂▁▁▁▁▁▁ ▁▁▁▂█▅▄▂▂▂
- rewrite 128 labels in one group ┊ ├─●▶ +46.6% <.001 ▃█▅▇▂▁▁▁▁▁ ▁▁▁▃▇█▄▄▂▂
- publish 1024 retained Text instances ┊ ├─●┤ +45.0% <.001 ▄█▄▁▁▁▁▁▁▁ ▁▁▁▁▇▆▃▂█▄
- relayout after font-size change ┊ ├─●┤ +22.1% <.001 █▅▄▄▂▁▂▁▁▁ ▁▁█▄▄▃▂▂▂▁
- publication after font-size change ┊ ●┤ +20.6% <.001 ▅█▂▁▁▁▁▁▁▁ ▁▁▁▁▂█▅▂▁▁
- mutate one trailing span across 1000 formatted labels ┊ ├●┤ +20.5% <.001 ▂█▇▅▂▁▁▁▁▁ ▁▁▁▁▁▄█▅▆▂
- publish after color change ┊ ├●┤ +12.3% <.001 ▃█▃▅▂▂▁▁▁▁ ▁▃█▄▄▄▄▂▁▂
- 10 labels first same-length engine publication ┊├●┤ +6.4% .003 ▃▅█▆▇▅▃▂▂▁ ▁▁▃██▅▅▄▂▂
- 100 labels separated balanced gro…nk-space scene publication ┊├●┤ +5.7% .021 ▁▄█▅▄▃▂▂▂▁ ▂█▆▃▆▄▇▅▃▂
+ normalize 1000 equivalent retained label updates ├●┤┊ -5.8% <.001 ▁▇▇▄█▅▅▃▃▂ ▅▄▄█▄▄▃▁▁▁
+ 10 labels last color-only engine publication ├─●─┤┊ -9.2% .005 ▂▅█▃▂▃▄▄▃▂ ▄█▃▂▃▄▂▁▁▁
+ 100 labels last same-length engine publication ├─●┤ ┊ -11.0% .003 ▁█▆▄▄▄▃▃▃▂ ▅█▄▆▃▂▁▁▁▁
+ reorder then edit one of 1000 retained labels ├● ┊ -11.2% <.001 ▁▁▄█▇▄▃▃▂▁ ▃█▆▄▂▂▁▁▁▁
+ 10 labels first color-only scene publication ├●─┤ ┊ -11.7% <.001 ▃█▆▆▅▃▅▇▅▂ ▂█▃▃▂▄▃▁▁▁
+ 100 labels batched edit-read publication ●┤ ┊ -11.9% <.001 ▁▁▅▇█▅▄▅▂▂ ▂█▅▄▄▃▁▁▁▁
+ 100 labels last length-changing engine publication ├●─┤ ┊ -12.2% <.001 ▁▅█▇▆▅▄▃▂▂ ▅█▆▅▃▁▁▁▁▁
+ 100 labels last length-changing scene publication ├●┤ ┊ -12.6% <.001 ▁▃██▅▄▅▅▃▃ ▅█▇▆▃▂▃▁▁▁
+ 100 labels first length-changing engine publication ├─●┤ ┊ -13.3% <.001 ▁▁▅█▄▄▃▃▃▂ ▃█▄▄▄▂▁▁▁▁
+ 10 labels last color-only scene publication ├●┤ ┊ -14.0% <.001 ▃▄█▇▅▄▅▇▅▃ ▂█▄▃▄▃▂▁▁▁
+ normalize 1000 equivalent formatted flow updates ├●┤ ┊ -14.0% <.001 ▁▁▁▃██▅▄▃▂ ▂▅█▅▄▂▁▁▁▁
+ 1000 labels 100 edits batched edit-read publication ●┤ ┊ -16.0% <.001 ▁▁▁▁▁▅█▅▄▂ ▃▆▆█▃▁▁▁▁▁
+ reorder 1000 unchanged retained labels ●┤ ┊ -16.0% <.001 ▁▁▁▅▅█▃▂▁▂ ▄█▄▆▃▃▂▂▁▁
+ 100 labels first length-changing scene publication ├●┤ ┊ -16.6% <.001 ▁▁▇██▃▅▃▁▁ ▆▇█▄▃▁▁▁▁▁
+ reflow after width change ├●┤ ┊ -18.3% <.001 ▁▂█▇▄▅▅▅▃▂ ▃█▄▂▂▂▅▂▂▁
+ 100 labels first color-only engine publication ├─●┤ ┊ -20.0% <.001 ▁▁█▄▃▄▄▂▄▂ ▆█▆▆▂▁▁▁▁▁
+ broad end-to-end setter and publi…tion with 8192 paint spans ● ┊ -20.4% <.001 ▁▁▁▁▁▅▇█▆▂ ▂█▆▃▂▁▁▁▁▁
+ 100 labels last color-only engine publication ├●┤ ┊ -21.2% <.001 ▁▂█▅▂▄▃▄▃▁ ▆█▄▆▁▁▁▁▁▁
+ 100 labels first color-only scene publication ●─┤ ┊ -21.9% <.001 ▁▃█▇▄▂▃▃▄▂ ▄█▄▄▂▁▁▁▁▁
+ 100 labels last color-only scene publication ├●┤ ┊ -21.9% <.001 ▁▂█▇▄▃▄▄▄▂ ▅█▄▄▂▁▁▁▁▁
+ bind and normalize 1000 framework…ped formatted flow updates ●┤ ┊ -22.9% <.001 ▁▁▁▁▆██▅▆▃ ▂█▇▄▂▁▁▁▁▁
+ edit and measure one of 100 retained labels ├●┤ ┊ -24.5% <.001 ▁▁▁▇▇█▇▅▅▃ ▃█▅▄▅▃▁▁▁▁
+ measurement then publication after width change ●┤ ┊ -25.4% <.001 ▁▁▁▁▄█▅▆▃▂ ▅█▆▃▃▂▁▁▁▁
+ 100 labels 100 edits immediate me…ements without publication ├● ┊ -26.7% <.001 ▁▁▁▁▆█▄▃▂▂ ▄█▃▂▂▂▁▁▁▁
+ scattered end-to-end setter and p…tion with 8192 paint spans ├● ┊ -28.3% <.001 ▁▁▁▁▁▂█▇▅▁ ▇█▂▂▁▁▁▁▁▁
+ 1000 labels separated balanced gr…k-space engine publication ├●┤ ┊ -28.4% <.001 ▁▁▁▁▁▄█▆▄▂ ▃█▇▂▁▁▁▁▁▁
+ 100 labels 100 edits immediate measurements with publication ● ┊ -28.9% <.001 ▁▁▁▁▁▂█▃▃▂ ▅█▄▃▂▁▁▁▁▁
+ monospaced unchanged end-to-end s…tion with 8192 paint spans ● ┊ -30.0% <.001 ▁▁▁▁█▃▃▃▂▂ ▃█▂▁▂▁▁▁▁▁
+ 1000 labels separated unbalanced…nk-space scene publication ├● ┊ -30.2% <.001 ▁▁▁▁▁▁▃█▅▂ ▂█▇▃▁▁▁▁▁▁
+ unchanged end-to-end setter and p…tion with 8192 paint spans ├●┤ ┊ -30.6% <.001 ▁▁▁▁█▅▂▂▂▁ ▄█▂▁▂▁▁▁▁▁
+ 1000 labels separated unbalanced…k-space engine publication ├● ┊ -30.8% <.001 ▁▁▁▁▁▁██▅▂ ▂█▆▂▁▁▁▁▁▁
+ 1000 labels separated balanced gr…nk-space scene publication ├● ┊ -31.2% <.001 ▁▁▁▁▁▁██▄▂ ▂█▆▂▁▁▁▁▁▁
+ 100 labels interleaved edit-read publication ●┤ ┊ -32.2% <.001 ▁▁▁▁▁▁█▇▂▂ ▅█▃▁▁▁▁▁▁▁
+ monospaced scattered end-to-end s…tion with 8192 paint spans ●┤ ┊ -33.4% <.001 ▁▁▁▁▁▁█▆▅▂ █▆▂▂▁▁▁▁▁▁
+ 1000 labels 100 edits immediate m…ements without publication ●┤ ┊ -36.2% <.001 ▁▁▁▁▁▂██▄▂ ▅██▃▁▁▁▁▁▁
+ publication after width change ├●┤ ┊ -36.5% <.001 ▁▁▁▁▅█▆▄▄▂ █▅▄▃▃▁▁▁▁▁
+ 1000 labels last length-changing scene publication ├● ┊ -36.7% <.001 ▁▁▁▁▁▁██▅▂ ▄█▂▁▁▁▁▁▁▁
+ 1000 labels last same-length scene publication ├● ┊ -37.3% <.001 ▁▁▁▁▁▄█▅▂▂ ▄█▃▁▁▁▁▁▁▁
+ split move and merge paint boundaries publication ├● ┊ -37.3% <.001 ▁▁▁▁▁▁▃▄█▂ ▅█▃▁▁▁▁▁▁▁
+ 1000 labels last length-changing engine publication ●┤ ┊ -39.2% <.001 ▁▁▁▁▁▁▆█▅▂ ▅█▂▁▁▁▁▁▁▁
+ 1000 labels last same-length engine publication ├●┤ ┊ -39.3% <.001 ▁▁▁▁▁▁▇█▅▂ ▅█▂▁▁▁▁▁▁▁
+ 1000 labels first same-length engine publication ●┤ ┊ -39.5% <.001 ▁▁▁▁▁▁██▃▂ ▃█▂▁▁▁▁▁▁▁
+ 1000 labels first same-length scene publication ●┤ ┊ -40.1% <.001 ▁▁▁▁▁▄█▄▂▁ ▇█▂▁▁▁▁▁▁▁
+ shared-material scattered end-to-…tion with 8192 paint spans ●┤ ┊ -42.0% <.001 ▁▁▁▁▁▁▅█▄▂ █▅▂▁▁▁▁▁▁▁
+ 1000 labels first length-changing scene publication ●┤ ┊ -45.1% <.001 ▁▁▁▁▁▁▅█▃▁ ▅█▁▁▁▁▁▁▁▁
+ 1000 labels first length-changing engine publication ● ┊ -46.3% <.001 ▁▁▁▁▁▁▁██▁ ▅█▁▁▁▁▁▁▁▁
+ 1000 labels first color-only scene publication ◀ ┊ -56.8% <.001 ▁▁▁▁▁▄█▆▂▂ ▇█▁▁▁▁▁▁▁▁
+ 1000 labels last color-only scene publication ◀ ┊ -57.6% <.001 ▁▁▁▁▁▄█▅▂▂ ▆█▁▁▁▁▁▁▁▁
+ 1000 labels 100 edits interleaved edit-read publication ◀ ┊ -62.1% <.001 ▁▁▁▁▁▁▁▁█▂ █▁▁▁▁▁▁▁▁▁
+ 1000 labels first color-only engine publication ◀ ┊ -67.4% <.001 ▁▁▁▁▁▁▄█▃▁ █▅▁▁▁▁▁▁▁▁
+ 1000 labels last color-only engine publication ◀ ┊ -68.9% <.001 ▁▁▁▁▁▁▄█▄▁ █▅▁▁▁▁▁▁▁▁
+ 1000 labels 100 edits immediate m…surements with publication ◀ ┊ -77.6% <.001 ▁▁▁▁▁▁▁▁█▃ █▁▁▁▁▁▁▁▁▁
+ monospaced broad end-to-end sette…tion with 8192 paint spans ◀ ┊ -85.3% <.001 ▁▁▁▁▁▁▁▁▁█ █▁▁▁▁▁▁▁▁▁
10 labels first same-length scene publication ├──●┤ +10.0% .083 ▃█▇▄▄▅▆▃▂▂ ▁▁▄█▄▃▅▃▃▂
100 labels separated balanced gro…k-space engine publication ├┼─●─┤ +6.6% .234 ▁▄██▅▄▃▂▂▁ ▃▆█▆▄▅▅█▃▂
move 1000 retained TypeGPU labels ├─┼─●─┤ +5.2% .574 ▁▆█▇▇▄▃▃▂▁ ▂▅▆██▅▇▃▃▂
10 labels last length-changing engine publication ├─┼●┤ +2.3% .505 ▂▅▇█▅▄▅▃▃▂ ▂▇█▆▆█▅▅▂▁
100 labels separated unbalanced g…k-space engine publication ├●─┤ +0.9% .574 ▁▅█▆▄▂▂▂▁▁ ▄█▇▅▃▅▆▃▂▁
10 labels last same-length scene publication ├●─┤ +0.4% .382 ▂▆█▄▅▃▂▃▃▁ ▁▂█▇▃▄▄▃▁▁
100 labels no-op scene traversal ├──●┤ +0.3% .645 ▅█▄▄▄▃▃▃▃▁ ▆█▄▄▃▃▃▂▂▁
10 labels first length-changing engine publication ├─●┤ -0.1% .798 ▂▅█▄▅▅▂▃▂▁ ▂█▇▇▆▅▂▂▁▁
100 labels separated unbalanced g…nk-space scene publication ├─●┤ -0.6% .328 ▁▃▆█▃▄▂▃▂▂ ▃█▆▄▃▃▅▄▃▁
toggle one group containing 1000 retained labels ├●┤ -0.7% .721 ▁▅██▇▄▃▁▁▁ ▂▄█▅▅▂▂▁▁▁
10 labels first length-changing scene publication ├─●┤ -1.5% .382 ▃▇█▄▃▃▅▃▄▃ ▅█▆▄▄▄▅▂▃▁
10 labels no-op scene traversal ├─●─┤ -1.6% .878 ▂▂▃▅█▅▆▅▂▂ ▁▂▃▆▇█▅▅▂▁
reuse 1000 unchanged Vue property snapshots ●┤ -1.7% .105 ▃█▂▂▂▂▂▂▂▁ ▅█▁▃▁▂▁▂▂▁
10 labels last length-changing scene publication ├─●┤ -1.8% .130 ▃▇█▅▇▃▅▂▃▂ ▁█▅▄▃▄▃▁▁▁
1000 labels no-op scene traversal ├─●┼─┤ -2.1% .878 ▃▄█▇▇▅▃▂▂▁ ▁▄██▃▁▂▁▁▁
publication after text change ●┤ -2.2% .002 ▁▃█▇▃▂▂▁▁▁ ▂█▅▄▃▂▁▁▁▁
100 labels first same-length scene publication ├─●─┤ -6.5% .130 ▁▇█▅▅▄▃▃▂▁ ▃█▄▇▃▃▂▁▁▁
└──────────────┴──────────────┘
-50% 0 +50%| status | bench | baseline | candidate | Δ time | Δ p50 | p | 95% CI |
|---|---|---|---|---|---|---|---|
| 🔴 slower | rewrite 512 labels in one group | 20.20ms | 31.17ms | +10.970ms | +54.3% | <.001 | +50.9..+58.1% |
| 🔴 slower | rewrite 64 labels in one group | 4.32ms | 6.53ms | +2.210ms | +51.2% | <.001 | +41.9..+59.2% |
| 🔴 slower | rewrite 256 labels in one group | 10.83ms | 15.97ms | +5.140ms | +47.5% | <.001 | +40.9..+49.3% |
| 🔴 slower | rewrite 128 labels in one group | 6.80ms | 9.97ms | +3.170ms | +46.6% | <.001 | +39.4..+57.9% |
| 🔴 slower | publish 1024 retained Text instances | 38.97ms | 56.48ms | +17.510ms | +45.0% | <.001 | +40.5..+49.3% |
| 🔴 slower | relayout after font-size change | 4.31ms | 5.26ms | +0.950ms | +22.1% | <.001 | +18.2..+26.7% |
| 🔴 slower | publication after font-size change | 13.48ms | 16.26ms | +2.780ms | +20.6% | <.001 | +19.7..+22.7% |
| 🔴 slower | mutate one trailing span across 1000 formatted labels | 114.62ms | 138.15ms | +23.530ms | +20.5% | <.001 | +17.8..+21.8% |
| 🔴 slower | publish after color change | 3.31ms | 3.72ms | +0.410ms | +12.3% | <.001 | +8.9..+17.6% |
| 🔴 slower | 10 labels first same-length engine publication | 1.30ms | 1.38ms | +0.080ms | +6.4% | .003 | +2.5..+9.2% |
| 🔴 slower | 100 labels separated balanced grow-shrink-space scene publication | 2.63ms | 2.78ms | +0.150ms | +5.7% | .021 | +1.9..+11.2% |
| 🟢 faster | normalize 1000 equivalent retained label updates | 7.65ms | 7.20ms | -0.450ms | -5.8% | <.001 | -9.5..-4.2% |
| 🟢 faster | 10 labels last color-only engine publication | 1.08ms | 976.99µs | -0.103ms | -9.2% | .005 | -16.8..-3.7% |
| 🟢 faster | 100 labels last same-length engine publication | 1.70ms | 1.52ms | -0.180ms | -11.0% | .003 | -15.3..-5.4% |
| 🟢 faster | reorder then edit one of 1000 retained labels | 14.41ms | 12.80ms | -1.610ms | -11.2% | <.001 | -13.5..-8.6% |
| 🟢 faster | 10 labels first color-only scene publication | 1.25ms | 1.10ms | -0.150ms | -11.7% | <.001 | -15.5..-6.6% |
| 🟢 faster | 100 labels batched edit-read publication | 18.76ms | 16.52ms | -2.240ms | -11.9% | <.001 | -13.1..-8.6% |
| 🟢 faster | 100 labels last length-changing engine publication | 2.16ms | 1.89ms | -0.270ms | -12.2% | <.001 | -16.2..-8.1% |
| 🟢 faster | 100 labels last length-changing scene publication | 2.39ms | 2.09ms | -0.300ms | -12.6% | <.001 | -15.8..-8.7% |
| 🟢 faster | 100 labels first length-changing engine publication | 2.41ms | 2.09ms | -0.320ms | -13.3% | <.001 | -18.6..-9.8% |
| 🟢 faster | 10 labels last color-only scene publication | 1.29ms | 1.11ms | -0.180ms | -14.0% | <.001 | -18.1..-8.5% |
| 🟢 faster | normalize 1000 equivalent formatted flow updates | 15.94ms | 13.71ms | -2.230ms | -14.0% | <.001 | -15.6..-10.3% |
| 🟢 faster | 1000 labels 100 edits batched edit-read publication | 26.54ms | 22.30ms | -4.240ms | -16.0% | <.001 | -17.3..-14.5% |
| 🟢 faster | reorder 1000 unchanged retained labels | 6.60ms | 5.55ms | -1.050ms | -16.0% | <.001 | -17.9..-13.3% |
| 🟢 faster | 100 labels first length-changing scene publication | 2.73ms | 2.27ms | -0.460ms | -16.6% | <.001 | -19.1..-14.3% |
| 🟢 faster | reflow after width change | 1.76ms | 1.44ms | -0.320ms | -18.3% | <.001 | -21.0..-12.6% |
| 🟢 faster | 100 labels first color-only engine publication | 1.31ms | 1.05ms | -0.260ms | -20.0% | <.001 | -27.0..-15.3% |
| 🟢 faster | broad end-to-end setter and publication with 8192 paint spans | 45.96ms | 36.60ms | -9.360ms | -20.4% | <.001 | -21.1..-19.1% |
| 🟢 faster | 100 labels last color-only engine publication | 1.33ms | 1.05ms | -0.280ms | -21.2% | <.001 | -23.9..-17.1% |
| 🟢 faster | 100 labels first color-only scene publication | 1.57ms | 1.23ms | -0.340ms | -21.9% | <.001 | -24.8..-17.9% |
| 🟢 faster | 100 labels last color-only scene publication | 1.56ms | 1.22ms | -0.340ms | -21.9% | <.001 | -25.2..-19.4% |
| 🟢 faster | bind and normalize 1000 framework-shaped formatted flow updates | 17.96ms | 13.86ms | -4.100ms | -22.9% | <.001 | -24.8..-21.3% |
| 🟢 faster | edit and measure one of 100 retained labels | 589.85µs | 445.43µs | -0.144ms | -24.5% | <.001 | -28.1..-20.1% |
| 🟢 faster | measurement then publication after width change | 5.43ms | 4.05ms | -1.380ms | -25.4% | <.001 | -26.3..-23.3% |
| 🟢 faster | 100 labels 100 edits immediate measurements without publication | 12.67ms | 9.29ms | -3.380ms | -26.7% | <.001 | -29.0..-25.4% |
| 🟢 faster | scattered end-to-end setter and publication with 8192 paint spans | 47.53ms | 34.05ms | -13.480ms | -28.3% | <.001 | -29.3..-27.3% |
| 🟢 faster | 1000 labels separated balanced grow-shrink-space engine publication | 10.81ms | 7.74ms | -3.070ms | -28.4% | <.001 | -32.7..-26.5% |
| 🟢 faster | 100 labels 100 edits immediate measurements with publication | 40.33ms | 28.69ms | -11.640ms | -28.9% | <.001 | -30.3..-28.4% |
| 🟢 faster | monospaced unchanged end-to-end setter and publication with 8192 paint spans | 11.18ms | 7.83ms | -3.350ms | -30.0% | <.001 | -31.5..-28.6% |
| 🟢 faster | 1000 labels separated unbalanced grow-shrink-space scene publication | 12.04ms | 8.40ms | -3.640ms | -30.2% | <.001 | -31.9..-28.6% |
| 🟢 faster | unchanged end-to-end setter and publication with 8192 paint spans | 11.44ms | 7.94ms | -3.500ms | -30.6% | <.001 | -31.7..-28.0% |
| 🟢 faster | 1000 labels separated unbalanced grow-shrink-space engine publication | 11.19ms | 7.75ms | -3.440ms | -30.8% | <.001 | -34.0..-29.4% |
| 🟢 faster | 1000 labels separated balanced grow-shrink-space scene publication | 12.17ms | 8.37ms | -3.800ms | -31.2% | <.001 | -32.4..-29.3% |
| 🟢 faster | 100 labels interleaved edit-read publication | 61.98ms | 42.05ms | -19.930ms | -32.2% | <.001 | -32.7..-30.7% |
| 🟢 faster | monospaced scattered end-to-end setter and publication with 8192 paint spans | 41.69ms | 27.77ms | -13.920ms | -33.4% | <.001 | -33.8..-31.4% |
| 🟢 faster | 1000 labels 100 edits immediate measurements without publication | 15.08ms | 9.62ms | -5.460ms | -36.2% | <.001 | -37.7..-35.0% |
| 🟢 faster | publication after width change | 3.41ms | 2.17ms | -1.240ms | -36.5% | <.001 | -39.2..-34.9% |
| 🟢 faster | 1000 labels last length-changing scene publication | 8.09ms | 5.13ms | -2.960ms | -36.7% | <.001 | -38.5..-35.2% |
| 🟢 faster | 1000 labels last same-length scene publication | 6.97ms | 4.37ms | -2.600ms | -37.3% | <.001 | -40.4..-35.9% |
| 🟢 faster | split move and merge paint boundaries publication | 20.27ms | 12.70ms | -7.570ms | -37.3% | <.001 | -39.3..-36.5% |
| 🟢 faster | 1000 labels last length-changing engine publication | 7.48ms | 4.55ms | -2.930ms | -39.2% | <.001 | -40.7..-37.7% |
| 🟢 faster | 1000 labels last same-length engine publication | 6.38ms | 3.88ms | -2.500ms | -39.3% | <.001 | -42.6..-38.2% |
| 🟢 faster | 1000 labels first same-length engine publication | 6.46ms | 3.91ms | -2.550ms | -39.5% | <.001 | -41.2..-37.8% |
| 🟢 faster | 1000 labels first same-length scene publication | 7.30ms | 4.37ms | -2.930ms | -40.1% | <.001 | -41.1..-37.6% |
| 🟢 faster | shared-material scattered end-to-end setter and publication with 8192 paint spans | 61.71ms | 35.78ms | -25.930ms | -42.0% | <.001 | -43.2..-41.3% |
| 🟢 faster | 1000 labels first length-changing scene publication | 11.22ms | 6.16ms | -5.060ms | -45.1% | <.001 | -47.3..-43.5% |
| 🟢 faster | 1000 labels first length-changing engine publication | 10.44ms | 5.60ms | -4.840ms | -46.3% | <.001 | -47.5..-45.3% |
| 🟢 faster | 1000 labels first color-only scene publication | 5.60ms | 2.42ms | -3.180ms | -56.8% | <.001 | -59.1..-55.4% |
| 🟢 faster | 1000 labels last color-only scene publication | 5.72ms | 2.42ms | -3.300ms | -57.6% | <.001 | -58.7..-56.0% |
| 🟢 faster | 1000 labels 100 edits interleaved edit-read publication | 320.65ms | 121.53ms | -199.120ms | -62.1% | <.001 | -63.1..-61.7% |
| 🟢 faster | 1000 labels first color-only engine publication | 4.82ms | 1.57ms | -3.250ms | -67.4% | <.001 | -68.8..-66.3% |
| 🟢 faster | 1000 labels last color-only engine publication | 4.99ms | 1.55ms | -3.440ms | -68.9% | <.001 | -69.7..-67.4% |
| 🟢 faster | 1000 labels 100 edits immediate measurements with publication | 245.37ms | 54.86ms | -190.510ms | -77.6% | <.001 | -77.9..-76.9% |
| 🟢 faster | monospaced broad end-to-end setter and publication with 8192 paint spans | 267.21ms | 39.32ms | -227.890ms | -85.3% | <.001 | -85.4..-85.2% |
17 neutral, 6 skipped
| status | bench | baseline | candidate | Δ time | Δ p50 | p | 95% CI |
|---|---|---|---|---|---|---|---|
| neutral | 10 labels no-op scene traversal | 179.32µs | 176.46µs | -0.003ms | -1.6% | .878 | -8.3..+7.5% |
| neutral | 10 labels first same-length scene publication | 1.29ms | 1.42ms | +0.130ms | +10.0% | .083 | -1.5..+14.8% |
| neutral | 10 labels first length-changing scene publication | 1.76ms | 1.73ms | -0.030ms | -1.5% | .382 | -5.3..+3.0% |
| neutral | 10 labels first length-changing engine publication | 1.71ms | 1.70ms | -0.010ms | -0.1% | .798 | -6.0..+2.4% |
| neutral | 10 labels last same-length scene publication | 1.37ms | 1.38ms | +0.010ms | +0.4% | .382 | -1.8..+5.9% |
| neutral | 10 labels last length-changing scene publication | 1.74ms | 1.71ms | -0.030ms | -1.8% | .130 | -10.6..+0.7% |
| neutral | 10 labels last length-changing engine publication | 1.69ms | 1.73ms | +0.040ms | +2.3% | .505 | -5.1..+5.7% |
| neutral | 100 labels no-op scene traversal | 283.54µs | 284.36µs | +0.000820ms | +0.3% | .645 | -9.9..+3.6% |
| neutral | 100 labels first same-length scene publication | 1.85ms | 1.73ms | -0.120ms | -6.5% | .130 | -11.7..+1.2% |
| neutral | 1000 labels no-op scene traversal | 1.44ms | 1.41ms | -0.030ms | -2.1% | .878 | -8.9..+5.3% |
| neutral | 100 labels separated balanced grow-shrink-space engine publication | 2.49ms | 2.65ms | +0.160ms | +6.6% | .234 | -2.5..+12.7% |
| neutral | 100 labels separated unbalanced grow-shrink-space engine publication | 2.43ms | 2.45ms | +0.020ms | +0.9% | .574 | -3.3..+5.3% |
| neutral | 100 labels separated unbalanced grow-shrink-space scene publication | 2.58ms | 2.56ms | -0.020ms | -0.6% | .328 | -7.0..+2.8% |
| neutral | reuse 1000 unchanged Vue property snapshots | 785.13µs | 771.95µs | -0.013ms | -1.7% | .105 | -4.0..+0.9% |
| neutral | publication after text change | 15.93ms | 15.57ms | -0.360ms | -2.2% | .002 | -3.7..-1.0% |
| neutral | toggle one group containing 1000 retained labels | 1.65ms | 1.63ms | -0.020ms | -0.7% | .721 | -4.5..+2.5% |
| neutral | move 1000 retained TypeGPU labels | 613.00µs | 644.75µs | +0.032ms | +5.2% | .574 | -5.5..+14.9% |
| skipped: clock-confounded: faster→neutral · 2.77→2.91 | 10 labels first color-only engine publication | ||||||
| skipped: clock-confounded: slower→neutral · 2.86→2.74 | 10 labels last same-length engine publication | ||||||
| skipped: clock-confounded: faster→neutral · 2.87→2.82 | 100 labels first same-length engine publication | ||||||
| skipped: clock-confounded: faster→neutral · 2.72→2.89 | 100 labels last same-length scene publication | ||||||
| skipped: clock-confounded: slower→neutral · 2.95→2.73 | publish after text change | ||||||
| skipped: clock-confounded: neutral→faster · 2.77→2.71 | inspection then publication after width change |
Preserve the held synchronous preparation, query, copy, and publication work with its regression coverage. This is an unfinished draft checkpoint: dense-update regressions and final package, size, API/ABI, memory, and visual gates remain open. Static and 472 native tests passed on the preserved source; the latest package build was interrupted and is not a passing gate.
Preserve prepared-operation fixtures, authenticated profiling and live-memory workflows, saved-candidate comparison support, and portable historical main/release reports. These reports predate the final ordered-range source; they do not establish current merge readiness.
Record the fresh Sol High source reconciliation, preserve historical research, and make benchmark evidence portable. Keep the fixed seven-family scope and the unresolved dense-update regression explicit. The stack remains held and unfinished; current package/size/API/ABI/memory/visual gates and advanced-main integration are not cleared.
thejustinwalsh
force-pushed
the
feat/rust-text-input-wire
branch
from
October 18, 2026 17:58
328aedb to
379f99d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bound setters synchronously prepare a retained Rust revision for immediate measurement, glyph inspection and independent split. Publication compiles accumulated changes in logical order, preserving batching, Rust semantic authority and packed storage.
HELD draft. Keep #292 → #301 → #302 → #310 unmerged. Parity across the seven fixed families remains unproved; stop optimization when it is verified. No release, tag or demo merge.
The latest frozen runtime,
dec7509b, removes old-text seeding for validated full replacements, redundant single-owner validation/routing, empty wire-frame section work and eleven no-op stage commits for settled publication owners. It retains the general paths and rollback/retry behavior. No new public API, semantic cache or second representation is added.Benchmark verification now authenticates installed archives and served JS/Wasm, records actual browser CPU timings, and checks the editorial scene against its final projection. A benchmark-scene pause bug retained a stale flow polygon after relayout; the fix and regression tests pass. Exact main-image comparison still reports 842 pixels differing by at most one color level on each backend, consistent with a pre-existing numeric-block rounding difference. The comparator is unchanged and its failed result remains visible.
A shared Labs weakness gave slow operations only one warmup call in each fresh worker. The explicit fixed-warmup policy now records 21 untimed calls per trial and prevents cross-policy result reuse. Its protocol/static/unit/workflow checks pass. The original 113 ms block was not reproduced by the diagnostic and remains unexplained. The uniform candidate/main/published matrix is complete, reusing one candidate capture. Complete-operation dense512 p50/p90 is 8.294/8.837 ms versus main 6.933/7.392 and published 7.458/7.877; dense1024 is 17.485/18.344 versus 15.193/16.085 and 15.157/15.936. Ordinary dense gaps remain against both controls. Sparse/inspection gains are retained. Main compares 145 identities and published 143, with two declared outline omissions and no additional skips. Published reports 77.0% software-calibration drift; all raw tails and block distributions remain visible. This is a preserved verification checkpoint, not a parity claim.
Memory evidence is restricted to requested allocations owned by the shaper Wasm instance. Candidate live/high-water accounts are available; a byte-authenticated main diagnostic is not. Process/RSS/browser totals are excluded. Sizes, absolute complete-operation distributions, exclusions, calibration drift, correctness receipts and scoped limitations are recorded in the current report. The complete V3 combination passed correctness but showed no credible dense gain in its one eight-block comparison (512 p50 8.325→8.338 ms; 1024 17.214→17.177 ms). It remains preserved on
experiments/held-v3-single-owner-20261022and is not admitted to this product branch. The experiment report retains every result, tail and failure.Stack created with GitHub Stacks CLI • Give Feedback 💬