Revision history for JSON-Schema-Modern
0.597 2024-12-07 23:30:38Z
- report installed version of builtin
0.596 2024-11-24 00:57:13Z
- properly handle changing of dialects (including swapping out
vocabularies and keywords) when evaluating a local subschema
(without a $ref)
- now collecting identifiers within contentSchema keywords as we do
for any other subschema
0.595 2024-11-07 18:57:16Z
- bump required version of builtin::compat
0.594 2024-11-03 17:01:42Z
- improved handling of numeric type checking in draft4
- numeric type checking is relaxed, now allowing for dualvars
arising from the simple case of using a number in string context
or a string in numeric context (only a problem in perls <5.36)
0.593 2024-10-14 18:43:23Z
- fix new integer type tests that fail on perls < 5.35.9
0.592 2024-10-13 19:43:20Z
- support added for the draft4, draft6 specification versions
0.591 2024-10-06 21:06:15Z
- new --dump-identifiers option in json-schema-eval executable
- the document form of 'add_schema' has been extracted out into
'add_document', with the old form deprecated
- is_equal() utility function, and the const and enum keywords, now
provide more detailed error diagnostics
- fix "strict" mode for draft7 documents
0.590 2024-09-07 00:48:50Z
- "strict" mode is now recognized by validate_schema(), to report on
any unrecognized keywords used in the schema being validated
0.589 2024-07-06 21:07:44Z
- skip unpassable tests when ivsize < 8
0.588 2024-06-28 17:14:22Z
- bump required version of Math::BigInt for bdiv, bmod fixes
0.587 2024-06-26 22:55:11Z
- fix multipleOf test that fails on some peculiar architectures
- document the use of Sereal for caching large evaluator objects
0.586 2024-06-23 18:46:01Z
- simplification of calculation for "multipleOf" keyword
0.585 2024-06-19 04:03:36Z
- make use of core bool functionality where it exists (perl 5.36+)
0.584 2024-05-18 21:06:35Z
- add 'get_entity_locations' helper sub to ::Document
0.583 2024-03-30 17:56:17Z
- further optimization of error and annotation construction, which
should significantly improve evaluation performance of large
documents which heavily use the 'unevaluated*' keywords (such as a
schema evaluated against its metaschema, or an OpenAPI document
evaluated against its schema)
0.582 2024-01-23 03:18:31Z
- change the status of some format tests that rely on optional
modules so they are not reported as specification failures
- fix forking test that failed on MSWin32
0.581 2024-01-18 05:35:16Z
- make automated tests much quieter when some optional modules (e.g.
used for format tests) are not installed
0.580 2024-01-18 04:38:33Z
- update a format test to be more amenable to 32-bit architectures
0.579 2024-01-15 03:32:27Z
- improve performance by checking for duplicates by comparing the
checksum of a schema rather than the content itself
- fix error occurring when using the FormatAssertion vocabulary in
an evaluator object that was loaded from a serialized object
- fixed custom format definitions to not allow 'integer' types, as
per the specification
- support custom format definitions that operate on more than one
core data type
- fixed handling of unrecognized formats in draft2020-12 and later
(but only when the FormatAssertion vocabulary is explicitly
requested, not with validate_formats=1)
- the format keyword now respects the "stringy_numbers" option
0.578 2023-12-29 23:13:44Z
- remove use of JSON::MaybeXS, to avoid potential use of JSON::XS;
now we use Cpanel::JSON::XS or JSON::PP directly, using the same
environment variables as in Mojo::JSON for customization.
- new helper interface, get_document()
0.577 2023-12-19 05:27:04Z
- new attribute on Error and Result objects: "recommended_response",
for use when validating HTTP requests
0.576 2023-12-10 06:10:57Z
- the "stringy_numbers" feature now also applies to the "enum",
"const", and "uniqueItems" keywords
0.575 2023-11-26 05:11:10Z
- properly handle some edge cases where the "$schema" keyword can
change the dialect to a different specification version with
different Core vocabulary keywords
- evaluation at non-schema locations is now prohibited
0.574 2023-11-13 00:50:55Z
- better detection of schema locations, for use by Document
subclasses
- fixed vocabulary ordering (from v0.567)
- properly handle "$dynamicRef", "$recursiveRef" and "$schema"
referencing a boolean schema
- bundled metaschemas have been updated to their latest versions
from https://json-schema.org
0.573 2023-10-21 23:49:03Z
- fix construction of default values of some attributes e.g.
media_types, encodings
- fix list context of has_errors, error_count, annotation_count
methods
0.572 2023-10-14 22:04:52Z
- boost runtime performance by removing uses of MooX::HandlesVia
0.571 2023-09-17 01:14:47Z
- removed duration and uuid formats for draft7 (they were not
defined until the next spec version)
- properly default format validation to true in draft7
0.570 2023-09-02 20:42:03Z
- small performance improvements to 'date-time' and 'date' format
validation
- new stringy_numbers option, for validating numbers more loosely
0.569 2023-07-08 23:36:06Z
- fixed some edge cases with ipv6 format validation
0.568 2023-06-17 07:16:54Z
- add media-type support for application/x-ndjson and
application/x-www-form-urlencoded
0.567 2023-06-03 22:11:23Z
- vocabularies are now evaluated in a different order: Validation
and Format vocabularies now come before Applicator, in order to
allow faster short circuiting when errors are encountered.
0.566 2023-05-11 03:34:59Z
- treat ambiguous types as a normal error, rather than an exception
which may provide incorrect location data
0.565 2023-03-12 21:19:27Z
- traverse and evaluate callbacks can now produce errors,
which are incorporated into the overall evaluation results
- fix bad handling of empty patterns in "pattern",
"patternProperties" keywords
0.564 2023-03-04 00:43:42Z
- further tweak performance by short-circuiting inside some
subschemas (but not when annotations must be collected for
"unevaluated" keywords)
- added support for 'base64url' encoding
0.563 2023-02-04 23:38:13Z
- documentation update: improve language around data types and
JSON decoder recommendations
0.562 2023-01-22 00:49:07Z
- bump a test prereq to fix a mismatched exception message
0.561 2023-01-07 20:57:37Z
- further tweak performance by only collecting annotations when
explicitly requested, or needed by the current evaluation scope
0.560 2022-12-20 20:00:05Z
- fix a test that depended on optional prereqs
0.559 2022-12-16 04:29:55Z
- fix regression where formats do not validate beyond a $ref (since
v0.556)
0.558 2022-11-26 02:43:15Z
- add fallback media type handling for text/*
- performance is (hopefully) improved by delaying some calculations
in annotations until they are needed
0.557 2022-10-30 21:59:04Z
- improvements to processing of keywords in the Content vocabulary
(contentEncoding, contentMediaType, contentSchema)
- LICENSE now provided with bundled metaschema files
0.556 2022-09-18 22:41:50Z
- some performance optimizations for schema traversal and evaluation
0.555 2022-09-10 21:43:11Z
- the "iri-reference" format is now supported, sort of (all strings
will be accepted as valid)
- "enum" no longer incorrectly errors if elements are not unique
- new experimental output format: "data_only", which encapsulates
what is produced when a JSON::Schema::Modern::Result object is
stringified
0.554 2022-07-24 00:08:54Z
- use new Slurpy type in Types::Standard
0.553 2022-06-25 03:27:14Z
- expanded on the documentation for serializing results.
- updated IETF URI references from draft-bhutton-json-schema-00
to draft-bhutton-json-schema-01, to reflect the updates to
specification draft2020-12 (implementation updates have already
been reflected in earlier releases, notably 0.548 and 0.550)
0.552 2022-05-03 03:31:59Z
- fix result serialization from exceptions (broken in 0.550)
0.551 2022-05-01 01:29:51Z
- the "specification_version" configuration option now accepts
values without "draft" in the name, to facilitate a new naming
convention used for future specification versions
- new "formatted_annotations" option for JSON::Schema::Modern::Result,
to allow for omitting annotations from result output
0.550 2022-04-14 04:32:32Z
- added 'dump' method to Result, Error and Annotation objects, for
easier debugging and generating test output
- adjusted syntax checks for $vocabulary keyword to allow for
bundled metaschemas
- new validate_schema() method, for easily validating a schema
against its metaschema
0.549 2022-03-22 03:55:15Z
- properly detect the metaschema in json-schema-eval
--validate-schema
0.548 2022-03-09 06:27:10Z
- "annotate_unknown_keywords" option removed; behaviour is now on
for draft2020-12 and off otherwise
- annotation behaviour for applicator keywords is fixed per the
spec, resulting in fewer redundant errors from unevaluatedItems,
unevaluatedProperties keywords
0.547 2022-03-03 06:08:51Z
- improved error stringification on document error
0.546 2022-02-23 01:33:03Z
- avoid use of newly-experimental signature syntax on 5.35.9
0.545 2022-02-22 04:30:36Z
- avoid new experimental warning on 5.35.9
- skip unresolvable identifiers for future drafts in acceptance
tests (added in TJSA 1.016)
0.544 2022-02-16 05:53:08Z
- add_schema() now has more consistent exception handling
0.543 2022-02-11 04:11:55Z
- now allowing runtime overriding of the "strict" configuration
- add "effective_base_uri", for adjusting the locations of errors
and annotations against a dynamic base
0.542 2022-01-23 08:17:08Z
- new "strict" option (and --strict flag to json-schema-eval), for
disallowing unknown keywords
0.541 2022-01-17 23:57:35Z
- add --add-schema option to json-schema-eval to allow for the
reference of additional schemas during evaluation
0.540 2022-01-17 18:58:36Z
- make "unimplemented format" errors more visible
- fixed serializing of results in acceptance tests
- add --validate-schema option to json-schema-eval to provide an
easy way to validate a schema against its meta-schema
0.539 2022-01-06 04:07:20Z
- updated error message for the "type" keyword to include the actual
type, as well as the expected type(s)
0.538 2021-12-31 21:18:21Z
- remove no-longer-needed TODO in tests that caused warnings in
small-int systems
0.537 2021-12-30 22:49:02Z
- fix number/integer differentiation on small-int systems
- improve division calculations if either argument is a non-integer
0.536 2021-12-30 05:32:44Z
- very large/small numbers are now properly accomodated in all
cases, including from JSON-serialized data
0.535 2021-12-28 06:38:37Z
- mark more tests TODO (temporarily!) for small-int systems
0.534 2021-12-27 21:05:34Z
- clarify exit statuses for 'json-schema-eval'
- fix numeric tests for architectures with small int size
- fix handling of unsigned ints that cannot be represented in a
signed int
0.533 2021-12-23 19:45:11Z
- fix exit statuses in json-schema-eval
0.532 2021-12-22 19:14:06Z
- add media_type decoders for application/schema+json,
application/schema-instance+json
- add 'json-schema-eval' executable, for ad-hoc evaluation
0.531 2021-12-06 05:39:53Z
- add method to add format implementations after construction
- treat media_type names case-insensitively, as per RFC6838,
and lookups support wildcards (get_media_type('text/plain')
will match an entry for 'text/*' or '*/*')
0.530 2021-12-03 16:44:23Z
- fix hash slice syntax that is not available before perl 5.28
0.529 2021-12-03 04:00:26Z
- added FREEZE and THAW callbacks to assist with serialization
0.528 2021-11-30 06:17:29Z
- evaluation callback sub signature has changed, to add $data
- minor performance improvement during evaluation
0.527 2021-11-26 00:53:42Z
- fixes to base64 and json decoders used in the Content vocabulary
0.526 2021-11-23 05:11:46Z
- fix evaluate() callbacks for keywords that have no
runtime-specific actions
- optional support for contentEncoding, contentMediaType and
contentSchema with the validate_content_schemas option and
"encoding", "media_type" handler registries
- a boolean flag "unknown" has been added to Annotation objects to
indicate they correspond to an unknown keyword in the schema
0.525 2021-11-17 05:35:24Z
- minimum Perl version raised to 5.20
- dropped bundling hyper-schema files, as they are not validatable
without vocabulary support (see issue #44)
- & overload added to JSON::Schema::Modern::Result, for combining
results
- add callbacks to evaluate(), to enable finding certain positions
of interest in a document or schema
0.524 2021-11-10 04:36:49Z
- some refactoring of vocabulary and document methods, to faciliate
re-use
- new utility functions: is_uri_reference, assert_keyword_exists
- allow specifying the metaschema_uri for a schema document
- add "validate" method to Document object
- updated draft2019-09 and added draft2020-12 hyperschema schemas
0.523 2021-10-24 05:58:27Z
- fix tests that were relying on an optional prereq
- properly gate experimental features by version
0.522 2021-10-22 22:26:29Z
- 'date-time' format now properly handles leap seconds
0.521 2021-10-04 05:36:10Z
- fix issues when referencing a schema in a metaschema:
whose vocabulary is not known, but its keywords can still be
validated, or which does not use the $vocabulary keyword at all
0.520 2021-09-27 05:56:11Z
- support arbitrary metaschemas in the "$schema" keyword
- support custom vocabulary classes, for use in metaschemas that use
the "$vocabulary" keyword
0.519 2021-09-21 03:56:13Z
- fix tests that were relying on an optional prereq
0.518 2021-09-18 22:00:42Z
- skip some regex tests when Unicode library is too old for those
character classes being tested
- specification versions can now change, via the $schema keyword,
within schema resources in a single document or via $ref to another
resource
0.517 2021-08-28 04:34:17Z
- restore some optional modules used for format validation to the
prereq list that were mistakenly dropped in version 0.515
- date-time, date and time formats no longer match non-ascii digits
0.516 2021-08-14 19:53:16Z
- fix email format tests on older prereqs
- avoid errors when enabling validate_formats before evaluating but
after loading a schema
0.515 2021-08-03 04:07:02Z
- no longer calling a keyword's callback during traverse() if that
keyword has an error
- better handling of blessed data types and other references
- new config option scalarref_booleans, which will treat \0, \1 in
data as json booleans
- support for the most recent specification version, draft2020-12
0.514 2021-07-22 05:17:08Z
- add_schema() now dies with the errors themselves, rather than an
object that serializes to an unhelpful value in uncaught die()s.
0.513 2021-06-26 19:45:51Z
- skip acceptance test for integer overflow when nvsize is too
large to produce the expected error
- support for specification version draft7, through the "$schema"
keyword and the new 'specification_version' constructor option
0.512 2021-06-09 02:29:23Z
- distribution has been renamed from JSON-Schema-Draft201909 to
JSON-Schema-Modern. JSON::Schema::Draft201909 lives on as a
compatibility wrapper.
0.028 2021-06-08 02:48:07Z
- fix validation regex for the $anchor keyword
- unevaluatedItems and unevaluatedProperties keywords are now
applied after all other keywords in the applicator vocabulary
(true/false results are not affected, but the order of annotations
and errors will change)
- calculate the canonical uri correctly after navigating a $ref:
using the closest resource identifier to the destination, not the
one that was used in the $ref
0.027 2021-05-15 18:13:21Z
- fixed error strings used for failing "dependentRequired"
- in terse output format, do not discard non-summary errors from
schema-form of items
- keywords in the applicator vocabulary are now applied before the
keywords in the validation vocabulary (true/false results are not
affected, but the order of annotations and errors will change)
- improved validation of the "date-time", "date" and "time" formats
0.026 2021-04-08 20:13:27Z
- fix scoping of annotations from uncle keywords (siblings of the
schema's parent) that were improperly visible to unevaluatedItems,
unevaluatedProperties
- 'result' attribute in JSON::Schema::Draft201909::Result has been
renamed to 'valid', to better match what it represents (a boolean)
0.025 2021-03-30 05:36:14Z
- minor changes to error strings to distinguish between issues that
can be determined from static inspection of schema(s), and those
that only arise during runtime evaluation (such as URIs that
map to missing schema documents, or inconsistent configuration
values).
- more validity checks at traversal time of $ref, $schema,
$vocabulary values
- update ipv4 format validation to reject leading zeroes in octets,
helping avoid a newly-discovered vulnerability in netmasks
0.024 2021-03-23 21:53:42Z
- the default value for "validate_formats" is once again false (it
became true in v0.020), to properly conform to the specification
0.023 2021-02-21 18:36:32Z
- fix "try/catch is experimental" warnings in perl 5.33.7
0.022 2021-02-07 17:33:14Z
- fix erroneous use of postfix dereference (closes #42).
0.021 2021-02-06 18:50:42Z
- [Pp]roperties$ keywords now always produce annotations when
evaluating successfully, even if there were no matching properties
- added the "strict_basic" output format, for strict (but incorrect)
adherence to the draft 2019-09 specification
0.020 2021-01-02 17:12:09Z
- the default value for "validate_formats" is now true, to reflect
the most typical usecase.
- gracefully handle the erroneous schema { "type": null }
- fixes to relative-json-pointer format validation
- new "annotate_unknown_keywords" config option
0.019 2020-12-08 18:40:10Z
- further improvements to the "terse" output format
- add_schema will now die with a Result object rather than a
listref of Error objects, when the document contains errors.
0.018 2020-12-07 18:22:07Z
- now can correctly evaluate schemas containing unevaluatedItems,
unevaluatedProperties keywords without the user having to
explicitly set collect_annotations => 1 in the constructor
- fix error in "terse" output formatting that mistakenly dropped
some unevaluatedProperties errors
0.017 2020-11-24 19:15:18Z
- refactor keyword implementations into separate vocabulary classes,
to faciliate future support for custom vocabularies
- traverse the schema before evaluation, for more correct
and complete extraction of identifiers and invalid syntax
- add callbacks to traverse(), to easily find keywords of interest
0.016 2020-11-18 18:18:40Z
- further fixes to infinite loop detection
- fix dereference error when evaluating "definitions",
"dependencies"
- when adding two schema documents with no canonical uri, preserve
knowledge of other identifiers found in the first document
- add_schema() no longer adds additional URIs to the document
object, only the evaluator
0.015 2020-10-20 03:08:36Z
- fixed infinity/overflow checks for older perls
0.014 2020-10-16 19:21:17Z
- ensure "enum" value is an array
- do not evaluate non-arrays against "unevaluatedItems"
- fix detection of bad $recursiveAnchor
- fix canonical uri calculation for $schema, $recursiveAnchor, and
infinite loop detection
- for output_format=terse, do not omit the important errors for
unevaluated* when annotation collection is disabled
0.013 2020-09-15 19:14:53Z
- detect more cases of resource identifier collisions
- fix resolution of relative $ids
- new "terse" output format
0.012 2020-08-13 20:23:21Z
- now using unicode semantics for pattern matching
0.011 2020-08-04 22:16:46Z
- better normalization of uris in errors
- now detecting infinite loops separately from deep traversal
- optionally collect annotations
- support for the "unevaluatedItems" and "unevaluatedProperties"
keywords
0.010 2020-07-23 16:50:18Z
- fixed error generation for validator keywords with numeric
arguments (e.g. minimum, multipleOf)
- new "get" method for fetching the schema found at a URI
- improved "ipv6" format validation
0.009 2020-07-07 19:54:44Z
- no longer allowing adding another schema document with a duplicate
uri but different schema content (some collision checks were too
lax).
- fix behaviour of $recursiveRef without an $recursiveAnchor in the
initial target scope
0.008 2020-06-22 04:24:06Z
- fix bad syntax used in a test
0.007 2020-06-21 21:20:33Z
- raise some inadequate prereq declarations
- fix incorrect canonical uri when evaluating a (sub)schema using a
non-canonical uri
0.006 2020-06-19 20:54:40Z
- add support for evaluation against a uri
- add "add_schema" interface for using additional schema documents
within the implementation
- support using the "format" keyword as an assertion, with the
"validate_formats" option
0.005 2020-06-09 01:54:05Z
- fix some edge cases with usage of $recursiveAnchor, $recursiveRef
- fixed several issues with resource identification within schema
documents
0.004 2020-06-02 19:14:32Z
- add support for $recursiveAnchor and $recursiveRef
- support use of "$ref":"https://json-schema.org/draft/2019-09/schema"
by loading common metaschemas from a local cache
0.003 2020-05-31 20:10:02Z
- add infinite recursion detection
- process properties in sorted order, for consistent ordering of
results
- mark a numeric comparison test as TODO on 32-bit machines (see
GHI #10)
0.002 2020-05-27 22:28:15Z
- fix incorrect prereq needed for tests
- add support for $id and $anchor in single schema documents
0.001 2020-05-21 15:51:00Z
- Initial release [as JSON-Schema-Draft201909].