The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for JSON-Schema-Modern

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.