Skip to content

[Rust] Release 0.49.3

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Aug 07:42
a44eccf

Added

  • Canonicalization of a recursive schema with no finite witness, which now folds to false.
  • Canonicalization of $dynamicRef and $recursiveRef, which resolve through the dynamic scope and stay symbolic like any other reference. A dangling $dynamicRef errors rather than staying Raw.
  • Canonicalization of minContains under uniqueItems, where a demand asking for more matches than its own schema has distinct values now folds to false.
  • Canonicalization of a Draft 4 patternProperties coverage closed by additionalProperties: false, spelled as the closed map it was parsed from.
  • Canonicalization of a oneOf whose branches repeat, where a repeated branch can never contribute exactly one match.
  • Canonicalization of a $ref whose target is an empty schema, which now folds to false.
  • Canonicalization of unevaluatedItems beside allOf, where every branch must pass and so the indexes they evaluate are known without the instance.
  • Canonicalization of unevaluatedProperties beside allOf, where every branch must pass and so what they evaluate is known without the instance.
  • Canonicalization of a Draft 4 type list holding integer beside other types with enum, which previously modeled only when spelled as an allOf.
  • Canonicalization of patternProperties patterns matching finitely many keys, such as ^a$ and ^(a|b)$.
  • Canonicalization of unevaluatedProperties and unevaluatedItems when no in-place applicator sits beside them.

Fixed

  • additionalItems values that are not schemas silently ignored beside an array-form items (they should fail the build like additionalProperties).
  • additionalItems beside a boolean items rejecting every instance, such as {"additionalItems": false, "items": false}.
  • additionalItems beside a non-array items value failing schema compilation with an error blaming additionalItems (the keyword should be ignored).
  • Draft 4 rejecting a size bound at or past 2^64, such as {"maxItems": 18446744073709551616}.
  • An integer past the f64 range admitted by a fractional bound it exceeds, such as 1e400 under {"exclusiveMaximum": 0.1}.
  • A $ref at the root of an $id-bearing subresource dropped as a self-reference when its pointer matched the one that reached that subresource.
  • Canonicalization reusing one definition's body for a same-named definition in another resource, when the name spells a canonical URI.
  • unevaluatedItems counting prefixItems as evaluating elements before Draft 2020-12, where it is not a keyword.

Performance

  • Up to 70% faster evaluate by building each location in a single allocation instead of two, reusing the instance location a node already built, and caching evaluation paths across instance nodes.