diff --git a/docs/benchmarks.md b/docs/benchmarks.md index 866bb2b4..6e9f8bd4 100644 --- a/docs/benchmarks.md +++ b/docs/benchmarks.md @@ -45,9 +45,10 @@ selected provider. Rejection cases check corrupted signature evidence and malfor XML on every backend, rather than interpreting an error as a successful operation. RSA-SHA256 sign/verify use the selected provider's actual key handle. -Projection calls the production normalizer over a prepared backend DOM and lexical -positions, without a second parser invocation. Differential parsing has no -single-backend projection measurement. Graph compilation and execution are separate +Projection calls the production normalizer over a prepared roxmltree DOM and lexical +positions, without a second parser invocation. It is measured for roxmltree only: +xmloxide builds the semantic arena as it parses, so its parse case covers that +work, and differential parsing has no single-backend projection. Graph compilation and execution are separate synthetic fan-out measurements at 1/8/32/64 references, not substitutes for complete operation measurements. Typed policy validation/checks are measured independently; their cost must not be subtracted from an end-to-end result to claim an unsafe path. diff --git a/docs/xml-backend-patches.md b/docs/xml-backend-patches.md index ac0a0b0a..6015eaf8 100644 --- a/docs/xml-backend-patches.md +++ b/docs/xml-backend-patches.md @@ -51,15 +51,26 @@ of a replacement node arena solely to drop the consumed parser. The maintained construction kernels specialize storage without changing parser selection or grammar. Scoped reference replay pays raw parser state, DTD models, -namespace indexes, source positions and the semantic arena with its current -execution. DTD entity/default tables move into runtime state; entity fragments -move node payloads while rebasing links instead of cloning recursive subtrees. -Element and DTD-group parsing use bounded, paid continuation stacks. Diagnostic -labels retain their allocation charges, and resource refusal is terminal rather -than a malformed-input rejection or a reason to try another backend. +namespace indexes and the semantic arena with its current execution. DTD +entity/default tables move into runtime state. Element and DTD-group parsing use +bounded, paid continuation stacks. Diagnostic labels retain their allocation +charges, and resource refusal is terminal rather than a malformed-input +rejection or a reason to try another backend. -The backend adapters continue to use the shared lexical preflight and semantic -arena. Backend selection does not introduce implicit fallback, a second ID -resolver or an external entity acquisition path. Differential mode still -compares the two semantic projections rather than choosing whichever parser -accepts an input. +The xmloxide parser is generic over the tree it writes to. xml-sec parses into +the semantic arena directly, with no intermediate xmloxide DOM: the parser +supplies every source range, and an entity's replacement text is read into the +same tree, its nodes taking the outermost reference's range and remaining +unactionable. A DOCTYPE is recognized only by its case-sensitive keyword +(XML 1.0 production 28). When the text `