Skip to content

[Rust] Release 0.61.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Nov 16:03
· 17 commits to master since this release
643cb24

Added

  • Evaluation::root() and OutputUnit for walking evaluation output units without serializing them.

Fixed

  • . in pattern and patternProperties matched \r, U+2028 and U+2029 (it should reject every line terminator).
  • evaluate() reported a missing single required name beside additionalProperties: false at /additionalProperties (it should be /required).
  • Numeric keywords misjudging whole floats past 2^53. #1825
  • Building a validator with an explicit draft retrieving the schema's $schema URI.
  • format: "date-time", "date" and "time" accepting +, ,, -, . or / where RFC 3339 requires a digit. #1829
  • $ref pointers through a numeric object key (#/responses/200) skipping the references under their target.
  • oneOf / anyOf rejecting valid instances when a $ref inside a branch sits under an $id.
  • unevaluatedItems treated every element as evaluated beside a non-schema items value (it should evaluate none).

Performance

  • Building validators up to 15% faster on schemas that repeat the same $ref, from resolving each reference once.
  • Building registries up to 30% faster and validators up to 3% faster, from a cheaper walk over schema documents.
  • Building validators up to 25% faster on schemas that declare a base URI, from building absolute keyword locations on first use.
  • Building validators up to 3% faster, from cheaper compilation cache keys.
  • oneOf / anyOf up to 7x faster when branches fix a property with const or enum.
  • oneOf / anyOf skip branches that exclude the instance's value with not over enum or const.
  • properties up to 40% faster on objects with a few more keys than it declares.
  • minLength / maxLength skip counting code points when the byte length decides.
  • pattern starting with lookaheads (^(?=...)(?=...)...) up to 2x faster.
  • properties and additionalProperties up to 13% faster on schemas declaring 15 or more properties.
  • properties up to 12% faster on objects with keys it does not declare.
  • Validation up to 40% faster with serde_json's preserve_order feature.
  • unevaluatedProperties up to 10% faster on schemas that combine it with patternProperties or applicators.
  • required up to 40% faster when it lists every property of an object closed by additionalProperties: false.
  • properties, anyOf and other applicators faster on subschemas that only check a non-numeric type, directly or through $ref.
  • Building validators that reference file:// schemas is 10x or more faster, from reading each file in one call instead of one system call per byte.
  • evaluate() up to 20% faster on instances with many errors, from fewer allocations per error.
  • evaluate() up to 20% faster, from rendering instance locations only when the output reads them.
  • is_valid() and validate() up to 14% faster on small instances, from a cheaper per-call validation context.