Skip to content

perf(glyph): retain prepared layout and scoped publication (held) - #310

Draft
thejustinwalsh wants to merge 48 commits into
feat/shaper-helper-dedupfrom
feat/rust-text-input-wire
Draft

thejustinwalsh wants to merge 48 commits into
feat/shaper-helper-dedupfrom
feat/rust-text-input-wire

Conversation

@thejustinwalsh

@thejustinwalsh thejustinwalsh commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

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-20261022 and is not admitted to this product branch. The experiment report retains every result, tail and failure.

Stack created with GitHub Stacks CLI • Give Feedback 💬

@thejustinwalsh
thejustinwalsh added this pull request to stack #293 October 16, 2026 15:15
@thejustinwalsh thejustinwalsh changed the title feat/rust text input wire perf(glyph): retain prepared layout and scoped publication (held) Oct 16, 2026
@thejustinwalsh thejustinwalsh added the benchmark:publication Run the focused publication Labs suite label Oct 16, 2026
@thejustinwalsh
thejustinwalsh force-pushed the feat/rust-text-input-wire branch 2 times, most recently from 02ed1ac to 40078e6 Compare October 17, 2026 20:56
@thejustinwalsh
thejustinwalsh force-pushed the feat/rust-text-input-wire branch from 57243ee to 328aedb Compare October 18, 2026 16:46
@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Docs report 📚

Advisory only — this never blocks merging. Anything left open is tracked in the Sync agent docs issue and verified after merge.

Package Concept Attestation Status
@pmndrs/glyph-tres-playground packages/tres-playground.md · edited Corrected the stale Slug batching expectation; authenticated prior-Wasm negative/positive controls and current named pl… ✅
@pmndrs/glyph-benchmarks packages/benchmarks.md · edited Added p90 and always-retained callback iterations to the edit-sized publication profile summary. Scoped formatter, lint… (made at 05cd3848, source now c7a13ae3) ⚠️
@pmndrs/glyph packages/glyph.md · edited Updated the isolated shaper memory artifact builder with explicit optimizer-policy selection; validated Glyph TypeScrip… ✅

✅ attested · ⚠️ stale · ❌ missing

After your last source change, update each concept if it is now wrong, then record what you changed and checked:

  • packages/benchmarks.md: mise exec -- pnpm scripts run docs:attest -- @pmndrs/glyph-benchmarks "<what you changed and checked>"

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Package performance: publication suite

53 faster · 11 slower · 17 neutral · 6 skipped

Baseline 0.1.0-canary-4e25a96a-20261015 → candidate 0.1.0 (adf66fa4)

Latency distribution across 81 comparable workload p50s. Each workload counts once; these are not frame times.

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
thejustinwalsh force-pushed the feat/rust-text-input-wire branch from 328aedb to 379f99d Compare October 18, 2026 17:58
@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

size-limit report 📦

Surface gzip Surface gzip
Core JS 89.5 kB (-2.61% Size decrease) Inter font · Bitmap 558.2 kB (0%)
Shaper Wasm 600.0 kB (+1.39% Size increase) Inter font · MTSDF 8.17 MB (0%)
Three.js adapter JS 141.0 kB (-1.67% Size decrease) Inter font · Slug 618.3 kB (0%)
React adapter JS 140.9 kB (-1.53% Size decrease) Font Awesome icons · Bitmap 449.9 kB (0%)
Vue adapter JS 140.8 kB (-1.52% Size decrease) Font Awesome icons · MTSDF 8.76 MB (0%)
R3F hello-world app JS 745.7 kB (-0.3% Size decrease) Font Awesome icons · Slug 657.9 kB (0%)
Tres playground app JS 570.1 kB (-0.38% Size decrease) Bitmap baker JS 4.9 kB (0%)
Font validator JS 144.8 kB (+0.02% Size increase) Bitmap baker Wasm 231.1 kB (<0.01% Size decrease)
Runtime bake host JS 6.1 kB (0%) MTSDF baker JS 5.6 kB (0%)
Runtime bake Worker JS 13.5 kB (0%) MTSDF baker Wasm 215.5 kB (<0.01% Size increase)
Font baker JS 2.6 kB (0%) Slug baker JS 4.5 kB (0%)
Font baker Wasm 389.0 kB (+0.02% Size increase) Slug baker Wasm 183.7 kB (<0.01% Size decrease)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

benchmark:publication Run the focused publication Labs suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant