PureXML/Sources/Schema
Mihaela Mihaljevic bc0638e201 perf(schema): memoize group expansion in the compiled content model
Compiling a schema with deeply nested, multiply-referenced model groups was
exponential: groupReferenceParticle inlined each <xs:group ref> into the Particle
content model, so g0=(g1,g1), g1=(g2,g2), ... built 2^K particles (depth 14 =
0.21s, depth 20 ~13-18s). The expansion is now memoized per (group definition,
cycle-visiting set) in a per-compile GroupParticleMemo shared across the value
copies XSDContext.scoped/visiting make, so sibling references share it and the
build drops to O(groups) (depth 40 now ~0.016s; previously infeasible).

The shared content term is reused by value (copy-on-write), so the compiled model
is identical and validation is unchanged: the XSTS gate holds (invalid-schemas-
accepted 15, valid-schemas-rejected 0, instance buckets unchanged) and the
streaming-vs-tree fuzz differential still passes. This closes the schema-compile
half of the interactive-safety group blowup (companion to the positionCap
determinism fix); a depth-40 compile test guards against regression. Full suite,
style, namespacing, and WASM all pass.
2026-06-22 23:24:19 +02:00
..
BuiltinType.swift
ComplexType.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +02:00
ComplexValidator.swift fix(schema): optional xs:all group requires its members when present 2026-06-22 18:29:09 +02:00
ComplexValidatorAttributes.swift fix(schema): resolve defaulted/fixed IDREF attributes against IDs 2026-06-22 18:56:36 +02:00
ComplexValidatorContentModel.swift fix(schema): optional xs:all group requires its members when present 2026-06-22 18:29:09 +02:00
ComplexValidatorDerivation.swift fix(schema): reject xsi:type=anyType on an anySimpleType-declared element 2026-06-20 02:09:51 +02:00
ComplexValidatorHelpers.swift fix(schema): streaming validator applies default/fixed value constraints 2026-06-20 17:38:45 +02:00
ComplexValidatorIDs.swift
ComplexValidatorStreaming.swift fix(schema): optional xs:all group requires its members when present 2026-06-22 18:29:09 +02:00
ComplexValidatorXSIType.swift
ContentMatcher.swift fix(schema): saturate effectively-unbounded content-model counters (#192, partial) 2026-06-21 13:16:24 +02:00
ContentModelDeterminism.swift feat(schema): compositional UPA determinism, delete positionCap 2026-06-22 22:19:44 +02:00
ContentModelDeterminismCompositional.swift feat(schema): compositional UPA determinism, delete positionCap 2026-06-22 22:19:44 +02:00
ContentModelEffectiveModel.swift fix(schema): check UPA over an extension's effective content model 2026-06-21 22:12:32 +02:00
ContentNFABuilder.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +02:00
DateTimeParser.swift fix(schema): reject year 0000 in dateTime, date, gYearMonth, gYear 2026-06-20 01:31:14 +02:00
DateTimeValue.swift
DecimalValue.swift
DerivationMethod.swift
DurationValue.swift
GroupParticleMemo.swift perf(schema): memoize group expansion in the compiled content model 2026-06-22 23:24:19 +02:00
IdentityConstraint.swift
IdentityFieldType.swift fix(schema): reject identity field whose declared target is a non-simple complex type 2026-06-22 13:10:30 +02:00
IdentityFieldValue.swift
IdentityValidator.swift fix(schema): reject identity field whose declared target is a non-simple complex type 2026-06-22 13:10:30 +02:00
IdentityValidatorDefaults.swift
IDTracker.swift
Lexical.swift
OccurrenceRange.swift fix(schema): count content-model occurrences 2026-06-19 23:32:04 +02:00
ParticleNormalization.swift
ParticleRestriction.swift fix(schema): a content-bearing derived group cannot restrict a base element 2026-06-22 19:40:57 +02:00
ParticleRestrictionElement.swift fix(schema): restriction may not narrow an element to an extension-derived type 2026-06-20 18:34:50 +02:00
ParticleRestrictionHelpers.swift
Primitive.swift
RelaxNGCompactHelpers.swift
RelaxNGCompactLexer.swift
RelaxNGCompactParser.swift
RelaxNGContentType.swift
RelaxNGDerivative.swift
RelaxNGDiagnostics.swift
RelaxNGFacets.swift
RelaxNGGrammarCheck.swift
RelaxNGGrammarCheckSections.swift
RelaxNGNameClasses.swift
RelaxNGNode.swift
RelaxNGParser.swift
RelaxNGParserIncludes.swift
RelaxNGPattern.swift
RelaxNGRestrictionChecker.swift
RelaxNGRestrictionOverlap.swift
RelaxNGRestrictionPaths.swift
RelaxNGRestrictions.swift
RelaxNGSchema.swift
SchemaAllGroupPlacement.swift feat(schema): locate derivation/cycle-pass schema diagnostics 2026-06-21 16:53:02 +02:00
SchemaAttributeApplicability.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaAttributeRestriction.swift feat(schema): locate attribute-pass schema diagnostics 2026-06-21 16:28:10 +02:00
SchemaAttributeUniqueness.swift fix(schema): flatten redefine self-reference and exclude prohibited uses in attribute uniqueness 2026-06-22 03:52:13 +02:00
SchemaCompileValidation.swift fix(schema): reject global form in included/imported documents 2026-06-22 17:50:53 +02:00
SchemaCompositionValidations.swift feat(schema): locate composition/redefine-pass schema diagnostics 2026-06-21 19:41:31 +02:00
SchemaContentDerivation.swift fix(schema): a complexContent restriction cannot restrict simple content 2026-06-22 19:40:57 +02:00
SchemaContentOrder.swift
SchemaDerivationControl.swift
SchemaDocument.swift
SchemaDocumentHints.swift
SchemaElementDeclarationsConsistent.swift refactor(schema): split Element-Declarations-Consistent out of SchemaStructure 2026-06-22 15:30:58 +02:00
SchemaExtensionAllGroup.swift feat(schema): locate extension/substitution-pass schema diagnostics 2026-06-21 18:35:38 +02:00
SchemaFacetApplicability.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaIDAttribute.swift
SchemaIdentityXPath.swift
SchemaIDValueConstraint.swift feat(schema): locate ID-typed value-constraint errors 2026-06-21 14:37:29 +02:00
SchemaImportNamespace.swift feat(schema): locate reference-resolution schema diagnostics 2026-06-21 18:09:20 +02:00
SchemaNameUniqueness.swift feat(schema): locate names/UPA/notation-pass schema diagnostics 2026-06-21 19:16:54 +02:00
SchemaNestedDefinition.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaNotationValidity.swift feat(schema): locate names/UPA/notation-pass schema diagnostics 2026-06-21 19:16:54 +02:00
SchemaRedefineAttributeGroupRestriction.swift refactor(schema): split redefine attribute-group restriction into its own file 2026-06-22 15:07:53 +02:00
SchemaRedefineSelfReference.swift refactor(schema): split redefine attribute-group restriction into its own file 2026-06-22 15:07:53 +02:00
SchemaReferenceForeignPools.swift
SchemaReferenceResolution.swift fix(schema): an unprefixed type ref to a target-namespace type is undeclared 2026-06-21 23:17:14 +02:00
SchemaReferences.swift feat(schema): locate reference-resolution schema diagnostics 2026-06-21 18:09:20 +02:00
SchemaSimpleTypeFinal.swift feat(schema): locate simple-type-pass schema diagnostics 2026-06-21 15:55:59 +02:00
SchemaSimpleTypeValidity.swift feat(schema): locate simple-type-pass schema diagnostics 2026-06-21 15:55:59 +02:00
SchemaStructure.swift refactor(schema): split Element-Declarations-Consistent out of SchemaStructure 2026-06-22 15:30:58 +02:00
SchemaStructureHelpers.swift feat(schema): locate structure-pass schema diagnostics 2026-06-21 15:23:13 +02:00
SchemaSubstitutionType.swift feat(schema): locate extension/substitution-pass schema diagnostics 2026-06-21 18:35:38 +02:00
SchemaUndeclaredNamespace.swift feat(schema): locate reference-resolution schema diagnostics 2026-06-21 18:09:20 +02:00
SchemaWildcardNamespace.swift
SchemaXSIAttribute.swift feat(schema): locate attribute-pass schema diagnostics 2026-06-21 16:28:10 +02:00
SimpleType.swift
StreamingXSDValidator.swift fix(schema): streaming validator applies default/fixed value constraints 2026-06-20 17:38:45 +02:00
TypeDerivation.swift
XPathQueryCache.swift
XSDAttributeParser.swift
XSDCompletions.swift
XSDComplexContent.swift
XSDContext.swift perf(schema): memoize group expansion in the compiled content model 2026-06-22 23:24:19 +02:00
XSDDerivation.swift feat(schema): locate composition/redefine-pass schema diagnostics 2026-06-21 19:41:31 +02:00
XSDDerivationTables.swift fix(schema): apply substitution-group block to a member with an inline type 2026-06-22 06:21:23 +02:00
XSDParser.swift fix(schema): make the container-location root fallback live 2026-06-19 23:32:04 +02:00
XSDParserHelpers.swift
XSDParserParticles.swift perf(schema): memoize group expansion in the compiled content model 2026-06-22 23:24:19 +02:00
XSDParserTypeReferences.swift fix(schema): an untyped substitutionGroup member inherits its head's type 2026-06-20 02:47:07 +02:00
XSDParserUnion.swift docs: align stale figures with code and the enforced XSTS gate 2026-06-19 23:32:04 +02:00
XSDSchemaValidations.swift
XSDSimpleContentParser.swift
XSDSimpleParser.swift
XSDSimpleParser+Facets.swift
XSDSubstitutionMembers.swift fix(schema): stop blocked substitution chaining 2026-06-19 08:37:19 +02:00
XSDValidations.swift
XSDWildcardParser.swift