Skip to content

v0.3.0

Choose a tag to compare

@mxpv mxpv released this 13 Apr 17:54
· 1006 commits to main since this release
b01ca13

Changelog

0.3.0

This release introduces the PCP composition engine — a ground-up rewrite of the composition module with an arena-based prim index, namespace mapping via MapFunction, and full LIVRPS arc support including relocates. The new StageBuilder API adds support for session layers, variant fallbacks, and composition error callbacks. USDA and USDC parsers also gain broader coverage for time samples, spline attributes, and several metadata fields.

Compliance

New AOUSD Core Spec coverage in this release:

  • 10.3.2.1.1 Reference namespace mapping
  • 10.3.2.3.1 Inherit namespace mapping
  • 10.3.2.5.1 Variant fallback map
  • 10.3.2.6 Relocates
  • 10.3.2.6.1 Relocates namespace mapping
  • 10.4 LIVERPS strength ordering
  • 10.4.1 Specializes global weakness
  • 10.5 Namespace mappings (MapFunction)
  • 10.6 Composition errors (non-fatal)
  • 11.2 Session layer

New PCP Composition Engine

  • Add PrimIndex arena-based DAG with LIVRPS strength ordering (3e86045)
  • Introduce LayerStack to bundle layers, identifiers, and sublayer stacks (6da01af)
  • Add MapFunction for namespace mapping across composition arcs (6f12d69)
  • Implement relocates composition with cycle detection (009ade5, 37e6cba)
  • Implement specializes global weakness per spec 10.4.1 (ef8d29f)
  • Propagate implied inherits through seed prefix equivalences (7dc1f43)
  • Recursive inherits, specializes, and variant arc processing (d7efb57)
  • Nested variant resolution and variant-scoped dependency collection (461a350)
  • Resolve variant selections across all node paths (73b8d74)
  • Default variant selection from first variant in set (3c0f7bd)
  • Expand ancestral seeds for reference, payload, inherit, and specialize targets (e5e592d, f127c7f)
  • Propagate child specs from parent composition nodes (ae43049)
  • Add composition error reporting with CompositionError and DependencyKind (b51efb0, ce2c4b6)
  • Restructure dependency collection with error callback (d4f664c)
  • Canonicalize resolver identifiers (ccbc875)

Stage

  • Add StageBuilder and simplify Stage::open (ce11f1e)
  • Add session layer support (b3ec6e0)
  • Add variant fallback map (PcpVariantFallbackMap) (40dadfb)

Text Format (USDA)

  • Parse time samples, property suffixes, and relationship list ops (27d3488)
  • Parse spline attributes (de7ce40)
  • Parse relocates (82c6781)
  • Support block comments in the tokenizer (c1818ef)
  • Accept unrecognized type names and dotless float literals (c0e61c1)
  • Accept instanceable prim metadata (baf363f)
  • Support displayName prim metadata (40e3384)
  • Allow type name on all prim specifiers (aa6dddf)
  • Accept USDA version 1.0.x in magic header (b2ee2b4)

Binary Format (USDC)

  • Parse relocates (82c6781)
  • Fix bool parsing (f23b856)
  • Fix variant path format to use canonical form (0f64de4)
  • Fix half-float vector inlined value reading (ebeae8d)
  • Fix string array default value read (40d42be)

SDF

  • Add ListOp composition with compose_over and combine_chain (6a50227)
  • Add optional serde Serialize for SDF types (801065b)
  • Use fixed-size arrays for vec/quat/matrix Value variants (669d9b6)
  • Separate array semantics from Type enum into TypeInfo (3324408)

Bug Fixes

  • Fix relocate node strength ordering in LIVRPS (1f60dbf)
  • Fix cross-seed variant slice invalidation (bd5912b)
  • Fix propertyChildren key name and emit variantSetChildren (3768f3f)
  • Fix several text parser issues found by compliance tests (655da04)
  • Skip default and empty field values in text parser (4e195ba)
  • Store pseudo-root bare string as comment, not documentation (3deb0a4)
  • Fix USDA parser gaps for composition tests (e2c8bb8)
  • Fix test on windows (e1e7446)

Performance

  • Avoid heap allocation for single-pair MapFunction (4f1a790)
  • Extract Relocates struct and eliminate O(n^2) cache cloning (5c26022)
  • Remove unnecessary clones to reduce allocation pressure (3bb43dc)

Testing

  • Add composition compliance tests (63515dd)
  • Add text format compliance tests (0fcbbd9)
  • Vendor sample implementations for compliance testing (f1d3e9e)
  • Use vendored assets instead of duplicate fixtures (eed406e)

Dependencies