Skip to content

[Rust] Release 0.53.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 19:59
· 228 commits to master since this release
6af37d8

Added

  • Location::segments, iterating the segments without collecting them.
  • CanonicalizeOptions::prepare, canonicalizing any number of a document's subschemas by JSON Pointer, with the document indexed once.
  • CLI: the --at POINTER flag of jsonschema canonicalize, canonicalizing only the subschema at that pointer without breaking its references into the rest of the document.
  • CLI: jsonschema canonicalize reads YAML schemas (.yaml/.yml) as well as JSON.
  • canonical::{ArrayView, IntegerView, NumberView, ObjectView, StringView, TypedGroupView}, the payload types of CanonicalView, so consumers can name them in signatures.

Fixed

  • jsonschema-value failing to build with default-features = false.
  • jsonschema-value failing to build for wasm32-unknown-unknown, which needs getrandom's wasm_js backend.
  • Draft 4 type: integer accepting numbers written with an exponent, like 1e2.
  • Draft 4 type: integer answering differently for the same number across representations.
  • uniqueItems accepting 0 alongside -0.0 in arrays of more than 15 items.

Performance

  • Canonicalizing an allOf of object schemas walks their property maps once instead of looking every key up.
  • properties and required compare short names without memcmp.
  • Building a schema is up to 5% faster, from cheaper cache sharing and resolving each $ref target once.
  • Building a schema with an $id is up to 15% faster, from encoding each absolute location once.
  • required scans small objects once instead of looking up each key.
  • enum listing strings or integers, with or without null, matches against a set instead of comparing each candidate.
  • evaluate is up to 33% faster, from rendering each node's locations once.
  • CLI: 1.4-1.5x faster on large schemas, from reading files before parsing them.
  • Draft 4 type: integer with arbitrary-precision no longer allocates a string per number.
  • type: integer, and type sets containing it, are up to 54x faster on float-heavy instances with arbitrary-precision.
  • Draft 4 type: integer is up to 20x faster for the Pyo3 and Magnus representations.