Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1059 commits
Select commit Hold shift + click to select a range
b66678d
dotnet format
codymullins Jun 5, 2026
90901a1
Merge pull request #48 from starling-browser/wpt-98
codymullins Jun 5, 2026
838d759
Ignore IDEOGRAPHIC SPACE
startewho Jun 5, 2026
886b24f
Add Blazor native shell demo video
codymullins Jun 5, 2026
91919a4
Update Blazor native shell cursor demo video
codymullins Jun 5, 2026
2eb942f
Update Blazor native shell demo recording
codymullins Jun 5, 2026
e47c3f8
Merge pull request #50 from startewho/main
codymullins Jun 5, 2026
459eddd
add support for native shell mcp and gpu surface overlay rendering
codymullins Jun 5, 2026
66e4ebe
Merge pull request #52 from starling-browser/codex/blazor-native-shel…
codymullins Jun 5, 2026
6c8aca8
add missed change
stefannikolei Jun 5, 2026
7b3eef9
Merge pull request #47 from stefannikolei/sn/JsLexer_optimisation
codymullins Jun 5, 2026
f92e676
refactor(diag): replace IDiagnostics with ILogger and StarlingTelemetry
codymullins Jun 5, 2026
bec8e6b
Merge pull request #53 from starling-browser/wpt-98
codymullins Jun 5, 2026
4c228e3
pull back in regexp
codymullins Jun 5, 2026
401a672
Merge pull request #54 from starling-browser/move-regexp-in-tree
codymullins Jun 5, 2026
99e4542
wpt: update status and fix parser crash
codymullins Jun 5, 2026
dddd28a
dotnet format and gitignote update
codymullins Jun 5, 2026
68afa66
feat(svg): expand SVG rendering and add a conformance suite
codymullins Jun 6, 2026
7ba8fa9
docs(licensing): add Jint and Acornima third-party notices
codymullins Jun 6, 2026
0fdec4f
test(svg): vendor the resvg SVG corpus (SVG-only) + credit resvg
codymullins Jun 6, 2026
6f2d00a
Merge pull request #55 from starling-browser/worktree-starlingbrowser…
codymullins Jun 6, 2026
2990695
test(paint): add neutral-seam architecture guard (Step 0)
codymullins Jun 6, 2026
a893698
refactor(paint): extract gradient color-space math to neutral Gradien…
codymullins Jun 6, 2026
bcdb148
refactor(paint): route PaintBackendSelector through IPaintBackendFact…
codymullins Jun 6, 2026
0ed111b
refactor(paint): move shaped-run reuse decision onto the run + harden…
codymullins Jun 6, 2026
98c1c4a
refactor(paint): split ImageSharp raster caches into a partial file (…
codymullins Jun 6, 2026
98be030
refactor(paint): neutralize the GPU paint texture handle (Step 5)
codymullins Jun 6, 2026
055c0ec
refactor(paint): neutralize the GPU device-context seam (Step 6)
codymullins Jun 6, 2026
3c70d2a
docs(paint): document the neutral text contract + glyph-id limitation…
codymullins Jun 6, 2026
63ed6e2
refactor(paint): neutralize the SVG decoder's public color param (Ste…
codymullins Jun 6, 2026
91905cb
feat(paint): prove the neutral seam with a SixLabors-free backend (St…
codymullins Jun 6, 2026
19731d8
refactor(shell): pass CssColor to the SVG decoder (Step 8 follow-up)
codymullins Jun 6, 2026
37493a5
wp:M3-02e — Jint parity coverage and JS fixes
codymullins Jun 6, 2026
41d026b
refactor(paint): self-review fixes for the unleak
codymullins Jun 6, 2026
27904c3
wp:M3-02e — Fix JS primitive operator coercion
codymullins Jun 6, 2026
8f9d1b3
wp:M3-02e — Fix array literal element creation
codymullins Jun 6, 2026
fb13232
wp:M3-02e — Fix JS number string keys
codymullins Jun 6, 2026
1cf7ea0
wp:M3-02e — Fix object literal proto setter
codymullins Jun 6, 2026
8a5d672
wp:M3-02e — Fix computed object literal names
codymullins Jun 6, 2026
11b8cd4
wp:M3-02e — Fix nullish property references
codymullins Jun 6, 2026
9345db7
wp:M3-02e — Fix logical assignment names
codymullins Jun 6, 2026
a21b1ed
build(deps): bump actions/configure-pages from 5 to 6
dependabot[bot] Jun 8, 2026
36759a4
Merge pull request #62 from starling-browser/worktree-starlingbrowser…
codymullins Jun 8, 2026
e89545e
Merge pull request #63 from starling-browser/codex/wp-m3-02e-referenc…
codymullins Jun 8, 2026
faff985
wp:js-ic — Merge origin/main into inline-caches
codymullins Jun 8, 2026
cf08908
wp:js-ic — Add RegExp fast paths
codymullins Jun 8, 2026
a26dcce
fix(render+dom): stop the perpetual-animation CPU pinning and render …
codymullins Jun 8, 2026
347668c
Merge branch 'inline-caches' into worktree-starlingbrowser-com-diff
codymullins Jun 8, 2026
0f0f64c
fix(js): keep $<name> literal in the replace fast path; guard regex-c…
codymullins Jun 8, 2026
07b6ba6
Merge pull request #64 from starling-browser/fix/starlingbrowser-com-…
codymullins Jun 8, 2026
9cec5d3
Merge pull request #60 from starling-browser/dependabot/github_action…
codymullins Jun 8, 2026
38328a2
fixes
codymullins Jun 8, 2026
23d832d
fix(render): repair regressions exposed by the f29d0ccd merge
codymullins Jun 8, 2026
828bc85
docs: require testing demo sites through the Aspire harness, not from…
codymullins Jun 8, 2026
bf32f6a
diag(js): surface JS stack on uncaught script errors
codymullins Jun 8, 2026
9656878
feat(jint): close Tier 1 Web-API binding parity gaps
codymullins Jun 8, 2026
13911cc
more jint bindings
codymullins Jun 9, 2026
ad29de2
Merge pull request #68 from starling-browser/feat/jint-tier1-parity
codymullins Jun 9, 2026
6591a89
add initial webidl gen
codymullins Jun 9, 2026
3840d09
task 2 on webidl
codymullins Jun 9, 2026
2323397
idl work
codymullins Jun 9, 2026
077916f
idl updates
codymullins Jun 9, 2026
7688d31
docs(tasks): add wp:M3-84 js stack trampoline and claim it
codymullins Jun 9, 2026
c4d3e2d
feat(js): stage A — extract CallFrame, de-closure RunInner helpers (w…
codymullins Jun 9, 2026
b432c7a
feat(js): stage B — barrier trampoline, JS→JS calls off the native st…
codymullins Jun 9, 2026
ac7df8c
fix(js): coerce barrier construct returns outside the dispatch catch …
codymullins Jun 9, 2026
932f827
docs(tasks): close out wp:M3-84 — gates passed, review finding fixed
codymullins Jun 9, 2026
f4cf2e4
docs(tasks): wp:M3-84 — record divergences from the final plan revision
codymullins Jun 9, 2026
06ce645
chore(js): re-enable JsBench, add webpack fixture, document flush inv…
codymullins Jun 9, 2026
eb5abf0
perf(js): grow operand stacks on demand instead of renting 1024 slots…
codymullins Jun 9, 2026
59042f4
fix(js): surface unhandled rejections, fix scope/chain compiler bugs,…
codymullins Jun 9, 2026
f95e59f
fix(layout): break nested-flex exponential re-layout; skip data-block…
codymullins Jun 9, 2026
67c587e
fix(css): <noscript> fallback CSS no longer joins the cascade
codymullins Jun 9, 2026
111c35f
fix(net): XHR URL resolution no longer unescapes the query
codymullins Jun 10, 2026
572b71a
fix(js): Date.parse accepts the legacy loose formats browsers do
codymullins Jun 10, 2026
d2d7694
fix(layout): full measure pass invalidates the final-pass reuse stamp
codymullins Jun 10, 2026
1cc9ccf
fix(bindings): clamp the live pump's per-tick simulated-clock advance
codymullins Jun 10, 2026
3b8a613
perf(dom): cache DomTokenList parsing, drop LINQ from token lookups
codymullins Jun 10, 2026
41b8c19
perf(css): cut per-step allocations in selector matching
codymullins Jun 10, 2026
71ebd63
perf(js): stop allocating closures on every Call/CallFunction
codymullins Jun 10, 2026
15a9f1b
perf(js): pool CallFrame locals and make the try-stack lazy
codymullins Jun 10, 2026
b1de7df
Merge branch 'mem-fix/selector' into mem-profile
codymullins Jun 10, 2026
182c6e6
Merge branch 'mem-fix/callclosure' into mem-profile
codymullins Jun 10, 2026
fb183ac
Merge branch 'mem-fix/jsframes' into mem-profile
codymullins Jun 10, 2026
3940279
fix(codecs): clamp decode resolution so huge images stop pinning memory
codymullins Jun 10, 2026
10ef7f0
perf(js): stop flattening every shape's property table
codymullins Jun 10, 2026
20238a1
Merge branch 'mem-fix/images' into mem-profile
codymullins Jun 10, 2026
1c04d52
Merge branch 'mem-profile' into feat/js-stack-trampoline
codymullins Jun 10, 2026
70ead1c
wip(animation-events): salvage event-record queue + DOM event classes
codymullins Jun 10, 2026
8fdf8ea
feat(css): queue transition DOM-event facts + host-side event dispatcher
codymullins Jun 10, 2026
3985a2e
fix(layout): clamp flex items by max main size with freeze + redistri…
codymullins Jun 10, 2026
777f13e
feat(engine): dispatch queued animation/transition events each frame
codymullins Jun 10, 2026
55b8c02
feat(js): expose AnimationEvent/TransitionEvent to scripts
codymullins Jun 10, 2026
1372dcc
test(css): deterministic animation/transition DOM-event coverage
codymullins Jun 10, 2026
0cfdc73
fix(layout): resolve vertical percentage margin/padding against cb width
codymullins Jun 10, 2026
88e814b
test(bindings): animation/transition events end-to-end into JS
codymullins Jun 10, 2026
0a2264e
fix(layout): use the hypothetical static position when both insets ar…
codymullins Jun 10, 2026
fb89074
wip(grid): real track sizing + explicit placement + areas engine
codymullins Jun 10, 2026
269636a
chore(layout): drop the unused free-space local in LayoutLine
codymullins Jun 10, 2026
2eeb339
test(grid): track sizing + placement coverage for the grid rewrite
codymullins Jun 10, 2026
2f10d53
feat(css): interpolate box-shadow, text-shadow, and gradients smoothly
codymullins Jun 10, 2026
1c97f6b
perf(css): lerp typed gradient endpoints without a per-sample wrapper
codymullins Jun 10, 2026
9f81895
fix(fonts): key @font-face families quote- and whitespace-insensitively
codymullins Jun 10, 2026
fbcb3ea
test(paint): prove a mid-transition shadow and gradient reach the dis…
codymullins Jun 10, 2026
fa17737
feat(waapi): finished promise, finish/cancel handlers, playbackRate, …
codymullins Jun 10, 2026
d6f4b30
feat(paint): outline painting + dashed/dotted/double border styles
codymullins Jun 10, 2026
bb42545
feat(paint): inset box-shadow + background-origin/clip box geometry
codymullins Jun 10, 2026
4619249
test(paint): pixel + builder probes for inset shadows and background …
codymullins Jun 10, 2026
e13b44a
docs(plan): site styling plan, scroll-model design, x.com fixture
codymullins Jun 10, 2026
5a64059
Merge branch 'tier5/shadow-gradient-interp' into feat/js-stack-trampo…
codymullins Jun 10, 2026
5a15086
Merge branch 'tier1/xcom-layout-fixes' into feat/js-stack-trampoline
codymullins Jun 10, 2026
835fa5f
Merge branch 'tier2/fontface-name-key' into feat/js-stack-trampoline
codymullins Jun 10, 2026
6e09c2b
Merge branch 'tier3/grid-completeness' into feat/js-stack-trampoline
codymullins Jun 10, 2026
b60a37f
Merge branch 'tier5/animation-events' into feat/js-stack-trampoline
codymullins Jun 10, 2026
b581549
Merge branch 'tier5/waapi-gaps' into feat/js-stack-trampoline
codymullins Jun 10, 2026
1c8aabe
Merge branch 'tier4/outline-border-styles' into feat/js-stack-trampoline
codymullins Jun 10, 2026
fd7cbc9
Merge branch 'tier4/inset-shadow-bg-boxes' into feat/js-stack-trampoline
codymullins Jun 10, 2026
5765ccb
fix(layout,paint,engine): apply the three merge-review findings
codymullins Jun 10, 2026
ef49223
test(css): pin x.com inline-style theming longhands at cascade level
codymullins Jun 10, 2026
4fa7e96
feat(paint): object-fit/object-position for replaced images + real tr…
codymullins Jun 10, 2026
9f1d24c
feat(css,layout): text-overflow ellipsis + -webkit-line-clamp fragmen…
codymullins Jun 10, 2026
852d0d1
test(layout): cover text-overflow ellipsis + -webkit-line-clamp surgery
codymullins Jun 10, 2026
9826813
test(paint): pixel-prove the ellipsis glyph paints inside the content…
codymullins Jun 10, 2026
19b0d16
feat(layout): aspect-ratio transfer + intrinsic sizing keywords in bl…
codymullins Jun 10, 2026
e59dfc3
test(paint): pixel probes for object-fit/object-position + transform-…
codymullins Jun 10, 2026
40ca5c4
test(layout): [Spec] coverage for aspect-ratio transfer + intrinsic k…
codymullins Jun 10, 2026
4e393c5
feat(paint): propagate root/body background-color to the canvas + pin…
codymullins Jun 10, 2026
9c35927
fix(paint): clear the canvas donor in BuildForLayerSlice
codymullins Jun 10, 2026
a0b59f6
feat(paint): form-control chrome — checkbox check, radio dot, select …
codymullins Jun 10, 2026
893d74d
test(paint): pixel probes for form-control chrome
codymullins Jun 10, 2026
99523a4
feat(layout): flex polish — align-self, align-content, column wrap, f…
codymullins Jun 10, 2026
497b791
feat(paint): typed filter chain + PushFilter/DrawBackdropFilter displ…
codymullins Jun 10, 2026
410aac3
test(layout): flex alignment specs — align-self, align-content, colum…
codymullins Jun 10, 2026
6749530
feat(paint): rasterize filter groups and backdrop-filter in ImageShar…
codymullins Jun 10, 2026
2e627bb
test(paint): pixel probes + builder coverage for filter and backdrop-…
codymullins Jun 10, 2026
e27a13c
fix(paint): render filter groups in blit-local space + compositor par…
codymullins Jun 10, 2026
bf416bb
Merge branch 'tier4/objectfit-transform-origin' into feat/js-stack-tr…
codymullins Jun 10, 2026
42d257f
Merge branch 'tier4/form-controls' into feat/js-stack-trampoline
codymullins Jun 10, 2026
07b2fc8
Merge branch 'tier4/filters' into feat/js-stack-trampoline
codymullins Jun 10, 2026
34c2310
Merge branch 'tier3/flex-polish' into feat/js-stack-trampoline
codymullins Jun 10, 2026
c4bcfd9
Merge branch 'tier2/ellipsis-lineclamp' into feat/js-stack-trampoline
codymullins Jun 10, 2026
003bce8
Merge branch 'tier3/sizing-keywords' into feat/js-stack-trampoline
codymullins Jun 10, 2026
d92198e
fix(layout,paint): apply wave-2 review findings
codymullins Jun 10, 2026
4bc9592
feat(layout): ScrollStateStore + scrollable-overflow measurement (scr…
codymullins Jun 10, 2026
54fcdff
test(layout): WP1 scroll-store coverage
codymullins Jun 10, 2026
c6897e2
feat(engine): own the scroll store per page and expose it via ILayout…
codymullins Jun 10, 2026
9b81af2
Merge branch 'scroll/wp1-store' into feat/js-stack-trampoline
codymullins Jun 10, 2026
2b2368a
wp:scroll-WP2 — shared ScrollController in Starling.Gui.Core
codymullins Jun 10, 2026
4692547
feat(bindings): JS scroll surface reads and writes the scroll store (…
codymullins Jun 10, 2026
941e284
wp:scroll-WP2 — WebviewPanel scrolls through the store; panel diction…
codymullins Jun 10, 2026
4f8f804
test(bindings): WP3 scroll-surface coverage in CssomViewBindingTests
codymullins Jun 10, 2026
1600566
wp:scroll-WP2 — thread the scroll store through the frame-render paths
codymullins Jun 10, 2026
e26f2d9
feat(events): dispatch coalesced scroll events from the frame pump
codymullins Jun 10, 2026
31fe056
wp:scroll-WP2 — native shell inner scroll through the shared controller
codymullins Jun 10, 2026
20643af
test(bindings): WP4 scroll-event coverage on the Starling JS engine
codymullins Jun 10, 2026
b4c9399
wp:scroll-WP2 — ScrollController unit coverage
codymullins Jun 10, 2026
633de15
test(engine): scroll events drain in PumpFrame before the frame's rAF
codymullins Jun 10, 2026
3378029
wp:scroll-WP2 — re-baseline the panel's root-scroll sync on navigation
codymullins Jun 10, 2026
0cae52c
perf(layout): stop re-measuring every scroll container on incremental…
codymullins Jun 10, 2026
cd5ee93
test(layout): pin scoped scroll re-measurement + the two WP1 minors
codymullins Jun 10, 2026
4836c8e
test(layout): consecutive scoped passes stay coherent (animation-tick…
codymullins Jun 10, 2026
ae7dd8c
Merge branch 'scroll/wp3-bindings' into feat/js-stack-trampoline
codymullins Jun 10, 2026
70ece2c
Merge branch 'scroll/wp4-events' into feat/js-stack-trampoline
codymullins Jun 10, 2026
28d19d3
Merge branch 'scroll/wp1-perf' into feat/js-stack-trampoline
codymullins Jun 10, 2026
228f5d0
fix(layout): scroll-measure blocker + coherence flag from WP2-4 review
codymullins Jun 10, 2026
76c41f7
fix(layout): make relative/sticky shifts idempotent across incrementa…
codymullins Jun 10, 2026
b3cbb5a
feat(layout): record sticky constraints at layout, shift by arithmeti…
codymullins Jun 10, 2026
a96c1c5
feat(paint,gui): apply the sticky shift at paint, hit-test, and clien…
codymullins Jun 10, 2026
efe5e07
feat(paint,gui): hoist stuck sticky boxes above in-flow siblings + WP…
codymullins Jun 10, 2026
0d46e0b
test(paint): pin the sticky shift composing with a transformed ancestor
codymullins Jun 10, 2026
d046ced
fix(layout): clear relative-shift bookkeeping at every natural-frame …
codymullins Jun 10, 2026
0ecf317
docs(plan): sync SPEC_COVERAGE + styling-plan status after the five t…
codymullins Jun 10, 2026
5eecfac
dotnet format
codymullins Jun 10, 2026
a21fb2e
update actions for .net 11
codymullins Jun 10, 2026
ec1c1fd
fix(daemon): commit vendored logs protos the .gitignore was swallowing
codymullins Jun 10, 2026
2169a3b
Merge pull request #69 from starling-browser/feat/js-stack-trampoline
codymullins Jun 10, 2026
ecf358f
feat(paint): apply CSS filters once per layer, on the GPU
codymullins Jun 11, 2026
d27d9e2
feat(paint): run backdrop-filter on the GPU compositor paths
codymullins Jun 11, 2026
0144ace
perf(paint): cache box-shadow rasters at device scale
codymullins Jun 11, 2026
92e46d8
perf(gui): reuse the cached layer tree on contained-mutation and hove…
codymullins Jun 11, 2026
6d322b9
Merge GPU backdrop-filter (worktree agent)
codymullins Jun 11, 2026
698e7a0
Merge live-loop perf fixes (worktree agent)
codymullins Jun 11, 2026
d61f34e
fix(paint): release the backdrop blit bind group after the pass ends
codymullins Jun 11, 2026
36f6633
fix(bindings): re-layer the script-src setAttribute hook and anchor t…
codymullins Jun 11, 2026
0d2e85e
test(gui): gate GPU-surface headless tests behind STARLING_GPU_TESTS
codymullins Jun 11, 2026
91deadc
perf(css): sample animations over the box style on pure ticks
codymullins Jun 11, 2026
5cd8f2c
perf(gui): vsync-paced live loop and cheaper frames — 120 fps on the …
codymullins Jun 11, 2026
4c3d930
test(css): assert clip-path's typed value in the masking spec tests
codymullins Jun 11, 2026
936eab3
Merge pull request #83 from starling-browser/feat/js-stack-trampoline
codymullins Jun 11, 2026
7c413df
doc cleanup
codymullins Jun 12, 2026
855e84a
delete garbage
codymullins Jun 12, 2026
bb4a4e1
cleanup
codymullins Jun 12, 2026
54813db
minor updates
codymullins Jun 16, 2026
521de28
Merge pull request #85 from starling-browser/feat/js-stack-trampoline
codymullins Jun 16, 2026
2f3068f
fix(js): accept all Unicode Space_Separator whitespace in the lexer
codymullins Jun 16, 2026
ec43500
test(js): cover Unicode Space_Separator whitespace in the lexer
codymullins Jun 17, 2026
5e07827
Merge pull request #86 from starling-browser/fix/js-lexer-unicode-whi…
codymullins Jun 17, 2026
4fa76d6
feat(html): full §13.2.6 tree construction — html5lib 44%→99%
codymullins Jun 17, 2026
447a4d4
fix(html): address PR review — braces, no null-forgiving, frozen tabl…
codymullins Jun 17, 2026
d684e99
Merge pull request #89 from starling-browser/feat/html-tree-construct…
codymullins Jun 17, 2026
8880e6c
fix(build): pin MessagePack 2.5.302 to clear NU1903; bump Aspire.Host…
codymullins Jun 17, 2026
a4a9d02
test(paint): migrate the compositor tests to the GPU-only API
codymullins Jun 17, 2026
458f0fa
Merge pull request #91 from starling-browser/fix/ci-restore-and-style
codymullins Jun 18, 2026
cfa3448
Merge pull request #94 from starling-browser/fix/paint-tests-composit…
codymullins Jun 18, 2026
09e5628
style: enable IDE0011 (always braces) and reformat the repo
codymullins Jun 18, 2026
001f03a
Merge pull request #95 from starling-browser/chore/enable-braces-v2
codymullins Jun 18, 2026
ce7ed05
test(engine): expect camelCase viewBox in serialized inline SVG
codymullins Jun 18, 2026
8f06c2a
Merge pull request #96 from starling-browser/fix/inline-svg-viewbox-c…
codymullins Jun 18, 2026
b5d8490
chore(engine): remove the Jint fallback JS backend
codymullins Jul 6, 2026
6d68ca5
test(js): run every test262 bucket with per-bucket ratchet floors
codymullins Jul 6, 2026
f1d6f78
feat(js): five new Intl constructors and a nine-type Temporal
codymullins Jul 6, 2026
07a7fd9
feat(js): conformance sweep — language 95.69% to 97.92%, built-ins to…
codymullins Jul 6, 2026
47317fe
chore(tests): drop a stale backend mention from the github runtime ha…
codymullins Jul 6, 2026
373860a
feat(js): built-ins 72.6->79.2%, language to 98.1%, Object/TypedArray…
codymullins Jul 6, 2026
39d4bf6
fix(js): spec-faithful Date on pure double time values + TypeError fo…
codymullins Jul 6, 2026
b7819ca
Merge branch 'worktree-agent-a0ec85ea994a71be1' into feat/js-engine-c…
codymullins Jul 6, 2026
41b73a0
feat(js): DataView + TypedArrayConstructors test262 dirs to 100%
codymullins Jul 6, 2026
49f3f33
fix(js): dedupe NotAConstructor helper after Date-branch merge
codymullins Jul 6, 2026
170002a
fix(js): adapt annexB getYear to the rewritten Date field API
codymullins Jul 6, 2026
31f5ed6
Merge branch 'worktree-agent-a1acad5c09a553029' into feat/js-engine-c…
codymullins Jul 6, 2026
671112a
feat(js): re-apply TypedArray method semantics onto the integer-index…
codymullins Jul 6, 2026
451d3e9
fix(js): raise test262 built-ins/String from 82% to 99.26%
codymullins Jul 6, 2026
591abaa
Merge branch 'worktree-agent-a2bf2545e39a1b6da' into feat/js-engine-c…
codymullins Jul 6, 2026
669b47f
feat(js): full ECMA-402 NumberFormat engine — intl402/NumberFormat 28…
codymullins Jul 6, 2026
3ee694d
Merge branch 'worktree-agent-a3d68aaf4858b2330' into feat/js-engine-c…
codymullins Jul 6, 2026
6670a23
test(js): ratchet staging floor to 61
codymullins Jul 6, 2026
c909745
test(js): ratchet built-ins floor to 84
codymullins Jul 6, 2026
0bd5fec
feat(js): per-evaluation private-name identity (§6.2.12)
codymullins Jul 6, 2026
13e3128
feat(js): module namespace TDZ reads (§10.4.6.8 step 5)
codymullins Jul 6, 2026
3a97e2c
feat(js): parameter TDZ (§10.2.11)
codymullins Jul 6, 2026
068ec50
fix(js): `let yield` parses as a lexical declaration in sloppy code
codymullins Jul 6, 2026
7008d84
fix(js): reject 'let' as an IdentifierReference in strict code
codymullins Jul 6, 2026
db94b03
fix(js): strict with-compound writes re-check the deleted binding (§9…
codymullins Jul 6, 2026
4cef1a2
fix(js): `let` statement-position disambiguation
codymullins Jul 6, 2026
3732696
fix(js): reject strict future-reserved words as identifier references
codymullins Jul 6, 2026
0443b2f
fix(js): 'await' (incl. escaped) rejected as a class name in module code
codymullins Jul 6, 2026
03598c4
fix(js): const TypeError from ++/-- and for-head const bindings
codymullins Jul 6, 2026
e69f184
fix(js): private fields reject non-extensible targets (§7.3.28 step 3)
codymullins Jul 6, 2026
676d8f8
feat(js): virtual-length JsArray with real holes + spec-exact Array.p…
codymullins Jul 6, 2026
35021ae
feat(js): spec-exact Object statics + Annex B accessor helpers
codymullins Jul 6, 2026
473ae9d
fix(js): fn self-name immutability checked before store-branch selection
codymullins Jul 6, 2026
0252fd8
fix(js): spec ValidateAndApplyPropertyDescriptor + immutable %Object.…
codymullins Jul 6, 2026
7f00dbd
feat(js): drive built-ins/Array and built-ins/Object test262 to 100%
codymullins Jul 6, 2026
16ef08b
test(js): ratchet built-ins floor to 89.5
codymullins Jul 6, 2026
e379495
Merge branch 'worktree-agent-aa807849b81a3eba6' into feat/js-engine-c…
codymullins Jul 6, 2026
468324a
feat(js): drive built-ins/RegExp conformance — Unicode 17 property ta…
codymullins Jul 6, 2026
a0e55ce
Merge branch 'worktree-agent-a0b10f4a54771e733' into feat/js-engine-c…
codymullins Jul 6, 2026
0dfc053
test(js): ratchet built-ins floor to 93.5
codymullins Jul 7, 2026
1c06a76
remove accidentally deleted thing
codymullins Jul 7, 2026
34eb23a
Merge remote-tracking branch 'origin/main' into feat/js-engine-confor…
codymullins Jul 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,6 @@ jobs:
# native MTP --coverage flag is ignored in this mode). The collector
# ships with the MSTest meta-package, so no extra dependency is needed.
run: dotnet test --no-build -c Release --logger "trx;LogFileName=test.trx" --collect:"Code Coverage;Format=cobertura"
- name: Test (Jint alt-engine — Engine suite under STARLING_JS_ENGINE=jint)
# The default test run above exercises the in-house Starling.Js backend.
# Jint is a runtime-selectable alternative (a temporary compat crutch);
# re-run the engine integration suite against it so the alt backend can
# never silently regress. The Jint backend's own unit tests
# (Starling.Bindings.Jint.Tests) already ran in the default step.
env:
STARLING_JS_ENGINE: jint
run: dotnet test tests/Starling.Engine.Tests/Starling.Engine.Tests.csproj --no-build -c Release --logger "trx;LogFileName=test-jint.trx"
- name: Test (golden-image)
run: dotnet test --no-build -c Release --filter Category=GoldenImage
- name: Upload coverage to Codecov
Expand Down Expand Up @@ -117,7 +108,6 @@ jobs:
src/Starling.Js/ \
src/Starling.Js.Hosting/ \
src/Starling.Bindings/ \
src/Starling.Bindings.Jint/ \
src/Starling.Loop/ \
src/Starling.Engine/

Expand Down
8 changes: 3 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,16 +163,14 @@ Runtime selection flags go after `aspire run --` and are forwarded to both GUI
and headless resources:

```bash
aspire run -- --jint --imagesharp # Jint JS backend + CPU paint
aspire run -- --starling --imagesharp # Starling JS backend + CPU paint
aspire run -- --starling --gpu # Starling JS backend + WebGPU paint
```

Flags win over `STARLING_JS_ENGINE` and `STARLING_PAINT_BACKEND`.

The default JS engine is **Starling**. Pass `--jint` (or set
`STARLING_JS_ENGINE=jint`) to use the Jint backend instead. Binding / DOM /
JS-OM work should target `src/Starling.Bindings` and its matching tests unless
the task is explicitly about the Jint backend.
The JS engine is **Starling** — the only backend. Binding / DOM / JS-OM work
targets `src/Starling.Bindings` and its matching tests.

The default HTML parser is the **Starling parser**. The Aspire resources and the
desktop `Starling.Gui` startup both default to it. Pass `--anglesharp-html` (or
Expand Down
3 changes: 1 addition & 2 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
net11 and the preview language version. So Starling.Bindings and every
project that consumes it move to net11. Projects below Bindings (Dom, Js,
Common, and so on) stay on net10 and are referenced downlevel, which the
runtime allows. The Jint backend does not reference Bindings, so it stays
on net10 too. Dom.Tests stays on net10, so the core DOM tests run
runtime allows. Dom.Tests stays on net10, so the core DOM tests run
unchanged.

The Aspire host (Starling.AppHost) stays on net10: its Aspire.AppHost.Sdk
Expand Down
7 changes: 0 additions & 7 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,6 @@
<!-- Crypto: pure-managed TLS support (consumed from M2 onward) -->
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.5.0" />

<!-- Alternative JS engine (Starling.Bindings.Jint). Jint is a pure-managed
interpreter — its only dependency is Acornima (managed JS parser),
which depends only on in-box BCL packages. No native/runtime assets, so
the managed-first interop policy holds like BouncyCastle. Selected at
runtime via STARLING_JS_ENGINE=jint; removable by deleting the backend
project + this line. -->
<PackageVersion Include="Jint" Version="4.9.2" />
<PackageVersion Include="Wasmtime" Version="44.0.0" />

<!-- Legacy single-byte / CJK encodings (pure-managed; Rule-0 clean).
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ aspire run

```bash
# Defaults are --starling (JS VM) and --imagesharp-gpu (WebGPU paint).
aspire run -- --jint --imagesharp # Jint JS engine + CPU paint backend
aspire run -- --starling --imagesharp # Starling JS engine + CPU paint backend
```

**Agent access.** Starling exposes a loopback Model Context Protocol server for
Expand Down
2 changes: 0 additions & 2 deletions Starling.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
<Project Path="bench/Starling.HtmlParserBench/Starling.HtmlParserBench.csproj" />
<Project Path="bench/Starling.RegExp.Benchmarks/Starling.RegExp.Benchmarks.csproj" />
<Project Path="tests/Starling.RegExp.Tests/Starling.RegExp.Tests.csproj" />
<Project Path="tests/Starling.Bindings.Jint.Tests/Starling.Bindings.Jint.Tests.csproj" />
<Project Path="tests/Starling.BindingSurface.Tests/Starling.BindingSurface.Tests.csproj" />
<Project Path="tests/Starling.Bindings.Tests/Starling.Bindings.Tests.csproj" />
<Project Path="tests/Starling.Ipc.Tests/Starling.Ipc.Tests.csproj" />
Expand Down Expand Up @@ -52,7 +51,6 @@
<Project Path="tools/Starling.IdlGen/Starling.IdlGen.csproj" />
</Folder>
<Project Path="src/Starling.Bindings/Starling.Bindings.csproj" />
<Project Path="src/Starling.Bindings.Jint/Starling.Bindings.Jint.csproj" />
<Project Path="src/Starling.Common/Starling.Common.csproj" />
<Project Path="src/Starling.Css/Starling.Css.csproj" />
<Project Path="src/Starling.Dom/Starling.Dom.csproj" />
Expand Down
20 changes: 0 additions & 20 deletions THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,26 +31,6 @@ apply to your use.
The current paint path directly references these packages. Building Starling
requires a valid Six Labors license key. The repo does not ship that key.

## Jint JavaScript Engine

Packages:

- `Jint` — BSD 2-Clause License, Copyright (c) 2013 Sebastien Ros
- `Acornima` — BSD 3-Clause License, Copyright (c) Adam Simon

Sources:

- <https://github.com/sebastienros/jint>
- <https://github.com/adams85/acornima>

License: BSD-2-Clause (Jint) and BSD-3-Clause (Acornima). Both permit binary
redistribution provided the copyright notice, license conditions, and
disclaimer are reproduced. Full texts: see `third-party-licenses/`.

The optional Jint JS backend (`src/Starling.Bindings.Jint`, selected via
`STARLING_JS_ENGINE=jint`) references these packages. Acornima is Jint's only
dependency. Both ship in any build that includes that backend.

## Geist Fonts

Path: `src/Starling.Gui/Assets/Fonts/`
Expand Down
10 changes: 5 additions & 5 deletions bench/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ one generated overview.
`bench/results/<date>/`.
- **`benchmarks.md`** — a generated dashboard that merges both. Do not edit it by
hand. See [Generate the dashboard](#generate-the-dashboard).
- **Engine comparisons** — standalone projects that rank a Starling subsystem
against a mature managed library on the same inputs. `Starling.JsEngineBench`
does this for the Starling JS engine against Jint (`engine-comparison.md`).
`Starling.HtmlParserBench` does it for the Starling HTML parser against
AngleSharp (`html-parser-comparison.md`).
- **Subsystem benches** — standalone projects that measure one Starling
subsystem on a fixed suite of inputs. `Starling.JsEngineBench` does this for
the Starling JS engine (`engine-comparison.md`). `Starling.HtmlParserBench`
ranks the Starling HTML parser against AngleSharp
(`html-parser-comparison.md`).

The split follows the pattern from
[dotnet/performance](https://github.com/dotnet/performance): microbenchmarks for
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace Starling.HtmlParserBench;
// Where does Starling.Html land against a mature, pure-managed reference
// parser (AngleSharp)? Same input, same machine, reported side by side so the
// numbers compare fairly — the HTML-parsing analogue of
// bench/engine-comparison.md (Starling vs Jint).
// bench/engine-comparison.md.
//
// Three columns:
// Starling — the Starling parser to its own DOM (baseline).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
same fixtures, ranked on one machine so the numbers compare fairly.

Kept as its OWN project, separate from bench/Starling.Bench, on purpose
(same reasoning as Starling.JsEngineBench vs Jint): it needs only
(same reasoning as Starling.JsEngineBench): it needs only
Starling.Html + Starling.Dom + AngleSharp (+ the AngleSharp backend adapter),
so it builds and runs without dragging in the paint/compositor benches and
needs no Six Labors license. AngleSharp is pure-managed, so referencing it
Expand Down
147 changes: 0 additions & 147 deletions bench/Starling.JsEngineBench/EngineComparisonBench.cs

This file was deleted.

Loading
Loading