Update dependency jsonschema-rs to ^0.56.0 - #80
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
2 times, most recently
from
July 30, 2025 03:29
7e64616 to
24c356a
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
August 10, 2025 14:28
24c356a to
9e33624
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
August 24, 2025 21:05
9e33624 to
79d5e10
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
November 14, 2025 18:29
79d5e10 to
e8919b3
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
November 16, 2025 17:01
e8919b3 to
94f307d
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
November 18, 2025 05:50
94f307d to
880f702
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
November 19, 2025 10:40
880f702 to
3d3cc36
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
December 24, 2025 21:02
3d3cc36 to
8320c66
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
2 times, most recently
from
January 18, 2026 13:37
ff7a442 to
03a0fde
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
February 4, 2026 20:57
03a0fde to
d067a62
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
February 14, 2026 22:09
d067a62 to
ce4c32b
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
February 28, 2026 21:05
ce4c32b to
75d3732
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
March 2, 2026 01:17
75d3732 to
2a32c8e
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
April 10, 2026 22:13
0c4674b to
f03183c
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
April 28, 2026 13:14
f03183c to
bd6b017
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
July 8, 2026 00:39
bd6b017 to
345c6c5
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
July 17, 2026 00:07
345c6c5 to
be82fe6
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
July 25, 2026 17:10
be82fe6 to
bd10791
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
August 20, 2026 18:50
bd10791 to
795affa
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
August 23, 2026 22:38
795affa to
de638f6
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
August 27, 2026 02:11
de638f6 to
a395c41
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
3 times, most recently
from
September 6, 2026 09:39
283a18e to
99acd9e
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
September 6, 2026 22:03
99acd9e to
8341f91
Compare
renovate
Bot
force-pushed
the
renovate/jsonschema-rs-0.x
branch
from
September 10, 2026 11:29
8341f91 to
86b9195
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^0.29.0→^0.56.0Release Notes
Stranger6667/jsonschema (jsonschema-rs)
v0.56.0Added
canonical::RawReason, what stopped a run from modeling a document, andcanonical::RawView, carrying it beside the document and a pointer to the subschema the run stopped on.ValidationOptions::is_known_format, whether aformatof that name is checked under a draft.Changed
canonical::CanonicalView::Rawcarries acanonical::RawViewin place of the document alone.oneOfwhose branches share a region too wide to expand, which spent the document's whole intersection allowance on that choice and kept the documentRaw.Performance
v0.55.1Changed
anyOfover anallOfthrough a$refto a union, which left that union nested inside the outer one.anyOfwhose branch narrowing runs out of intersections, which lefttrueas a branch inside the union.v0.55.0Changed
canonical::ObjectViolationViewgained thePatternValueFailsvariant, which negation records for apatternPropertiesentry.notoverpatternProperties, which kept the entry undernotinstead of recording the demand a key breaks.unevaluated*beside a conditional reaching no key or index the node already evaluates, which spent a case on it.Raw.anyOfover objects sharing apropertieskey underpatternProperties, which settled only on a second pass.notover anallOffolded through a reference, which settled only on a second pass.multipleOfdivisor pastf64precision, which was not taken to divide itself.anyOfover a value beside a window pinned to it, which settled only on a second pass.minProperties: 1beside anotthat already demands a key, which settled only on a second pass.Fixed
absolute_keyword_locationnaming the sibling keyword whose validator carries the check:maxLengthbesideminLength,minItems,maxItemsortypebesideitems, and a two-namerequiredbesideproperties. #1579schemaLocationinevaluateoutput namingminLengthfor amaxLengthfailure. #1579v0.54.0Added
backend = SerdeJsonon#[jsonschema::validator], generating a validator that readsserde_json::Value.PreparedDocument::unsatisfiable_pointers, listing every subschema no value satisfies.Changed
unevaluated*besidedependentSchemasorif/then/else, which kept the documentRaw.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.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.enumcompares an option's length and first and last eight bytes before its full text.~and/eight bytes at a time before it is copied.Fixed
type: arraywithitemsandminItems/maxItemschecking the built-in length bound even when a custom keyword overridesminItemsormaxItems, so the bound was evaluated twice.type,requiredormaxLengthnot replacing the built-in check for that keyword.items,minLength,propertiesoradditionalPropertiesleaving its sibling keywords unchecked.#[jsonschema::validator]generated code that namedserde_jsondirectly, so it needed the consumer crate to depend onserde_jsontoo.notover an object withproperties,patternPropertiesandadditionalProperties, which appliedadditionalPropertiesto the keys listed inproperties.v0.53.0Added
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.--at POINTERflag ofjsonschema canonicalize, canonicalizing only the subschema at that pointer without breaking its references into the rest of the document.jsonschema canonicalizereads YAML schemas (.yaml/.yml) as well as JSON.canonical::{ArrayView, IntegerView, NumberView, ObjectView, StringView, TypedGroupView}, the payload types ofCanonicalView, so consumers can name them in signatures.Fixed
jsonschema-valuefailing to build withdefault-features = false.jsonschema-valuefailing to build forwasm32-unknown-unknown, which needsgetrandom'swasm_jsbackend.type: integeraccepting numbers written with an exponent, like1e2.type: integeranswering differently for the same number across representations.uniqueItemsaccepting0alongside-0.0in arrays of more than 15 items.Performance
allOfof object schemas walks their property maps once instead of looking every key up.propertiesandrequiredcompare short names withoutmemcmp.$reftarget once.$idis up to 15% faster, from encoding each absolute location once.requiredscans small objects once instead of looking up each key.enumlisting strings or integers, with or withoutnull, matches against a set instead of comparing each candidate.evaluateis up to 33% faster, from rendering each node's locations once.type: integerwitharbitrary-precisionno longer allocates a string per number.type: integer, andtypesets containing it, are up to 54x faster on float-heavy instances witharbitrary-precision.type: integeris up to 20x faster for thePyo3andMagnusrepresentations.v0.52.1Fixed
multipleOfrejecting valid values like1070468.14for0.01withoutarbitrary-precision.Performance
minLengthandmaxLengthtogether now scan the string once.multipleOfwith a fractional divisor is 8-16x faster.unevaluatedPropertiesis up to 2.9x faster.evaluateis up to 27% faster on reference-heavy schemas.v0.52.0Added
Evaluation::is_valid.Location::is_empty.DisplayforErrorEntry.ValidationOptions::offlineandcanonical::CanonicalizeOptions::offline, refusing to fetch references outside the registry.idnaCargo feature, enabled by default, gating theidn-hostnameandidn-emailformats. #1313--offlineflag ofjsonschema validate,jsonschema bundleandjsonschema dereference.Changed
ValidationErrors'Displaygained the instance path of each error.default-features = false, theidn-hostnameandidn-emailformats now require the newidnafeature. Without it they are unknown formats, which are accepted by default, or rejected at build time undershould_ignore_unknown_formats(false). Addidnato the feature list to keep the previous behavior.Fixed
patternProperties$refmatches a keypropertiesnames.is_validdisagreeing withvalidate,iter_errors, andevaluateon a schema that reaches its own$reftwice, one of them undernot.format: emailandformat: idn-emailrejecting an empty quoted string as the local part (it should be accepted).format: emailandformat: idn-emailrejecting an address literal whoseIPv6:tag is not written in that exact case (the tag is case-insensitive).format: emailaccepting a non-ASCII character in the local part (it should be rejected).ValidationOptions::with_draftgating keywords on the vocabularies of the$schemait overrides, so the validator accepted every instance.Performance
iter_errorscollects into a single buffer instead of allocating and re-boxing an iterator at every schema node.v0.51.0Added
ValidationOptions::with_vocabularyand thevocabulariesattribute onjsonschema::validator, declaring support for a vocabulary this crate does not implement.--vocabularyflag ofjsonschema validate.Changed
Vocabularygained theFormatAssertionvariant, which its Draft 2020-12 URI parses to instead ofVocabulary::Custom, and is markednon_exhaustive.Fixed
uniqueItemslength ceiling not reading anitemsorcontainsschema written as a$ref.formatrejects.formataccepted under a meta-schema requiring the Format-Assertion vocabulary (it should be rejected).trueread as an annotation, so a meta-schema requiring it accepted values itsformatrejects.https://json-schema.org/draft/2020-12/meta/format-assertionmeta-schema not declaring its vocabulary, so a schema written against it annotatedformatinstead of asserting it.$idkeeping its$vocabularyunread, so a schema written against it got every Draft 2020-12 vocabulary.$schemarejected as an unknown meta-schema (it should build).regexformat reading the Rust regex dialect (it should read the ECMA-262 dialect in Unicode mode).uri-templateformat rejecting an apostrophe in a literal (it should accept it, per RFC 6570 errata 6937).durationformat accepting weeks combined with a time part, such asP1WT1H(it should reject it).unevaluatedPropertiesorunevaluatedItemsbeside a$refthat cycles back to the node, written as#, through its$id, or through a chain of definitions.Performance
unevaluatedPropertiesorunevaluatedItemsover a deepallOfor$refchain costs its depth instead of its square.v0.50.1Changed
CanonicalSchema::satisfiabilityanswersYesfor a string whosepatternorformata matching value can be built from.CanonicalSchema::satisfiabilityanswersNowhere aformattakes no string of the length the schema asks for.Fixed
CanonicalSchema::negatetaking apart a union that reads a definition through its ownif, so a schema and its negation shared a value.CanonicalSchema::subtractdropping a Draft 4 array member an element demand partly takes.CanonicalSchema::coversansweringYeswhere a Draft 4 element demand refuses a member.maxLengthis0keeping apattern,format, or content facet unread, so the same constraints written in one object and written as anallOfreached different canonical forms.Performance
notover a wide object schema costs its branch count instead of its square.notover an object schema is linear in its property count, not quadratic.notover an object schema withadditionalProperties: falseno longer costs cubic time in its property count.v0.50.0Added
CanonicalSchema::unionandCanonicalSchema::subtract.CanonicalizationError::UnsupportedResult, reported where the canonical form does not support a set operation's result.OperandMismatch::DocumentRoots, reported where both operands read#and it names a different document on each side.jsonschema validate -i INSTANCEwithout aSCHEMAargument validates each instance against the schema named in its own$schemaproperty. #1470Changed
CanonicalSchema::is_satisfiableis nowCanonicalSchema::satisfiability, answeringYes,No, orUnknown-Yeswherever a value can be exhibited, not only for the forms listing their members.CanonicalSchema::coversdecides through the difference as well:Nowhere the argument keeps values the receiver rejects,Yeswhere nothing is left over.CanonicalSchema::is_subset_ofis nowCanonicalSchema::covers, answeringYes,No, orUnknownfor whether the receiver admits every value the argument admits.CanonicalSchema::negatereturnsResultrather thanOption.CanonicalizationError::UnmodeledOperandis nowCanonicalizationError::UnsupportedOperand, and means only that an operand is aRawpass-through.$reffolds through the body it names, so canonicalizing a document and combining its parts with the set operations reach one form; a document holding a reference cycle keeps the form it had.Fixed
$refto#at the combined result instead of the document it was written in, including one named by a definition the result keeps.$refwhose target istrueorfalse, which panicked.CanonicalSchema::coversansweringUnknownfor a schema against itself, where that schema is a$ref.CanonicalSchema::unionkeeping a$refbeside the schema it names, where the other three operations read through it.CanonicalSchema::coversandCanonicalSchema::subtractcancelling two nodes written the same way whose#names a different document.additionalPropertiesreaching a key the pattern map matches when a finite key constraint closes the map, which dropped values both operands accept.$defsentry read past a wider schema written out at every use, rather than kept as the pointer it was.$refas a pointer instead of reading through it, so a schema written with a$refdid not cancel against the same schema written out.CanonicalSchema::subtractasking for a complement where the difference is one of the operands or empty, declining on schemas it can subtract.$defsentries the result no longer references, which then showed up in the emitted schema.CanonicalSchema::uniondeclining over an approximated intersection, where the union itself is exact.$idcontains one. #1473unevaluatedPropertiesandunevaluatedItemsignoring an$idon a subschema they walk through, so a relative$refinside it resolved against the enclosing resource.Performance
v0.49.9Added
oneOfwhose branches name object targets a required constant tells apart, which degrades to a union.Changed
CanonicalSchema::to_json_schemaon a definition emits only the definitions that one names, not the whole document's.Fixed
v0.49.8Performance
oneOfwhose overlapping branches carry many properties, which no longer removes shared regions the exactly-one spelling discards.Fixed
http://json-schema.org/schemameta-schema URI as a custom dialect, where it names the current draft.patternPropertiesentry matching every key leavingadditionalProperties: falsespelled as a key constraint, where it forbids nothing.unevaluatedProperties/unevaluatedItemsset totrueforcing the whole document to stay unmodeled beside an unresolved applicator, where the keyword rejects nothing regardless of the evaluated set.unevaluatedProperties/unevaluatedItemsbeside a$refforcing the whole document to stay unmodeled, where the reference's own evaluated properties or items are known once it is resolved.v0.49.7Added
CanonicalizeOptions::with_retrieverto fetch external resources absent from the registry.CanonicalizeOptions::with_base_urito resolve relative references in the root schema.oneOfwhose branches name disjoint targets, which degrades to a union.patternPropertiesentry beside schema-valuedadditionalProperties, where matching keys escape its value constraint.CanonicalSchema::definitionresolving#to the document the handle was read against.Performance
notover a union of many branches.$defsreferences, which avoid decoding unescaped definition names.oneOfwhose many branches overlap.trueandfalsesubschemas repeatedly.Fixed
CanonicalSchema::definitionandCanonicalSchema::definitionshanding out a target that names the document root without that document, where#points at the target instead.itemstail beyond an array's length ceiling surviving canonicalization, where it governs no element.CanonicalSchema::to_json_schemaleaving the document root out of a node emitted below it, where#points at that node instead.v0.49.6Added
uniqueItems, where the complement demands a repeated element under the length floor two elements imply.containsdemands sharing no value, where their counts add up into a length floor.CanonicalSchema::negatethrough references, where the complement of the resolved target takes the reference's place.propertyNamesandadditionalProperties, where the complement spells the violating-key demand instead of anotresidual.additionalPropertiesunder Draft 4, where the violating-key demand spells the closed property map.nota reference, where the complement of the resolved target takes the pointer's place.oneOf, where the complement spells the values no branch admits beside the values two branches share.itemsunder Draft 4, where the violating-element demand spells the barred element schema.Changed
ArrayViewreports distinctness in three states, so an array demanding a repeated element reads apart from one demanding distinct elements.Fixed
CanonicalSchema::negatekeeping a root self-reference in the complement, where it points at the complement instead of the source.additionalItemsthat tails no tuple keeping the whole document unmodeled under Draft 2020-12.v0.49.5Added
notan integer schema under Draft 4, which the number leaf carries as barred integers.notamultipleOf, which numeric leaves carry as barred divisors.notan integer schema, where a barred divisor of one spells the non-integer numbers.notapattern, which string leaves carry as barred patterns.nota typed value set under Draft 4, such as{"type": "integer", "enum": [1, 2]}.CanonicalSchema::is_subset_of, whether the other schema admits every value this one admits.Fixed
CanonicalSchema::is_subset_offailing to prove a union of array branches a subset of itself.CanonicalSchema::intersectadmitting values one side rejects when itsadditionalPropertiesgoverns the keys the other side'spatternPropertiesmatch.multipleOfschema collapsing to the empty set whenf64rounds its bounds together.arbitrary-precisionwhen the fraction exceeds the expansion cap.multipleOfcomparing values through a lossyf64conversion underarbitrary-precision, such as1e-400passing{"maximum": 0}.v0.49.4Added
nota string format, which the string leaf carries as barred formats.notan existential demand, which an array fails exactly when no element matches.nota string value set, which the string leaf carries as excluded values.unevaluatedItemsbesidecontains, where the elements it matches are evaluated and the tail admits either.unevaluated*besideanyOforoneOf, where every branch evaluating the same keys or indexes pins what is left over.notan array element schema, which an array fails exactly when one element violates it.CanonicalSchema::intersect, the values both schemas admit.CanonicalSchema::negate, the values a schema rejects.CanonicalSchema::definition, one reference target by URI.Fixed
i64admitted by a fractional boundf64rounds it onto, such as-10000000000000000000000000under{"maximum": -10000000000000000000000000.1}.2^53admitted by a boundf64rounds onto it, such as9007199254740992under{"minimum": 9007199254740993}.containssubschema beside bothminContainsandmaxContainsoverwriting a sibling keyword of the same name, such asitems.Performance
CanonicalSchemahashing and equality cost the node instead of the whole document.v0.49.3Added
false.$dynamicRefand$recursiveRef, which resolve through the dynamic scope and stay symbolic like any other reference. A dangling$dynamicReferrors rather than stayingRaw.minContainsunderuniqueItems, where a demand asking for more matches than its own schema has distinct values now folds tofalse.patternPropertiescoverage closed byadditionalProperties: false, spelled as the closed map it was parsed from.oneOfwhose branches repeat, where a repeated branch can never contribute exactly one match.$refwhose target is an empty schema, which now folds tofalse.unevaluatedItemsbesideallOf, where every branch must pass and so the indexes they evaluate are known without the instance.unevaluatedPropertiesbesideallOf, where every branch must pass and so what they evaluate is known without the instance.typelist holdingintegerbeside other types withenum, which previously modeled only when spelled as anallOf.patternPropertiespatterns matching finitely many keys, such as^a$and^(a|b)$.unevaluatedPropertiesandunevaluatedItemswhen no in-place applicator sits beside them.Fixed
additionalItemsvalues that are not schemas silently ignored beside an array-formitems(they should fail the build likeadditionalProperties).additionalItemsbeside a booleanitemsrejecting every instance, such as{"additionalItems": false, "items": false}.additionalItemsbeside a non-arrayitemsvalue failing schema compilation with an error blamingadditionalItems(the keyword should be ignored).2^64, such as{"maxItems": 18446744073709551616}.f64range admitted by a fractional bound it exceeds, such as1e400under{"exclusiveMaximum": 0.1}.$refat the root of an$id-bearing subresource dropped as a self-reference when its pointer matched the one that reached that subresource.unevaluatedItemscountingprefixItemsas evaluating elements before Draft 2020-12, where it is not a keyword.Performance
evaluateby 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.v0.49.2Performance
multipleOfbeside numeric bounds far from zero.v0.49.1Fixed
jsonschema-value: Ruby builds on x64-mingw-ucrt.v0.49.0Added
options_forbuilds a validator over any instance representation implementingjson::Json, so instances validate without conversion toserde_json::Value. #239meta::validate_forandmeta::is_valid_forfor checking a schema document held in any representation implementingjson::Jsonagainst its meta-schema.jsonschema::canonicalize. It reduces a reasonable subset of JSON Schemas to their normal forms.Fixed
multipleOfincorrectly accepted integers pastu64that are not multiples of the divisor.v0.48.5Fixed
v0.48.2Performance
v0.48.1Fixed
requirederrors inevaluate()output for schemas withpropertiesand a two-entryrequiredarray. #1220contentEncodingerrors for invalid UTF-8 after decoding incorrectly had emptyinstance_pathandschema_path.Performance
#[jsonschema::validator](~5% across benchmarked schemas), via aliasing repeated paths in the emitted code.v0.48.0Added
iter_errorsfor#[jsonschema::validator]-generated validators.Fixed
anyOfandoneOfvalidation errors, matching runtime validators.$recursiveRefin generated validators incorrectly resolved to the innermost$recursiveAnchor(it should resolve to the outermost one).i64/u64range incorrectly compared against numeric bounds through lossyf64rounding underarbitrary-precision(e.g.{"minimum": -9223372036854775808}accepted-9223372036854775809).Changed
canonical::json::to_stringunderarbitrary-precision("1e-2"becomes"0.01","1.50"becomes"1.5") and correctly-rounded float parsing (serde_json'sfloat_roundtrip).Performance
multipleOfvalidation for integer instances with integer divisors, via integer arithmetic instead of floating-point modulo.v0.47.0Added
#[jsonschema::validator]attribute macro (behind themacrosfeature) that compiles a JSON Schema intois_validandvalidateimplementations at build time.Keyword::iter_errorsfor reporting multiple validation errors from a single custom keyword. #1071Changed
1.85.0.Performance
macrosfeature, via compile-time meta-schema validators.Fixed
typeunderitemsasserted with the Validation vocabulary disabled.$reftargets without their own$schema(e.g.$defsentries).v0.46.10Fixed
$dynamicRefcombined withunevaluatedPropertiesorunevaluatedItems.unevaluatedPropertiesandunevaluatedItemsresults when a meta-schema disables the Applicator vocabulary.v0.46.9Fixed
multipleOfincorrectly rounds integer instances above 2^53 tof64before the divisibility check on builds without thearbitrary-precisionfeature.v0.46.8Fixed
idn-emailformat rejected non-ASCII characters in quoted local parts (e.g."δοκιμή"@example.com).v0.46.7Fixed
idn-hostnameformat accepted A-labels that decode to a disallowed code point (e.g.xn--7a).v0.46.6Added
IntoRegistryResourceforArc<Value>. #1129Fixed
prefixItemsincorrectly recognised as a known keyword in Draft 2019-09 and earlier (it is 2020-12 only).patternvalidation errors displayed the internally translated regex instead of the original schema pattern. #1149v0.46.5Fixed
$refURI fragments (e.g.#/$defs/Request%20class) are now decoded when stored asschema_path.v0.46.4Fixed
{0,N}quantifiers.v0.46.3Fixed
Validatorfor a schema with recursive$refor$dynamicRefis dropped. #1125wasm32-wasip1andwasm32-unknown-emscriptentargets.v0.46.2Fixed
requirednot enforced whenadditionalPropertiesis a schema object andrequiredlists exactly 2 keys.v0.46.1Fixed
$dynamicRefcombined withunevaluatedPropertiesorunevaluatedItems.unevaluatedPropertiesandunevaluatedItemsresults when a meta-schema disables the Applicator vocabulary.v0.46.0Added
ValidatorMapfor validating instances against subschemas identified by URI-fragment JSON pointer. #1075-i/--instance(e.g.jsonschema validate schema.json -i *.json). #1085dereferencefunction to recursively inline$refreferences. #422jsonschema dereferencesubcommand to dereference a schema from the command line.Breaking Changes
with_registrynow borrows the prepared registry.ValidationOptions::with_resourceandValidationOptions::with_resourceswere removed in favor of building aRegistryfirst. See the Migration Guide for the details.Performance
v0.45.1Fixed
multipleOfvalidation for negative numeric instances.durationformat when hours and seconds appear without minutes, or years and days without months.v0.45.0Added
bundle(schema)/async_bundle(schema)/ValidationOptions::bundle: produce a Compound Schema Document with external$reftargets embedded in a draft-appropriate container (definitionsfor Draft 4/6/7,$defsfor Draft 2019-09/2020-12) while preserving$refvalues. #791.jsonschema validateandjsonschema bundlesubcommands. Flat invocation (jsonschema schema.json -i …) is deprecated — usejsonschema validateinstead. #791.ValidationError::absolute_keyword_location()to get the absolute keyword location URI of the schema node that produced the error. #737.Changed
ValidationError::into_parts()now returnsValidationErrorPartsinstead of a tuple.v0.44.1Fixed
hostnameformat now applies legacy RFC 1034 semantics in Draft 4/6 and keeps IDNA A-label validation in Draft 7+.v0.44.0Added
canonical::json::to_string(value)for canonical JSON serialization (stable key ordering and numeric normalization), useful for deduplicating equivalent JSON Schemas.Fixed
contentMediaType,contentEncoding, andcontentSchemakeywords.v0.43.0Performance
patternandpatternPropertiesfor^(a|b|c)$alternations via linear array scan.^\S*$patterns by replacing regex with a direct ECMA-262 whitespace check.Fixed
anyOf,format,unevaluatedProperties, andunevaluatedItemsnow correctly collect annotations per spec.v0.42.2Fixed
:–?(0x3A–0x3F) as valid digits duringdate,time, anddate-timeformat validation, potentially allowing malformed values to pass.Performance
patternprefix optimization to handle escaped slashes (^\/) and exact-match patterns (^\$ref$).enumfor cases when all variants are strings.v0.42.1Performance
$refresolution.format: "regex"validation.v0.42.0Added
JsonType::as_strmethod for zero-allocation type name access.ValidationErrorKind::keywordis now public.tls-ringfeature flag to opt into usingringas the TLS crypto provider instead of the defaultaws-lc-rs. #997.yaml/.yml) instance files in text output mode. #988Changed
aws-lc-rs. Users who needringcan opt in via thetls-ringfeature flag. This resolves potential conflicts with other libraries usingaws-lc-rs. #997Fixed
$reftargets that resolve to boolean schemas.Performance
OnceLockto avoid repeated formatting duringevaluate().v0.41.0Performance
uri-templateformat validation with a hand-rolled RFC 6570 parser.itemskeyword for simple type schemas ({"type": "string"},{"type": "number"}, etc.) to eliminate dynamic dispatch overhead.unevaluatedPropertiesvalidation via O(1) property lookup and short-circuitoneOfevaluation.v0.40.2Changed
trackerfield fromValidationErrorDebug output.aws-lc-rstoringto simplify building from source on some Linux distributions. #957Fixed
type: integervalidation in Draft 4 now correctly accepts large integers outside the i64/u64 range whenarbitrary-precisionfeature is enabled.v0.40.1Changed
ValidationErrorKind::Customnow includes akeywordfield containing the custom keyword name.Performance
patternPropertiesfor simple prefix patterns (e.g.,^x-).v0.40.0Added
HttpOptionsandValidationOptions::with_http_options()for configuring HTTP client behavior (timeouts, TLS verification, custom CA certificates) when fetching external schemas.--timeout,--connect-timeout,--insecure, and--cacertflags for HTTP configuration.v0.39.0Added
ValidationError::evaluation_path()for the dynamic path including$reftraversals.Changed
Keyword::validateno longer receives path parameters, andValidationError::customonly takes a message.Fixed
schemaLocationin evaluation output now excludes$ref/$dynamicRef/$recursiveRefper JSON Schema spec.Performance
evaluate(): 4.5-30x faster on complex schemas, 12-89% faster overall.oneOf/anyOf: ~4000x faster via memoization. #930v0.38.1Fixed
multipleOfvalidation for integer values between2^53andi64::MAXwitharbitrary-precisionfeature.v0.38.0Added
EmailOptionsfor configuringemailformat validation. #903Fixed
$refresolution when multiple refs target the same external URL with different fragments. #906multipleOfvalidation for large u64 values beyondi64::MAXwitharbitrary-precisionfeature.Validatornot beingSend + Syncon WASM targets. #915v0.37.4Fixed
$refchains (e.g.,a->b->a).$refresolution within fragment-extracted external resources. #892Removed
PrimitiveType&PrimitiveTypesBitMap.v0.37.3Fixed
$reftargets. #892v0.37.2Added
JsonTypeSet::len()andJsonTypeSet::remove()helpers for managing type sets.Fixed
$refreferences. #892v0.37.1Fixed
$refvalue. #886v0.37.0Added
evaluate()top-level function for convenient access to structured validation output.contentEncodingvalues per RFC 4648:base64url,base32,base32hex, andbase16. These encodings are now validated alongside the existingbase64support in Draft 6 and 7. #26validator.iter_errors(instance).into_errors(). It returns aValidationErrorstype that collects validation errors and implementsstd::error::Error. #451Changed
ValidationErrorfields are private; useinstance(),kind(),instance_path(), andschema_path()instead of accessing struct fields directly.ErrorIteratoris now a newtype wrapper instead ofBox<dyn ValidationErrorIterator>.Performance
validateand other APIs returningResult<_, ValidationError>are 5–10% faster in some workloads due to the smaller error handle.evaluate: Avoiding deep clones of unmatched keyword values (e.g.,title,description,examples) on every schema node evaluation by usingArcinternally. Can be multiple times faster for schemas with large annotations.v0.36.0Added
--output flag|list|hierarchicalmodes now stream newline-delimited JSON records with schema/instance metadata plus JSON Schema Output v1 payloads (defaulttextoutput remains human-readable).--errors-onlyflag to suppress successful validation output and only show failures.Validator::evaluate()API exposes JSON Schema Output v1 (flag/list/hierarchical) reports along with iterator helpers for annotations and errors.meta::validator_for()function to build validators for meta-schema validation with fullValidatorAPI access.Validatornow implementsClone. #809Removed
Validator::apply(),Output, andBasicOutputtypes have been removed in favor of the richerevaluate()API.v0.35.0Added
$schemaURIs can now be used by registering their meta-schemas in theRegistryviajsonschema::options().with_registry(). #664arbitrary-precisionfeature for exact numeric validation of large integers and decimals beyond standard floating-point limits. #103$schemaURIs for drafts 04, 06, and 07 (e.g.,https://json-schema.org/draft-07/schema). #802Changed
meta::is_validnow panics for unknown$schemavalues instead of defaulting to Draft 2020-12.meta::validatereturns an error for unknown$schemavalues. Usemeta::options().with_registry()to validate schemas against custom meta-schemas.Resource::from_contentsno longer returnsResultand always succeeds, since draft detection no longer fails for unknown$schemavalues.Removed
meta::try_is_validandmeta::try_validate. Usemeta::is_validandmeta::validateinstead.primitive_typemodule (deprecated since 0.30.0). Usejsonschema::typesinstead.Performance
required: short-circuit when the instance object has fewer properties than required keys.v0.34.0Changed
BasicOutputandAnnotationsno longer have lifetime parameters. Update type annotations fromBasicOutput<'a>toBasicOutputandAnnotations<'a>toAnnotations.referencing: URI caching now avoids hash collisions and reduces lock contention.fluent-urito0.4.1.1.83.0.Send + Syncbounds fromRetrieve/AsyncRetrieveonwasm32.draftX::meta::validator()helper so meta-schema validators lazy-init onwasm32while native targets keep borrowing the cachedjsonschema::meta::MetaValidator.Fixed
xn--labels, reject leading combining marks/uppercase prefixes, and enforce the latest JSON Schema punycode context rules.wasm32-unknown-unknownsupport. #785Performance
applynow reuses cached schema locations, URI fragments, and buffers for up to ~2.5x faster validation.$refcompilation deduplicates validator nodes, which decreases the memory usage and improves performance.applyon location-heavy workloads.unevaluatedPropertiesvalidation is 25-35% faster through optimized property marking and early-exit paths.unevaluatedPropertiesmemory usage drastically reduced by eliminating redundant registry clones during compilation.unevaluatedItemsvalidation is ~10% faster through early-exit optimizations and eliminating redundant validations in combinators.Removed
Validator::configto reduce the memory footprint.DRAFT4_META_VALIDATOR,DRAFT6_META_VALIDATOR,DRAFT7_META_VALIDATOR,DRAFT201909_META_VALIDATOR, andDRAFT202012_META_VALIDATORstatics. UsedraftX::meta::validator()helper functions instead (e.g.,draft7::meta::validator()).v0.33.0Fixed
instance_pathsegments are now unescaped when iterating.LocationSegment::Propertynow holdsCow<'_, str>andLocationSegmentis no longerCopy. #788v0.32.1Changed
fancy-regexto0.16.v0.32.0Added
contextfield toValidationErrorKind::OneOfMultipleValid.Changed
enum.v0.31.0Added
-d, --draft <4|6|7|2019|2020>to enforce a specific JSON Schema draft.--assert-formatand--no-assert-formatto toggle validation offormatkeywords.contextforValidationErrorKind::AnyOfandValidationErrorKind::OneOfNotValidwhich contains errors for all subschemas, each inside a separate vector with an index matching subschema ID.Fixed
multipleOffor float values.Changed
fancy-regexto0.15.v0.30.0Added
$schemaURIs can now be used by registering their meta-schemas in theRegistryviajsonschema::options().with_registry(). #664arbitrary-precisionfeature for exact numeric validation of large integers and decimals beyond standard floating-point limits. #103$schemaURIs for drafts 04, 06, and 07 (e.g.,https://json-schema.org/draft-07/schema). [#802](https://redirect.github.com/Stranger6667/jsonscheConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.