PureXML/Package.swift
Mihaela Mihaljevic 9e345ea0fe feat(xpath,parsing): public streaming surface, linear document-order at scale
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.
2026-06-11 06:06:31 +02:00

34 lines
704 B
Swift

// swift-tools-version: 6.1
import PackageDescription
let package = Package(
name: "PureXML",
products: [
.library(
name: "PureXML",
targets: ["PureXML"],
),
],
dependencies: [],
targets: [
.target(
name: "PureXML",
path: "Sources",
),
.testTarget(
name: "PureXMLPublicAPITests",
dependencies: ["PureXML"],
path: "PublicAPITests",
),
.testTarget(
name: "PureXMLTests",
dependencies: ["PureXML"],
path: "Tests",
resources: [
.copy("Fixtures"),
],
),
],
)