A path expression sorted its result into document order through orderUnique, which first ran a Set-based de-duplication. But evaluateSteps already returns a duplicate-free node-set: each step de-duplicates across its context nodes, or uses an axis whose per-context results cannot overlap. So that Set copied every node for nothing, and each copy retains the wrapped tree node, whose weak parent reference forces a side table and the slow reference-counting path. Path and trailing-path evaluation now sort the steps' result directly. Unions and filter primaries, which genuinely can carry duplicates, keep the de-duplicating pass. Measured xpath ~9% faster on the 20k-item generated corpus via a same-state A/B, identical results. The existing node-set de-duplication and union tests cover that a path still yields each node once. |
||
|---|---|---|
| .. | ||
| design | ||
| plans | ||
| rules | ||
| benchmarks.md | ||
| onboarding-antigravity.md | ||
| production-readiness.md | ||
| release-hurdles.md | ||
| roadmap.md | ||
| schema-validity-burndown.md | ||
| validation-coverage-registry.txt | ||
| validation-field-registry.txt | ||
| xsts-deviations.md | ||