[Rust] Release 0.54.0
·
196 commits
to master
since this release
Added
backend = SerdeJsonon#[jsonschema::validator], generating a validator that readsserde_json::Value.PreparedDocument::unsatisfiable_pointers, listing every subschema no value satisfies.
Changed
- Canonicalization of
unevaluated*besidedependentSchemasorif/then/else, which kept the documentRaw. - Canonicalization of
notoverpatternProperties, which kept the documentRaw.
Performance
validateanditer_errorscheck each assertion keyword with theis_validpath and build an error only for a failing one.evaluateholds its output tree in one allocation instead of one per node.- A
patternof^\S*$scans bytes instead of decoding every character. validateonpropertiesbeside a two-namerequiredconfirms both names in the pass that checks the properties, instead of looking each up first.- A string
enumcompares an option's length and first and last eight bytes before its full text. - A JSON Pointer segment is scanned for
~and/eight bytes at a time before it is copied. - Canonicalization cloning leaves per intersection and the definition map per settled target.
Fixed
type: arraywithitemsandminItems/maxItemschecking the built-in length bound even when a custom keyword overridesminItemsormaxItems, so the bound was evaluated twice.- A custom keyword overriding
type,requiredormaxLengthnot replacing the built-in check for that keyword. - A custom keyword overriding
items,minLength,propertiesoradditionalPropertiesleaving its sibling keywords unchecked. #[jsonschema::validator]generated code that namedserde_jsondirectly, so it needed the consumer crate to depend onserde_jsontoo.- Canonicalization of
notover an object withproperties,patternPropertiesandadditionalProperties, which appliedadditionalPropertiesto the keys listed inproperties.