Skip to content

Native parser public API and integration work ​

The current CSS target is LightPanda-style renderless text. This supersedes the former full-computed-CSS plan and its V0-V9/R3-R7/C6 grammar obligations. Removing these features is an intentional behavior change, not deferred implementation debt. Historical implementation measurements in git history do not describe the current engine.

CSS boundary ​

AreaDisposition
Syntax, selectors, mediaRetained, including bounded work and existing selector specificity.
Style/media/supports/layer/import/font-face CSSOMRetained; declarations and font descriptors store text.
Other at-rulesGeneric CSSRule with source cssText; no cascade effects or specialized interfaces.
V0-V9 typed grammars, math, colors, transforms, all resetsRemoved by design: parsing cost is not justified by renderless automation. Catalog names are data, not grammar obligations.
Keyframes, property registrations, container queries, pages/counters/namespacesSemantic models removed by design; opaque rule text remains.
Computed valuesText cascade, inheritance and small defaults; synthetic width/height only. No unit/color computation.
VariablesInherited custom text, with optional depth/size-bounded textual substitution in ordinary properties; no typed substitution graph.
Retained limitationsNested conditional rules/interleaved declarations and import layer()/supports() still have explicit unsupported boundaries; stylesheet byte/MIME work remains below.

UA/shadow/import handling, broader selectors/media conditions, basic synthetic flex geometry and textual variables are deliberate conveniences beyond LightPanda. CSS parsing remains on demand. Public XPath, HTML/XML serialization, syntax-only ParseCss and the native parser improvements remain unchanged. No HTML tokenizer, DOM, XML or XPath work is part of this CSS reduction.

Retained completed slices ​

Browser loading, selectors and parser integration ​

Public API dependencies still required ​

Each public slice requires intentional API snapshots on net8.0/net10.0 and execution from the unsigned local-feed package consumer, without friend access or a project reference. A separate native pack/run is required for AOT evidence.

Acceptance still required ​

Routine checks are Release builds/tests, ParserDependencyTests, DomBindingsStalenessTests, the public API snapshots, the packed consumer and the dependency inventory. Raw CSS values are intentional; do not misrepresent them as full computed-style conformance.