Repository navigation
fix(xml): preserve mixed nils and scale tagged-item lookup - #142
Closed
nth-bailey wants to merge 11 commits into
Closed
nth-bailey wants to merge 11 commits into
nth-bailey wants to merge 11 commits into
Conversation
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.
Mixed scalar/nested elements carrying xsi:nil deserialize into ordered tagged nulls, but the writer rejected them. Emit present nil elements with correct namespace bindings, preserving order and the distinction from empty strings.
For large mixed child-tag tables, choose a temporary borrowed-key index using payload size and a bounded sample of lookup work. Preserve first-match duplicate ordering and rebuild after schema metadata edits. Sampling avoids the measured short/concentrated-document regressions of the initial eager index.
Three alternating process pairs show 1,000-item distributed writes about 31% faster with 64 possible tags and 55% faster with 256 (2.23x). Final common-content results improve 2–5%; tiny writes still differ by a few nanoseconds and read controls are roughly flat. Keep the raw process variation and workload limits when reviewing these figures.
Validation: complete gate passes with 324 Rust tests, strict fmt/Clippy, Ruff, and 112 Python tests at 100% statement/branch coverage. Tests cover ordered nils and independently resolve output namespaces, plus indexed records/objects, duplicate ordering, metadata edits and unknown kinds.
Report and raw evidence include every positive/negative prototype, exact source patches, matching harness/locks, allocation diagnostics, instruction profiles and rejected preflights.
Stacked on #137. Main is unchanged; keep this draft for correctness/performance review.
Criterion process JSON is retained in verified per-experiment archives, with every original member checksum and the packaging script, to keep the code diff reviewable.