0.45.1 - 2026-04-06
- Incorrect handling of
multipleOfvalidation for negative numeric instances. - Incorrect handling of
durationformat when hours and seconds appear without minutes, or years and days without months.
0.45.0 - 2026-03-08
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.- CLI:
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.
ValidationError::into_parts()now returnsValidationErrorPartsinstead of a tuple.
0.44.1 - 2026-03-03
hostnameformat now applies legacy RFC 1034 semantics in Draft 4/6 and keeps IDNA A-label validation in Draft 7+.
0.44.0 - 2026-03-02
canonical::json::to_string(value)for canonical JSON serialization (stable key ordering and numeric normalization), useful for deduplicating equivalent JSON Schemas.
- Do not produce annotations for non-string instances from
contentMediaType,contentEncoding, andcontentSchemakeywords.
0.43.0 - 2026-02-28
- Optimize
patternandpatternPropertiesfor^(a|b|c)$alternations via linear array scan. - Optimize
^\S*$patterns by replacing regex with a direct ECMA-262 whitespace check.
anyOf,format,unevaluatedProperties, andunevaluatedItemsnow correctly collect annotations per spec.
0.42.2 - 2026-02-26
- SWAR digit parser accepted bytes
:–?(0x3A–0x3F) as valid digits duringdate,time, anddate-timeformat validation, potentially allowing malformed values to pass.
- Extend
patternprefix optimization to handle escaped slashes (^\/) and exact-match patterns (^\$ref$). - Specialize
enumfor cases when all variants are strings.
0.42.1 - 2026-02-17
- Reduce dynamic dispatch overhead for non-recursive
$refresolution. - Cache ECMA regex transformations during
format: "regex"validation.
0.42.0 - 2026-02-14
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- CLI: Support YAML (
.yaml/.yml) instance files in text output mode. #988
- BREAKING: Default TLS crypto provider switched back to
aws-lc-rs. Users who needringcan opt in via thetls-ringfeature flag. This resolves potential conflicts with other libraries usingaws-lc-rs. #997
- Panic when validating
$reftargets that resolve to boolean schemas.
- Cache formatted schema locations with
OnceLockto avoid repeated formatting duringevaluate().
0.41.0 - 2026-02-04
- Replace regex-based
uri-templateformat validation with a hand-rolled RFC 6570 parser. - Specialize
itemskeyword for simple type schemas ({"type": "string"},{"type": "number"}, etc.) to eliminate dynamic dispatch overhead. - Precompute regex matches on known properties.
- Faster
unevaluatedPropertiesvalidation via O(1) property lookup and short-circuitoneOfevaluation. - Use HashMap for large set of properties.
- Lower HashMap threshold from 40 to 15 properties for faster property lookups.
0.40.2 - 2026-01-30
- Exclude internal
trackerfield fromValidationErrorDebug output. - Switch HTTP client TLS crypto backend from
aws-lc-rstoringto simplify building from source on some Linux distributions. #957
type: integervalidation in Draft 4 now correctly accepts large integers outside the i64/u64 range whenarbitrary-precisionfeature is enabled.
0.40.1 - 2026-01-30
ValidationErrorKind::Customnow includes akeywordfield containing the custom keyword name.
- Faster validation via cost-based keyword ordering.
- Faster
patternPropertiesfor simple prefix patterns (e.g.,^x-).
0.40.0 - 2026-01-18
HttpOptionsandValidationOptions::with_http_options()for configuring HTTP client behavior (timeouts, TLS verification, custom CA certificates) when fetching external schemas.- CLI:
--timeout,--connect-timeout,--insecure, and--cacertflags for HTTP configuration.
0.39.0 - 2026-01-16
ValidationError::evaluation_path()for the dynamic path including$reftraversals.
- BREAKING: Simplified custom keyword API -
Keyword::validateno longer receives path parameters, andValidationError::customonly takes a message.
schemaLocationin evaluation output now excludes$ref/$dynamicRef/$recursiveRefper JSON Schema spec.
evaluate(): 4.5-30x faster on complex schemas, 12-89% faster overall.- Recursive schemas with
oneOf/anyOf: ~4000x faster via memoization. #930
0.38.1 - 2025-12-25
multipleOfvalidation for integer values between2^53andi64::MAXwitharbitrary-precisionfeature.
0.38.0 - 2025-12-24
EmailOptionsfor configuringemailformat validation. #903
- Use-after-free in async
$refresolution when multiple refs target the same external URL with different fragments. #906 multipleOfvalidation for large u64 values beyondi64::MAXwitharbitrary-precisionfeature.Validatornot beingSend + Syncon WASM targets. #915
0.37.4 - 2025-11-30
- Stack overflow during validation of schemas with circular
$refchains (e.g.,a->b->a). - Local
$refresolution within fragment-extracted external resources. #892
- Deprecated
PrimitiveType&PrimitiveTypesBitMap.
0.37.3 - 2025-11-28
- External resources not discovered within subresources of local
$reftargets. #892
0.37.2 - 2025-11-27
JsonTypeSet::len()andJsonTypeSet::remove()helpers for managing type sets.
- External resources not discovered through chained local
$refreferences. #892
0.37.1 - 2025-11-19
- Stack overflow on empty
$refvalue. #886
0.37.0 - 2025-11-19
evaluate()top-level function for convenient access to structured validation output.- CLI: Schema-only validation now also validates all referenced schemas. #804
- Support for additional
contentEncodingvalues per RFC 4648:base64url,base32,base32hex, andbase16. These encodings are now validated alongside the existingbase64support in Draft 6 and 7. #26 validator.iter_errors(instance).into_errors(). It returns aValidationErrorstype that collects validation errors and implementsstd::error::Error. #451
- BREAKING:
ValidationErrorfields are private; useinstance(),kind(),instance_path(), andschema_path()instead of accessing struct fields directly. - BREAKING:
ErrorIteratoris now a newtype wrapper instead ofBox<dyn ValidationErrorIterator>.
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.
0.36.0 - 2025-11-18
- CLI: Structured
--output flag|list|hierarchicalmodes now stream newline-delimited JSON records with schema/instance metadata plus JSON Schema Output v1 payloads (defaulttextoutput remains human-readable). - CLI:
--errors-onlyflag to suppress successful validation output and only show failures. - CLI: When invoked with only a schema file (no instances), validates the schema against its meta-schema. #804
- New
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. #809
Validator::apply(),Output, andBasicOutputtypes have been removed in favor of the richerevaluate()API.
0.35.0 - 2025-11-16
- Support for custom meta-schemas. Schemas with custom
$schemaURIs can now be used by registering their meta-schemas in theRegistryviajsonschema::options().with_registry(). #664 arbitrary-precisionfeature for exact numeric validation of large integers and decimals beyond standard floating-point limits. #103- Support for HTTPS
$schemaURIs for drafts 04, 06, and 07 (e.g.,https://json-schema.org/draft-07/schema). #802
- BREAKING:
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. - BREAKING:
Resource::from_contentsno longer returnsResultand always succeeds, since draft detection no longer fails for unknown$schemavalues.
- BREAKING:
meta::try_is_validandmeta::try_validate. Usemeta::is_validandmeta::validateinstead. - BREAKING:
primitive_typemodule (deprecated since 0.30.0). Usejsonschema::typesinstead.
required: short-circuit when the instance object has fewer properties than required keys.
0.34.0 - 2025-11-14
- BREAKING:
BasicOutputandAnnotationsno longer have lifetime parameters. Update type annotations fromBasicOutput<'a>toBasicOutputandAnnotations<'a>toAnnotations. referencing: URI caching now avoids hash collisions and reduces lock contention.- Update
fluent-urito0.4.1. - Bump MSRV to
1.83.0. - Drop the
Send + Syncbounds fromRetrieve/AsyncRetrieveonwasm32. - Use the new
draftX::meta::validator()helper so meta-schema validators lazy-init onwasm32while native targets keep borrowing the cachedjsonschema::meta::MetaValidator.
- Hostname and IDN hostname formats now decode
xn--labels, reject leading combining marks/uppercase prefixes, and enforce the latest JSON Schema punycode context rules. - Restore
wasm32-unknown-unknownsupport. #785
applynow reuses cached schema locations, URI fragments, and buffers for up to ~2.5x faster validation.- Recursive and regular
$refcompilation deduplicates validator nodes, which decreases the memory usage and improves performance. - Validator compilation restores the regex cache for faster builds on regex-heavy schemas and precomputes absolute schema locations, trading a bit of compile time for faster
applyon location-heavy workloads. - Large schema compilation is significantly faster. #755
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.
- BREAKING:
Validator::configto reduce the memory footprint. - BREAKING: Public
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()).
0.33.0 - 2025-08-24
- BREAKING:
instance_pathsegments are now unescaped when iterating.LocationSegment::Propertynow holdsCow<'_, str>andLocationSegmentis no longerCopy. #788
0.32.1 - 2025-08-03
- Bump
fancy-regexto0.16.
0.32.0 - 2025-07-29
- Added missing
contextfield toValidationErrorKind::OneOfMultipleValid.
- Improved error message for
enum.
0.31.0 - 2025-07-28
- CLI: flag
-d, --draft <4|6|7|2019|2020>to enforce a specific JSON Schema draft. - CLI: flags
--assert-formatand--no-assert-formatto toggle validation offormatkeywords. - Added
contextforValidationErrorKind::AnyOfandValidationErrorKind::OneOfNotValidwhich contains errors for all subschemas, each inside a separate vector with an index matching subschema ID.
- Improve the precision of
multipleOffor float values.
- Bump
fancy-regexto0.15.
0.30.0 - 2025-04-16
JsonTypeandJsonTypeSet.ValidationOptions::with_base_urithat allows for specifying a base URI for all relative references in the schema.- Configuration options for the underlying regex engine used by
patternandpatternPropertieskeywords.
- Better error messages for relative
$refwithout base URI.
- CLI: Inability to load relative file
$ref. #725
- Internal cache for regular expressions.
PrimitiveTypeandPrimitiveTypesBitMap.
0.29.1 - 2025-03-27
Hash,PartialOrd,Ordandserde::SerializeforLocation.- Make
Location::joinpublic.
0.29.0 - 2025-02-08
-
All builder methods on
ValidationOptionsnow take ownership ofselfinstead of&mut self. This change enables better support for non-blocking retrieval of external resources during the process of building a validator. Update your code to chain the builder methods instead of reusing the options instance:// Before (0.28.x) let mut options = jsonschema::options(); options.with_draft(Draft::Draft202012); options.with_format("custom", my_format); let validator = options.build(&schema)?; // After (0.29.0) let validator = jsonschema::options() .with_draft(Draft::Draft202012) .with_format("custom", my_format) .build(&schema)?;
-
The
Retrievetrait'sretrievemethod now accepts URI references as&Uri<String>instead of&Uri<&str>. This aligns with the async version and simplifies internal URI handling. The behavior and available methods remain the same, this is purely a type-level change.// Before fn retrieve(&self, uri: &Uri<&str>) -> Result<Value, Box<dyn std::error::Error + Send + Sync>> // After fn retrieve(&self, uri: &Uri<String>) -> Result<Value, Box<dyn std::error::Error + Send + Sync>>
-
Simplified
Registrycreation API:- Removed
RegistryOptions::try_newandRegistryOptions::try_from_resourcesin favor ofRegistry::build - Removed
Registry::try_with_resource_and_retriever- useRegistry::options().retriever()instead - Registry creation is now consistently done through the builder pattern
// Before (0.28.x) let registry = Registry::options() .draft(Draft::Draft7) .try_new( "http://example.com/schema", resource )?; let registry = Registry::options() .draft(Draft::Draft7) .try_from_resources([ ("http://example.com/schema", resource) ].into_iter())?; let registry = Registry.try_with_resource_and_retriever( "http://example.com/schema", resource, retriever )?; // After (0.29.0) let registry = Registry::options() .draft(Draft::Draft7) .build([ ("http://example.com/schema", resource) ])?; let registry = Registry::options() .draft(Draft::Draft7) .build([ ("http://example.com/schema", resource) ])?; let registry = Registry::options() .retriever(retriever) .build(resources)?;
- Removed
- Support non-blocking retrieval for external resources during schema resolution via the new
resolve-asyncfeature. #385 - Re-export
referencing::Registryasjsonschema::Registry. ValidationOptions::with_registrythat allows for providing a predefinedreferencing::Registry. #682
- Significantly improved validator compilation speed by using pointer-based references to schema fragments instead of cloning them during traversal.
- Faster anchors & sub-resources lookups during validator compilation.
0.28.3 - 2025-01-24
- Panic when schema registry base URI contains an unencoded fragment.
- Fewer JSON pointer lookups.
0.28.2 - 2025-01-22
- Resolving external references that nested inside local references. #671
- Resolving relative references with fragments against base URIs that also contain fragments. #666
- Faster JSON pointer resolution.
0.28.1 - 2024-12-31
- Handle fragment references within
$id-anchored subschemas. #640
0.28.0 - 2024-12-29
- Implement
IntoIteratorforLocationto iterate overLocationSegment. - Implement
FromIterforLocationto build aLocationfrom an iterator ofLocationSegment. ValidationError::to_ownedmethod for converting errors into owned versions.- Meta-schema validation support. #442
0.27.1 - 2024-12-24
- Implement
ExactSizeIteratorforPrimitiveTypesBitMapIterator.
0.27.0 - 2024-12-23
- Added
masked()andmasked_with()methods toValidationErrorto support hiding sensitive data in error messages. #434
- Improved error message for unknown formats.
- Bump MSRV to
1.71.1.
0.26.2 - 2024-12-16
- Fix documentation for
validate
0.26.1 - 2024-10-29
- Return "Unknown specification" error on
https-prefixed$schemafor Draft 4, 5, 6. #629
0.26.0 - 2024-10-26
Important: This release contains breaking changes. See the Migration Guide for details on transitioning to the new API.
Validator::iter_errorsthat iterates over all validation errors.
- BREAKING: Remove unused
ValidationErrorKind::JSONParse,ValidationErrorKind::InvalidReference,ValidationErrorKind::Schema,ValidationErrorKind::FileNotFoundandValidationErrorKind::Utf8. - BREAKING:
Validator::validatenow returns the first error instead of an iterator in theErrvariant.
- Optimize error formatting in some cases.
0.25.1 - 2024-10-25
- Re-export
referencing::ErrorasReferencingError. #614
0.25.0 - 2024-10-24
Important: This release removes deprecated old APIs. See the Migration Guide for details on transitioning to the new API.
- BREAKING: Default to Draft 2020-12.
- Deprecated
draft201909,draft202012, andclifeatures. - Deprecated
CompilationOptions,JSONSchema,PathChunkRef,JsonPointerNode, andSchemaResolverErroraliases. - Deprecated
jsonschema::compile,Validator::compile,ValidationOptions::compile,ValidationOptions::with_resolver,ValidationOptions::with_meta_schemas,ValidationOptions::with_documentfunctions. - Deprecated
SchemaResolvertrait.
0.24.3 - 2024-10-24
- Infinite recursion when using mutually recursive
$refinunevaluatedProperties.
0.24.2 - 2024-10-24
- Infinite recursion in some cases. #146
$refinteraction with$recursiveAnchorin Draft 2019-09.unevaluatedPropertieswith$recursiveRef&$dynamicRef.
0.24.1 - 2024-10-21
- Incomplete external reference resolution.
0.24.0 - 2024-10-20
- Support
$ref,$recursiveRef, and$dynamicRefinunevaluatedItems. #287 - Support for
$vocabulary. #263
- Ignore
prefixItemsunder Draft 2019-09 as it was introduced in Draft 2020-12.
- Numbers with zero fraction incorrectly handled in
uniqueItems.
- Speedup
apply.
0.23.0 - 2024-10-12
- Partial support for
unevaluatedItems, excluding references.
- Improve error messages on WASM. #568
- Improve error messages on URI resolving and parsing.
- BREAKING: Replace
JsonPointerin favor ofLocation.
PathChunkRefin favor ofLocationSegment.JsonPointerNodein favor ofLazyLocation.
- Resolving file references on Windows. #441
- Missing annotations from by-reference applicators. #403
- Relative keyword locations missing by-reference applicators (such as
$refor$dynamicRef).
- Faster building of a validator.
- Speedup
hostname&idn-hostnameformats validation. - Speedup
apply.
JsonPointerNode::to_vecwithout a replacement.
0.22.3 - 2024-10-05
- Speedup resolving.
0.22.2 - 2024-10-04
- ECMAScript 262 regex support.
- Speedup
json-pointerandrelative-json-pointerformats validation.
0.22.1 - 2024-10-03
- Removed
dbg!macro.
0.22.0 - 2024-10-03
- Extend email validation. #471
- BREAKING: Custom retrievers now receive
&Uri<&str>instead of&UriRef<&str> - Bump
once_cellto1.20. - Bump
regexto1.11.
timeformat validation (leap seconds and second fractions).durationformat validation.- Panic on root
$idwithout base. #547 hostnameformat validation (double dot).idn-hostnameformat validation. #101
- Faster building of a validator.
- Speedup
hostname,date,time,date-time, anddurationformats validation. - Cache regular expressions for
pattern. #417
0.21.0 - 2024-09-29
Important: This release brings a complete rework of reference resolving which deprecates some older APIs. While backward compatibility is maintained for now, users are encouraged to update their code. See the Migration Guide for details on transitioning to the new API.
$anchorsupport.$recursiveRef&$recursiveAnchorsupport in Draft 2019-09.$dynamicRef&$dynamicAnchorsupport in Draft 2020-12.
- BREAKING: Treat
$refas URI, not URL, and additionally normalize them. #454 - BREAKING: Resolve all non-recursive references eagerly.
- BREAKING: Disallow use of fragments in
$id. #264
SchemaResolvertrait andSchemaResolverErrorin favor of a simplerRetrievethat works withBox<dyn std::error::Error>. In turn, it also deprecatesValidationOptions::with_resolverin favor ofValidationOptions::with_retrieverValidationOptions::with_documentin favor ofValidationOptions::with_resource.
- Infinite recursion in
unevaluatedProperties. #420 - Cross-draft validation from newer to older ones.
- Changing base URI in folder.
- Location-independent identifier in remote resource.
- Missing some format validation for Draft 2020-12.
- Incomplete
iri&iri-referencevalidation.
- Faster validation for
uri,iri,uri-reference, andiri-referenceformats.
0.20.0 - 2024-09-18
Important: This release includes several deprecations and renames. While backward compatibility is maintained for now, users are encouraged to update their code. See the Migration Guide for details on transitioning to the new API.
- New draft-specific modules for easier version-targeted validation:
jsonschema::draft4jsonschema::draft6jsonschema::draft7jsonschema::draft201909jsonschema::draft202012Each module providesnew(),is_valid(), andoptions()functions.
jsonschema::options()function as a shortcut forjsonschema::Validator::options(), that allows for customization of the validation process.
- Make
Debugimplementation forSchemaNodeopaque. - Make
jsonschema::validator_forand related functions returnValidationError<'static>in theirErrvariant. This change makes possible to use the?operator to return errors from functions where the input schema is defined.
- Rename
CompilationOptionstoValidationOptionsfor clarity. - Rename
JSONSchematoValidatorfor clarity. #424 - Rename
JSONPointertoJsonPointerfor consistency with naming conventions. #424 - Rename
jsonschema::compiletojsonschema::validator_for. - Rename
CompilationOptions::compiletoValidationOptions::build.
Old names are retained for backward compatibility but will be removed in a future release.
- Location-independent references in remote schemas on drafts 4, 6, and 7.
0.19.1 - 2024-09-15
ipv4format validation. #512
0.19.0 - 2024-09-14
jsonschema::compileshortcut.
- Bump MSRV to
1.70.
uuidformat validation.- Combination of
unevaluatedPropertieswithallOfandoneOf. #496
clifeature in favor of a separatejsonschema-clicrate.draft201909anddraft202012features. The relevant functionality is now enabled by default.
uuidvalidation viauuid-simd.
0.18.3 - 2024-09-12
- Changing base URI when
$refis present in drafts 7 and earlier. - Removed
dbg!macro.
0.18.2 - 2024-09-11
- Ignoring
$schemain resolved references. - Support integer-valued numbers for
maxItems,maxLength,maxProperties,maxContains,minItems,minLength,minProperties,minContains.
with_meta_schemas()method. Meta schemas are included by default.
0.18.1 - 2024-08-24
ErrorDescription::into_innerto retrieve the innerStringvalue.
0.18.0 - 2024-05-07
- Custom keywords support. #379
- Expose
JsonPointerNodethat can be converted intoJSONPointer. This is needed for the upcoming custom validators support.
- Bump
base64to0.22. - Bump
clapto4.5. - Bump
fancy-regexto0.13. - Bump
fractionto0.15. - Bump
memchrto2.7. - Bump
once_cellto1.19. - Bump
percent-encodingto2.3. - Bump
regexto1.10. - Bump
urlto2.5. - Build CLI only if the
clifeature is enabled. - BREAKING: Extend
CompilationOptionsto support more ways to define custom format checkers (for example in Python bindings). In turn it changesValidationErrorKind::Formatto contain aStringinstead of a&'static str.
- Incorrect
schema_pathwhen multiple errors coming from the$refkeyword #426
- Optimize building
JSONPointerfor validation errors by allocating the exact amount of memory needed. - Avoid cloning path segments during validation.
0.17.1 - 2023-07-05
- Improved error messages for
oneOf/anyOfkeywords. #429
- Improper handling of subschema validation in
unevaluatedProperties. #421
0.17.0 - 2023-03-16
- Bump
base64to0.21. - Bump
fancy-regexto0.11. - Bump
fractionto0.13. - Bump
iso8601to0.6. - Replace
lazy_staticwithonce_cell. - Add support for
unevaluatedProperties. (gated by thedraft201909/draft202012feature flags). #288 - When using the draft 2019-09 or draft 2020-12 specification,
$refis now evaluated alongside other keywords. #378
0.16.1 - 2022-10-20
- Add a compilation option (
should_ignore_unknown_formats()) that allows treating unknown formats as compilation errors.
0.16.0 - 2022-04-21
0.15.2 - 2022-04-10
- Allow HTTP(S) schema resolving with
rustls. #353
0.15.1 - 2022-04-02
- Enable
reqwest/native-tlsby default to avoid validation errors caused byreqwestmissing a TLS backend. #343
0.15.0 - 2022-01-31
- The
SchemaResolvertrait to support resolving external schema references. #246 resolve-filefeature to resolve external schema files viastd::fs. #76
- The
reqwestfeature was changed toresolve-http. #341
- CLI: Use
serde::from_readerinstead ofserde::from_str.
0.14.0 - 2022-01-23
- Bump
itoato1.0. #337
- Optimize the loop implementation used for uniqueness check on short arrays.
- Simplify
equal_arrayshelper. - Shortcut for
falseschemas. - Reduce the number of generated LLVM lines.
- Do less work when resolving fragments.
- Avoid cloning the value when resolving empty fragments.
- Optimize searching by pointer in JSON documents.
0.13.3 - 2021-12-08
- Make
BasicOutput.is_validpublic.
- False positives in some cases when calling
JSONSchema.applyon schemas withadditionalProperties,patternProperties, andpropertiescombined. - False negatives in some cases when calling
JSONSchema.applyon schemas withifandthen(withoutelse) keywords. #318 - Panic in
JSONSchema.applyon some schemas withprefixItemsanditems. It panicked ifitemsis an object and the length ofprefixItemsis greater than the length of the input array.
- Remove unused private field in
JSONSchema, that lead to improvement in the compilation performance. - Optimize the
multipleOfimplementation, which now can short-circuit in some cases. - Add special cases for arrays with 2 and 3 items in the
uniqueItemskeyword implementation. - Remove the
schemaargument from all methods of theValidatetrait.
0.13.2 - 2021-11-04
- Support for
prefixItemskeyword. #303 - Expose methods to examine
OutputUnit.
0.13.1 - 2021-10-28
- Missing
derivefromserde.
0.13.0 - 2021-10-28
uuidformat validator. #266durationformat validator. #265- Collect annotations whilst evaluating schemas. #262
- Option to turn off processing of the
formatkeyword. #261 basic&flagoutput formatting styles. #100- Support for
dependentRequired&dependentSchemaskeywords. #286 - Forward
reqwestfeatures.
- INTERNAL. A new
Draft201909variant for theDraftenum that is available only under thedraft201909feature. This feature is considered private and should not be used outside of the testing context. It allows us to add features from the 2019-09 Draft without exposing them in the public API. Therefore, support for this draft can be added incrementally. - The
Draftenum is now marked asnon_exhaustive. ValidationError::schemawas removed and the calls replaced by proper errors.
- Reduce the size of
PrimitiveTypesBitMapIteratorfrom 3 to 2 bytes. #282 - Use the
bytecountcrate formaxLength&minLengthkeywords, and for thehostnameformat.
0.12.2 - 2021-10-21
- Display the original value in errors from
minimum,maximum,exclusiveMinimum,exclusiveMaximum. #215 - Switch from
chronototime==0.3.3due to RUSTSEC-2020-0159 in oldertimeversions thatchronodepends on.
0.12.1 - 2021-07-29
- Allow using empty arrays or arrays with non-unique elements for the
enumkeyword in schemas. #258 - Panic on incomplete escape sequences in regex patterns. #253
0.12.0 - 2021-07-24
- Support for custom
formatvalidators. #158
- Validators now implement
Displayinstead ofToString. JSONSchemanow owns its data. #145
0.11.0 - 2021-06-19
- Report schema paths in validation errors -
ValidationError.schema_path. #199
- Incorrect encoding of
/and~characters infmt::Displayimplementation forJSONPointer. #233
0.10.0 - 2021-06-17
- BREAKING: Meta-schema validation for input schemas. By default, all input schemas are validated with their respective meta-schemas
and instead of
CompilationErrorthere will be the usualValidationError. #198
CompilationError. UseValidationErrorinstead.
0.9.1 - 2021-06-17
- The
formatvalidator incorrectly rejecting supported regex patterns. #230
0.9.0 - 2021-05-07
- Support for look-around patterns. #183
- Extend the
emailformat validation. Relevant test case from the JSONSchema test suite -email.json.
0.8.3 - 2021-05-05
paths::JSONPointerimplementsIntoIteratoroverpaths::PathChunk.
- Skipped validation on an unsupported regular expression in
patternProperties. #213 - Missing
arraytype in error messages fortypevalidators containing multiple values. #216
0.8.2 - 2021-05-03
- Avoid some repetitive
Stringallocations during validation. - Reduce the number of
RwLock.read()calls in$refvalidators. - Shortcut in the
uniqueItemsvalidator for short arrays. additionalProperties. Use vectors instead ofAHashMapif the number of properties is small.- Special handling for single-item
requiredvalidators. - Special handling for single-item
enumvalidators. - Special handling for single-item
allOfvalidators. - Special handling for single-item
patternPropertiesvalidators without definedadditionalProperties.
- Floating point overflow in the
multipleOfvalidator. Relevant test case from the JSONSchema test suite -float_overflow.json.
0.8.1 - 2021-04-30
- Avoid
Stringallocation inJSONPointer.into_vec. - Replace heap-allocated
InstancePathwith stack-only linked list.
0.8.0 - 2021-04-27
- The
propertyNamesvalidator now contains the parent object in itsinstanceattribute instead of individual properties as strings. - Improved error message for the
additionalPropertiesvalidator. After -Additional properties are not allowed ('faz' was unexpected), before -False schema does not allow '"faz"'. - The
additionalPropertiesvalidator emits a single error for all unexpected properties instead of separate errors for each unexpected property. - Breaking:
ValidationError.instance_pathis now a separate struct, that can be transformed toVec<String>or JSON Pointer of typeString.
- All
instance_pathattributes are pointing to the proper location.
0.7.0 - 2021-04-27
ValidationError.instance_paththat shows the path to the erroneous part of the input instance. It has theVec<String>type and contains components of the relevant JSON pointer.
- Make fields of
ValidationErrorpublic. It allows the end-user to customize errors formatting.
- Reject IPv4 addresses with leading zeroes. As per the new test case in the JSONSchema test suite. More info
- Do not look for sub-schemas inside
constandenumkeywords. Fixes an issue checked by these tests - Check all properties in the
requiredkeyword implementation. #190
- Not used
ValidationErrorKind::Unexpected.
0.6.1 - 2021-03-26
- Incorrect handling of
\wand\Wcharacter groups inpatternkeywords. #180 - Incorrect handling of strings that contain escaped character groups (like
\\w) inpatternkeywords.
0.6.0 - 2021-02-03
- Missing validation errors after the 1st one in
additionalPropertiesvalidators.
- Do not use
rayoninitemskeyword as it gives significant overhead for a general case. - Avoid partially overlapping work in
additionalProperties/properties/patternPropertiesvalidators. #173
0.5.0 - 2021-01-29
- Cache for documents loaded via the
$refkeyword. #75 - Meta schemas for JSON Schema drafts 4, 6, and 7. #28
- Not necessary network requests for schemas with
$idvalues with trailing#symbol. #163
- Enum validation for input values that have a type that is not present among the enum variants. #80
-V/--validatoroptions from the CLI. They were no-op and never worked.
0.4.3 - 2020-12-11
- Make examples in README.md runnable.
0.4.2 - 2020-12-11
- Move
pasteto dev dependencies.
- Number comparison for
enumandconstkeywords. #149 - Do not accept
datestrings with single-digit month and day values. #151
- Some performance related changes were rolled back, due to increased complexity.
0.4.1 - 2020-12-09
- Integers not recognized as numbers when the
typekeyword is a list of multiple values. #147
0.4.0 - 2020-11-09
- Command Line Interface. #102
ToStringtrait implementation for validators.- Define
JSONSchema::optionsto customiseJSONSchemacompilation #131 - Allow user-defined
contentEncodingandcontentMediaTypekeywords
- ECMAScript regex support
- Formats should be associated to Draft versions (ie.
idn-hostnameis not defined on draft 4 and draft 6)
0.3.1 - 2020-06-21
- Enable Link-Time Optimizations and set
codegen-unitsto 1. #104
itemsallows the presence of boolean schemas. #115
0.3.0 - 2020-06-08
- JSONSchema Draft 4 support (except one optional case). #34
- CI builds. #35 and #36
- Implement specialized
is_validmethods for all keywords. - Use
rayoninitemskeyword validation. - Various
clippylints. #66 Debugimplementation forJSONSchemaandResolver. #97Defaultimplementation forDraft.
- Do not pin dependencies. #90
- Use
to_stringinstead offormat!. #85 - Cache compiled validators in
$refkeyword. #83 - Use bitmap for validation of multiple types in
typekeyword implementation. #78 - Return errors instead of unwrap in various locations. #73
- Improve debug representation of validators. #70
- Reduce the number of
matchstatements during compilation functions resolving. - Use
expectinstead ofunwrapfor known cases when it is known that the code won't panic. - Add specialized validators for all
formatcases. - Reuse
DEFAULT_SCOPEduring reference resolving. - Replace some
Value::as_*calls withif let. - Inline all
compilefunctions. - Optimize
formatkeyword compilation by using static strings. - Optimize compilation of
true,falseand$refvalidators. - Reuse parsed
DEFAULT_ROOT_URLinJSONSchema::compile. - Avoid string allocation during
scopeparsing inJSONSchema::compile. - Refactor benchmark suite
- Use
BTreeSetinadditionalPropertieskeyword during compilation to reduce the amount of copied data. #91
- Wrong implementation of
is_validforadditionalProperties: falsekeyword case. #61 - Possible panic due to type conversion in some numeric validators. #72
- Precision loss in
minimum,maximum,exclusiveMinimumandexclusiveMaximumvalidators. #84
0.2.0 - 2020-03-30
- Implement
is_validfor various validators. - Implement
ErrorandDisplayforCompilationError
- Debug representation & error messages in various validators.
- Make
ErrorIteratorSyncandSend.
- Return
CompilationErroron invalid input schemas instead of panic.
- Initial public release