Repository navigation
Conversation
Commit pending scene-attached text from layout reads, propagate publication failures, and retry explicitly repaired state without requiring a draw. Preserve callback-ref cleanup and rejected data until a repaired publication succeeds.
size-limit report 📦
|
Brings in the installed-package Labs suites (#215). The package runner keeps main's --suite selection, which replaces this branch's --filter option; the read-publication workloads move into the suite layout in the next commit.
Move the read-publication workloads from glyph-package.bench.ts, unchanged, into benches/labs/package/read-publication.bench.ts with their helpers in read-publication.ts. Cases that repeat work on mounted labels form the new read-publication suite; cases whose every call mounts new text join the cold suite, so each suite times alike. The fixture exports its font and an empty label scene for workloads that mount their own text. Co-authored-by: Kris Baumgartner <kjbaumgartner@gmail.com>
8 of 15 tasks
Docs report 📚Every changed package is attested at this head. A reviewer verifies each claim after merge.
✅ attested · |
30 of 42 tasks
# Conflicts: # benches/scripts/run-package-labs.mts
Package performance:
|
| status | bench | baseline | candidate | Δ p50 | p | 95% CI |
|---|---|---|---|---|---|---|
| 🔴 slower | scene 1000 each: 100 rolling tickers | 31.23ms | 828.85ms | +2553.8% | <.001 | +2437.3..+2594.8% |
| 🔴 slower | scene 1000 each: edit 50 lines and carets | 24.78ms | 320.79ms | +1194.6% | <.001 | +1165.8..+1211.7% |
| 🔴 slower | scene 100 each: 100 rolling tickers | 18.50ms | 102.99ms | +456.8% | <.001 | +446.0..+472.3% |
| 🔴 slower | scene 100 each: edit 50 lines and carets | 16.15ms | 72.59ms | +349.6% | <.001 | +336.5..+363.1% |
12 neutral, 2 skipped
| status | bench | baseline | candidate | Δ p50 | p | 95% CI |
|---|---|---|---|---|---|---|
| neutral | edit a label and read its glyphs | 2.03ms | 2.02ms | -0.9% | .959 | -5.8..+3.9% |
| neutral | edit a label and draw without reading layout | 1.60ms | 1.63ms | +2.2% | .382 | -2.4..+7.4% |
| neutral | scene 1: type in a text field | 2.27ms | 2.28ms | +0.6% | .959 | -2.6..+4.5% |
| neutral | scene 1: click to place the caret | 293.31µs | 305.94µs | +4.3% | .130 | -1.9..+9.5% |
| neutral | scene 100: type in a text field | 3.09ms | 2.97ms | -4.0% | .130 | -7.0..+0.9% |
| neutral | scene 100: click to place the caret | 412.13µs | 403.59µs | -2.1% | .574 | -6.8..+4.5% |
| neutral | scene 100 batched: edit 50 lines and carets | 16.13ms | 16.09ms | -0.2% | 1.000 | -5.9..+3.0% |
| neutral | scene 100 batched: 100 rolling tickers | 18.44ms | 19.13ms | +3.7% | .021 | +0.3..+6.8% |
| neutral | scene 100: 100 tickers without layout reads | 6.22ms | 6.09ms | -2.1% | .645 | -6.9..+5.7% |
| neutral | scene 1000: click to place the caret | 1.44ms | 1.43ms | -1.0% | 1.000 | -6.0..+6.7% |
| neutral | scene 1000 batched: edit 50 lines and carets | 25.08ms | 25.67ms | +2.3% | .130 | -0.4..+4.4% |
| neutral | scene 1000: 100 tickers without layout reads | 15.65ms | 15.57ms | -0.5% | .505 | -4.6..+0.9% |
| skipped: clock-confounded: neutral→slower · 2.42→2.62 | scene 1000: type in a text field | |||||
| skipped: clock-confounded: neutral→slower · 2.43→2.59 | scene 1000 batched: 100 rolling tickers |
# Conflicts: # packages/glyph/src/three/text.ts
This was referenced Oct 9, 2026
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.
Superseded by merged #299. Main
9022bb40preserves existing public signatures and supplies current desired placement/caret/selection reads and independentsplit()copies synchronously without source or whole-root publication. Exact-head review, all five CI jobs and glyph Labs passed (2 faster / 0 slower / 10 neutral). This PR's publish-on-read implementation remains held and must not land alongside #299. #247 remains open; rope draft #292 is held.Mounted Text measurement, caret, selection and split reads publish pending layout through the ordinary engine-wide batch before answering. Publication-before-copy is preserved, and the next unchanged draw reuses the accepted result.
Updated onto current main, including readGlyphs(), split() and the Wasm fallback follow-up. Combined local verification passes: all package builds, source/public/Labs types, 111 focused tests, 277 package tests, 864 complete Node tests, both migration fixture suites, 17 benchmark workflow tests and docs validation.
Performance gate remains open. The previous full Labs run at
961c852timed out after 90 minutes: artifact preparation took seconds; the 30-case read-publication matrix took 28m 24s on baseline and more than 41m 59s on candidate before cancellation, without a candidate report. A prior comparison reproduced large regressions when editing and reading each label in turn in a 1,000-label root. #247 must resolve that repeated root publication cost. No current-head no-regression claim is made.The selected benchmark:read-publication suite covers the changed reads, batched and interleaved schedules, and cold load/split copies. This focused exact-head CI comparison is requested to complete the workload report within the existing job budget; cold/full confirmation remains required before release. Hold merge until regression evidence is resolved.