EventReader.next(), both initializers, and the Event alias are public (an internal typealias in a split file had been shadowing the public Parsing.Event); a new PureXMLPublicAPITests target compiles without testable import so facade gaps fail CI. The large-corpus benchmarks exposed document-order sorting as quadratic on flat fan-outs; the fix's first attempt was itself worse (an eager sibling table built per predicate evaluation), caught by sampling the live run, and replaced with a lazy table: single-node sets never touch order keys and a parent's table builds on its second lookup. XPath at 42 MB drops 27.1 s to 1.57 s (190x to 11.7x); at 210 MB PureXML completes in 9.4 s the query libxml2 refuses at its 10M node-set cap (#143 tracks our configurable budget). Benchmark harness: size series to 210 MB, CORPUS mode for real files (NASA, SwissProt measured), SAX stage, refusal-aware table, NULL-safe C driver. All conformance suites, Linux, and WASM verified. Closes #142. |
||
|---|---|---|
| .. | ||
| Big5Decoder.swift | ||
| Big5Table1.swift | ||
| Big5Table2.swift | ||
| Big5Table3.swift | ||
| Big5Table4.swift | ||
| Big5Table5.swift | ||
| Big5Table6.swift | ||
| Big5Table.swift | ||
| ByteDecoder.swift | ||
| ByteEncoder.swift | ||
| ByteStorage.swift | ||
| CJKByteEncoder.swift | ||
| Diagnostic.swift | ||
| DoctypeScanner.swift | ||
| DoctypeScannerConditional.swift | ||
| DoctypeScannerEntities.swift | ||
| DoctypeScannerStrict.swift | ||
| DocumentType.swift | ||
| DTDAttListGrammar.swift | ||
| DTDContentModelGrammar.swift | ||
| EntityDecoder.swift | ||
| EntityReplacementGrammar.swift | ||
| EntityResolver.swift | ||
| EUCJPDecoder.swift | ||
| EUCKRDecoder.swift | ||
| EUCKRTable1.swift | ||
| EUCKRTable2.swift | ||
| EUCKRTable3.swift | ||
| EUCKRTable4.swift | ||
| EUCKRTable5.swift | ||
| EUCKRTable6.swift | ||
| EUCTWDecoder.swift | ||
| EUCTWPlane11.swift | ||
| EUCTWPlane12.swift | ||
| EUCTWPlane13.swift | ||
| EUCTWPlane21.swift | ||
| EUCTWPlane22.swift | ||
| EUCTWPlane23.swift | ||
| EUCTWTable.swift | ||
| Event.swift | ||
| EventReader.swift | ||
| EventReaderAttributes.swift | ||
| EventReaderEndTag.swift | ||
| EventReaderRecovery.swift | ||
| EventReaderValidity.swift | ||
| ExternalID.swift | ||
| GB18030Decoder.swift | ||
| GB18030Ranges.swift | ||
| GBKDecoder.swift | ||
| GBKTable1.swift | ||
| GBKTable2.swift | ||
| GBKTable3.swift | ||
| GBKTable4.swift | ||
| GBKTable5.swift | ||
| GBKTable6.swift | ||
| InputEncoding.swift | ||
| ISO2022JPDecoder.swift | ||
| JIS0208Table1.swift | ||
| JIS0208Table2.swift | ||
| JIS0208Table3.swift | ||
| JIS0212Table1.swift | ||
| JIS0212Table2.swift | ||
| Limits.swift | ||
| Mark.swift | ||
| NamespaceContext.swift | ||
| ParsedDocument.swift | ||
| ParseError.swift | ||
| Parser.swift | ||
| PseudoAttributeScanner.swift | ||
| PushAsync.swift | ||
| PushParser.swift | ||
| PushScanner.swift | ||
| Reader.swift | ||
| ReadResult.swift | ||
| SAXHandler.swift | ||
| ShiftJISDecoder.swift | ||
| SingleByteEncodings.swift | ||
| SingleByteTables.swift | ||
| SourceRange.swift | ||
| StreamingDecoder.swift | ||
| StreamingDecoderEUCTW.swift | ||
| StreamingDecoderISO2022JP.swift | ||
| TextReader.swift | ||
| UnparsedEntity.swift | ||
| ValidityFinding.swift | ||
| XMLCharacter.swift | ||
| XMLDeclaration.swift | ||