Skip to content

v1.0.0

Compare
Choose a tag to compare
@jviotti jviotti released this 23 Feb 20:37
· 741 commits to main since this release
151ca05

What's Changed

  • Clarify that .clear() works on arrays by @jviotti in #11
  • Implement make_object and make_array constructors by @jviotti in #12
  • Document how to convert existing instances to arrays/objects by @jviotti in #14
  • Note functions that are useful for programatically creating containers by @jviotti in #15
  • Test programatically creating objects and arrays by @jviotti in #13
  • Implement prettify contrib/ program by @jviotti in #16
  • Implement a contrib/ minify program by @jviotti in #17
  • Do not build contrib/ programs by default by @jviotti in #19
  • Add FetchContent usage instructions by @jviotti in #20
  • Do not build tests by default by @jviotti in #21
  • Reduce required C++ version to 17 by @jviotti in #23
  • Improve contribution instructions by @jviotti in #26
  • Vendor bootstrap by @jviotti in #25
  • Minor fixes to support Windows by @jviotti in #28
  • Support a custom backend path by @jviotti in #29
  • Do not run stdin contrib tests on Windows by @jviotti in #30
  • Extract contrib test scripts into variables by @jviotti in #31
  • Specify --build-config when running ctest by @jviotti in #32
  • Fix Windows stdin checks by @jviotti in #33
  • Support finding rapidjson from vcpkg by @jviotti in #34
  • Fix crash on .assign() with move semantics by @jviotti in #35
  • Namespace JSON tests by @jviotti in #36
  • Implement a metaschema() function by @jviotti in #37
  • Refactor metaschema() to solve one-definition-rule problem by @jviotti in #38
  • Specify --config when building using CMake by @jviotti in #39
  • Simplify JSON unit tests by @jviotti in #40
  • Upgrade vendorpull by @jviotti in #41
  • Implement a JSON Schema id() function by @jviotti in #42
  • Implement a function to return schema vocabularies by @jviotti in #43
  • Ignore vendor/ in .ackrc by @jviotti in #44
  • Implement a function to deep-copy a JSON document or value by @jviotti in #45
  • Support from() when passing a zero literal by @jviotti in #46
  • Add easy-to-use range-based for loop support by @jviotti in #50
  • Implement support for iterating over subschemas by @jviotti in #51
  • Increase granularity of GNU Make targets by @jviotti in #52
  • Implement a default JSON Schema 2020-12 schema walker by @jviotti in #53
  • Let vocabularies() take an optional default metaschema URI by @jviotti in #56
  • Check vocabularies at every step in subschema_iterator() by @jviotti in #55
  • Implement a flat subschema iterator by @jviotti in #57
  • Change domain to jsontoolkit.org by @jviotti in #60
  • Make JSON Toolkit build on Debian 11 (current Stable) by @jviotti in #58
  • Enable pthreads on Linux by @jviotti in #61
  • Test building on GNU/Linux using GCC by @jviotti in #59
  • Add a contrib tool to analyze JSON Schema keywords by @jviotti in #47
  • Implement a function to determine the schema's dialect URI by @jviotti in #62
  • Assume core vocabularies if $vocabulary is unset by @jviotti in #63
  • Take small enough std::uint64_t as input in from() by @jviotti in #64
  • Fix flat_subschema_iterator() on schema without a metaschema by @jviotti in #65
  • Define a schema walker that never walks by @jviotti in #66
  • Implement erase_many() by @jviotti in #67
  • Document GCC support by @jviotti in #68
  • Minor misc fixes for erase_many() by @jviotti in #69
  • Define defines_any() by @jviotti in #70
  • Fix push_back() docs example by @jviotti in #71
  • Implement is_number() by @jviotti in #72
  • Support using from() with std::size_t by @jviotti in #73
  • Implement an "add" function to increment/decrement numbers in-place by @jviotti in #74
  • Document the contains() array function by @jviotti in #75
  • Implement a "compare" function for standard algorithms by @jviotti in #76
  • Generalize iterator-based erase_many to work on arrays by @jviotti in #77
  • Implement a clear_except() function for objects by @jviotti in #78
  • Make sure schema_walker_strategy_t is defined outside of GCC by @jviotti in #80
  • Build website using CMake by @jviotti in #81
  • Test CMake installation on CI by @jviotti in #82
  • Make Makefile NMAKE compliant by @jviotti in #83
  • Disable some JSONTestSuite tests for MSVC by @jviotti in #85
  • Fix cast to make MSVC happy by @jviotti in #84
  • Add basic Windows support by @jviotti in #86
  • Create a new "test" target in the Makefile by @jviotti in #87
  • Get rid of fail.sh contrib test helper script by @jviotti in #88
  • Do not run tests twice on the Makefile by @jviotti in #89
  • Bring back "contrib" tests on Windows by @jviotti in #27
  • Run clang_format_test, not clang_format on CI by @jviotti in #92
  • Implement a sample contrib cURL resolver by @jviotti in #91
  • Disable min/max macros on MSVC by @jviotti in #94
  • Implement a local-first resolver for 2020-12 official schemas by @jviotti in #93
  • Split JSON and JSON Schema into its own modules within src/ by @jviotti in #95
  • Merge the local resolver with the core JSON Schema module by @jviotti in #96
  • Support JSON Schema 2019-09 on the default resolver by @jviotti in #97
  • Throw if the core vocabulary is missing or set to optional by @jviotti in #98
  • Better handle vocabularies for boolean schemas by @jviotti in #99
  • Check current dialect when fetching vocabularies by @jviotti in #100
  • Make vocabularies() dialect-aware by @jviotti in #101
  • Add 2019-09 support in vocabularies() by @jviotti in #102
  • Support 2020-12 and 2019-09 Hyper Schema by @jviotti in #104
  • Note intention to support older JSON Schema dialects in .vocabularies() by @jviotti in #105
  • Implement a copy() function for JSON containers by @jviotti in #106
  • Add a copy() overload to duplicate entire containers by @jviotti in #107
  • Ensure doubles are never NaN or infinity by @jviotti in #108
  • Re-license the project as AGPL by @jviotti in #109
  • Implement a to_vector() utility function by @jviotti in #110
  • Implement an is_positive() utility function by @jviotti in #111
  • Be explicit about JSON iterator begin/end types by @jviotti in #112
  • Add iterator traits to JSON iterators by @jviotti in #113
  • Declare iterator and const_iterator for SchemaWalker by @jviotti in #114
  • Run CMake parallel builds by default by @jviotti in #115
  • Handle "None" schema walker strategy on the switch case by @jviotti in #117
  • Run tests in parallel by @jviotti in #118
  • Properly allocate keys on object assignment by @jviotti in #119
  • Implement a hash function for JSON documents by @jviotti in #120
  • Rename "dialect()" function to "draft()" by @jviotti in #121
  • Integrate with Cirrus CI for BSD runs by @jviotti in #122
  • Mention FreeBSD support by @jviotti in #123
  • Improve compiler warnings by @jviotti in #124
  • Install README on the package docs directory by @jviotti in #125
  • Define library aliases by @jviotti in #126
  • Always perform component-based installation by @jviotti in #127
  • Allow installing contrib programs by @jviotti in #128
  • Use :: namespaced target aliases by @jviotti in #129
  • Correctly define header sources in JSON interface library by @jviotti in #130
  • Set correct output/export names for libraries by @jviotti in #131
  • Only install README on top-level builds by @jviotti in #133
  • Remove warnings macro in favor of global options by @jviotti in #134
  • Ignore -Wdocumentation for RapidJSON by @jviotti in #135
  • Exercise installation on local builds by @jviotti in #136
  • Fix JSONTOOLKIT_BACKEND_PATH empty conditional logic by @jviotti in #137
  • Declare top-level JSON header as part of the JSON library by @jviotti in #138
  • Install library CMake exports by @jviotti in #139
  • Turn rapidjson wrapper into an imported target by @jviotti in #140
  • Make the project consumable by CMake find_package() by @jviotti in #132
  • Better integrate with VCPKG on Windows by @jviotti in #141
  • Add a Brewfile for macOS dependencies by @jviotti in #142
  • Remove artificial JSON Schema resolver.h install by @jviotti in #144
  • Implement a basic ParseError exception subclass by @jviotti in #145
  • Introduce a general purpose SchemaError exception subclass by @jviotti in #146
  • Implement a ResolutionError exception subclass by @jviotti in #147
  • Support calling from() with a std::string_view by @jviotti in #148
  • Add a Sourcemeta namespaces to libraries by @jviotti in #149
  • Update #if guards to use SOURCEMETA_ by @jviotti in #150
  • Re-organize installed CMake files by @jviotti in #151
  • Import the Noa project by @jviotti in #152
  • Use Noa's compiler variables by @jviotti in #153
  • Simplify ISO C++ settings with Noa by @jviotti in #154
  • Integrate with ClangTidy by @jviotti in #155
  • Upgrade Noa to handle RPATHs by @jviotti in #156
  • Address ClangTidy comments by @jviotti in #157
  • Add a CHANGELOG template by @jviotti in #159
  • Use underscores in contrib apps by @jviotti in #160
  • Use underscores in library output names by @jviotti in #161
  • Support shared libraries by @jviotti in #158
  • Refactor JSON Schema library declaration by @jviotti in #162
  • Rename main component to sourcemeta_jsontoolkit by @jviotti in #164
  • Separate contrib tools into their own component by @jviotti in #165
  • Create a separate sourcemeta_jsontoolkit_dev component by @jviotti in #166
  • Set HOMEPAGE_URL in the CMake project declaration by @jviotti in #167
  • Improve conditional with ClangTidy suggestions by @jviotti in #168
  • Quiet argv pointer ClangTidy warnings until we are in C++20 by @jviotti in #169
  • Quiet ref member ClangTidy warnings by @jviotti in #170
  • Set JSONTOOLKIT_BACKEND_PATH to be of type PATH by @jviotti in #171
  • Be explicit about CMake variable types by @jviotti in #172
  • Improve "backend" option definition by @jviotti in #173
  • Improve GoogleTest discovery defaults by @jviotti in #176
  • Use typed CMake variables in packaging tests by @jviotti in #174
  • Configure IDE folders in CMake by @jviotti in #177
  • Do not hardcode warnings as errors by @jviotti in #178
  • Move config.cmake.in to the root of the project by @jviotti in #180
  • Remove support for specifying a backend path by @jviotti in #179
  • Build against an address sanitizer on Linux by @jviotti in #181
  • Fix several shared library generation warnings on Windows by @jviotti in #186
  • Test including JSON Schema component in packaging tests by @jviotti in #185
  • Rename export header by @jviotti in #188
  • Unit test compare() with equal strings by @jviotti in #189
  • Get rid of RapidJSON by @jviotti in #190
  • Apply sanitizers per target by @jviotti in #193
  • Use std::map instead of std::unordered_map in JSON Schema by @jviotti in #196
  • Allow ParseError to be exported on Windows by @jviotti in #195
  • Enable remaining JSONTestSuite cases by @jviotti in #197
  • Use trailing return types by @jviotti in #198
  • Add various grammar comments by @jviotti in #199
  • Override operator<< for JSON by @jviotti in #200
  • Vendor GoogleTest by @jviotti in #202
  • Improve contrib target names by @jviotti in #203
  • Fix various MSVC DLL warnings by @jviotti in #204
  • Run with an undefined behavior sanitizer by @jviotti in #194
  • Recommend C++20 on installation examples by @jviotti in #205
  • Support initializing from string_view by @jviotti in #206
  • Extract test scripts out of test/contrib by @jviotti in #208
  • Support Emscripten by @jviotti in #207
  • Remove obsolete Makefile ctest comment by @jviotti in #209
  • Implement basic JSON Pointer support by @jviotti in #143
  • Simplify JSON Pointer "get" branch by @jviotti in #210
  • Test a pointer with a stringified index by @jviotti in #214
  • Cover JSON Pointer RFC tests by @jviotti in #213
  • Improve JSON Pointer "get" inline docs by @jviotti in #212
  • Test a JSON string with an null byte inside by @jviotti in #215
  • Test presence of null in an object property by @jviotti in #211
  • Implement a "set" operator for JSON Pointer by @jviotti in #216
  • Test JSON Pointer setting to a hyphen property by @jviotti in #217
  • Support the concept of a JSON Pointer hyphen constant by @jviotti in #218
  • Use iterators to traverse JSON Pointers by @jviotti in #219
  • Declare JSON char and char_traits types by @jviotti in #220
  • Implement a .back() method for JSON Pointer by @jviotti in #221
  • Support setting to the hyphen JSON Pointer token in arrays by @jviotti in #222
  • Add support for stringifying JSON Pointers by @jviotti in #223
  • Correctly stringify control characters in JSON by @jviotti in #224
  • Fix JSON Pointer stringify Doxygen group by @jviotti in #225
  • No Emscripten on default Make builds by @jviotti in #226
  • Rename parse to parse_json by @jviotti in #227
  • Implement emplace_back for pointers by @jviotti in #229
  • Do not include generated export file on Unikraft by @jviotti in #230
  • Support C++17 in the JSON component by @jviotti in #231
  • Add basic Unikraft support by @jviotti in #232
  • Properly support C++20 in Unikraft by @jviotti in #234
  • Allow object properties to be queries using integer indexes by @jviotti in #235
  • Simplify syntax for accessing JSON Pointer iterators by @jviotti in #237
  • Test pointers that traverse objects using integer indexes by @jviotti in #236
  • Avoid exporting templated classes by @jviotti in #238
  • Make Doxygen optional by @jviotti in #240
  • Fix MSVC out of range debug warning when parsing unicode symbols by @jviotti in #239
  • Match CMAKE_BUILD_TYPE on packaging tests by @jviotti in #241
  • Upgrade Noa to get Windows library/runtime directory fixes by @jviotti in #242
  • Test generation of shared libraries on Windows by @jviotti in #163
  • Fix Traits::eof() on JSON parser in older GCC versions by @jviotti in #243
  • Rename parse_json to parse by @jviotti in #244
  • Don't test emscripten support in this project by @jviotti in #245
  • Rename JSON parser test file to just "parse" by @jviotti in #247
  • Implement a to_stringstream() method by @jviotti in #248
  • Implement a PointerParseError class by @jviotti in #246
  • Make JSON Pointer grammar header private by @jviotti in #249
  • Add JSON Pointer parsing support by @jviotti in #228
  • Refactor and simplify schema resolver functionality by @jviotti in #250
  • Add Draft7 metaschemas by @jviotti in #251
  • Include main JSON Schema metaschemas from all drafts by @jviotti in #252
  • Add all missing meta-schemas to default resolver by @jviotti in #253
  • Make schema resolver take a string view as identifier by @jviotti in #254
  • Remove jsonschema_default_walker.h header by @jviotti in #255
  • Simplify SchemaWalker class by @jviotti in #256
  • Completely redo the schema walker interface by @jviotti in #257
  • Test presence of all official metaschemas in default resolver by @jviotti in #258
  • Rename draft() to dialect() by @jviotti in #259
  • Simplify official schema resolver by @jviotti in #260
  • Use string views in SchemaWalker by @jviotti in #261
  • Fix 2019-09 "links" metaschema in default resolver by @jviotti in #263
  • Rename dialect to "base_dialect" by @jviotti in #262
  • Rename metaschema() to dialect() by @jviotti in #264
  • Rename mentions of default metaschema to default dialect by @jviotti in #265
  • Revise dialect() function to support all versions of JSON Schema by @jviotti in #266
  • Rename ResolutionError to SchemaResolutionError by @jviotti in #267
  • Split base dialect tests by dialect by @jviotti in #269
  • Revisit official resolver tests by @jviotti in #270
  • Split dialect tests by dialect by @jviotti in #271
  • Set an explicit parallel build limit by @jviotti in #272
  • Re-implement the vocabularies() function by @jviotti in #268
  • Extract metaschemas file read into a separate file by @jviotti in #273
  • Inline schema_walker_none by @jviotti in #275
  • Rename default_resolver.cc to official_resolver.cc by @jviotti in #274
  • Use C++20 map contains in default walker by @jviotti in #276
  • Separately and properly test schema_walker_none by @jviotti in #277
  • Revise the default walker tests by @jviotti in #278
  • Revisit default walker 2020-12 tests by @jviotti in #279
  • Support 2019-09 in the default walker by @jviotti in #280
  • Add Draft7 support to the default walker by @jviotti in #281
  • Refactor the definition of the default walker by @jviotti in #282
  • Don't run every GoogleTest case as a separate process by @jviotti in #283
  • Add Draft6 support to the default walker by @jviotti in #284
  • Add Draft4 support to the default walker by @jviotti in #285
  • Add Draft3 support to default walker by @jviotti in #286
  • Add Draft2 support to the default walker by @jviotti in #287
  • Add Draft1 support to the default walker by @jviotti in #288
  • Add Draft0 support to the default walker by @jviotti in #289
  • Add hyper-schema walker support to 2019-09 and 2020-12 by @jviotti in #290
  • Test hyperschema support for Draft0 in default walker by @jviotti in #291
  • Test hyperschema support for Draft1 in default walker by @jviotti in #292
  • Add hyperschema support for Draft2 in default walker by @jviotti in #293
  • Add hyperschema support for Draft3 and Draft4 in default walker by @jviotti in #294
  • Add hyperschema support to default walker for Draft6 and Draft7 by @jviotti in #295
  • Make id() taker a resolver and a default dialect by @jviotti in #297
  • Return a string_view when fetching the id of a SchemaResolutionError by @jviotti in #296
  • Properly implement the id based on dialects by @jviotti in #298
  • Properly test id() across dialects by @jviotti in #299
  • Remove unused VCPKG integration file by @jviotti in #301
  • Implement a basic URI class based on uriparser by @jviotti in #300
  • Document the new URI module by @jviotti in #302
  • Implement a fragment method on the URI class by @jviotti in #303
  • Implement URI escaping/unescaping by @jviotti in #304
  • Add TODO for constructing URIs using input streams by @jviotti in #305
  • Implement JSON Pointer equality support by @jviotti in #307
  • Include JSON Pointer before JSON Schema by @jviotti in #308
  • Report back only JSON Pointers when walking schemas by @jviotti in #310
  • Take a default value in the dialect() function by @jviotti in #311
  • Add basic copy/move semantics to URI by @jviotti in #312
  • Add a pop_back() method to Pointer by @jviotti in #313
  • Overload the < operator for Pointer by @jviotti in #314
  • Implement an anchors() function similar to id() by @jviotti in #315
  • Make Pointer's pop_back() throw on empty pointers by @jviotti in #316
  • Implement a from_fragment URI static factory method by @jviotti in #317
  • Support JSON Pointer and URI on Unikraft by @jviotti in #319
  • Document how to use JSON Toolkit with Unikraft by @jviotti in #320
  • Extract official_resolver interpolation to a separate script by @jviotti in #321
  • Setup a Unikraft project for running JSON Toolkit tests by @jviotti in #322
  • Support JSON Schema on Unikraft by @jviotti in #323
  • Implement a subpointer walker by @jviotti in #324
  • Fix Draft0, Draft1, and Draft2 hyper schema walkers by @jviotti in #325
  • Implement JSON Schema framing by @jviotti in #306
  • Support JSON Schema framing when mixing dialects by @jviotti in #326
  • Revise frame() to ignore dynamic anchors for now by @jviotti in #327
  • Use -latest runners on GitHub Actions by @jviotti in #329
  • Report dialect URI on frame() by @jviotti in #328
  • Store the top-level schema id on frame() entries by @jviotti in #330
  • Fix documentation example for frame() by @jviotti in #331
  • Ensure uriparser doesn't affect BUILD_SHARED_LIBS by @jviotti in #332
  • Attempt to workaround Clang Ubuntu issues on GitHub Actions by @jviotti in #338
  • Fix JSON Pointer include guards by @jviotti in #335
  • Fix README link by @jviotti in #337
  • Run Unikraft build GitHub Actions by @jviotti in #318
  • Run Unikraft build using QEMU on CI by @jviotti in #340
  • Don't run kraft fetch on the Makefile for local development by @jviotti in #341
  • Build packaging example with C++20 by @jviotti in #345
  • Fix ctest comment on GitHub Actions by @jviotti in #344
  • Add Doxygen to the Brewfile by @jviotti in #343
  • Run Unikraft on GitHub Actions by disabling acceleration by @jviotti in #342
  • Use Doxygen integration from Noa by @jviotti in #346
  • Run apt-get update on GitHub Actions by @jviotti in #347
  • Extend Config.uk to list all requirements by @jviotti in #348
  • Run apt-get update on Unikraft pipelines by @jviotti in #350
  • Add a Patron license by @jviotti in #349
  • Test that backspace is not whitespace according to JSON by @jviotti in #351
  • Extend the URI class to get the scheme by @jviotti in #352
  • Extend the URI class to get port numbers by @jviotti in #353
  • Implement a convenience function to parse JSON from a file by @jviotti in #355
  • Gracefully take boolean schemas in anchors() by @jviotti in #356
  • Use noa_library to define libraries by @jviotti in #357
  • Let the id() function take a default id by @jviotti in #359
  • Accept an optional default id in frame() by @jviotti in #358
  • Optionally take read/write line/column on JSON parsing by @jviotti in #360
  • Include JSON Pointer in CMake config much earlier on by @jviotti in #361
  • Implement JSONL parsing support by @jviotti in #334
  • Vendor the 2020-12 tests of the JSON Schema Referencing Suite by @jviotti in #362
  • Test parsing a URI that consists of an invalid fragment by @jviotti in #364
  • Run test workflow once every working day by @jviotti in #363
  • Implement a method to get a URI path by @jviotti in #366
  • Add a method to check whether a URI is a URN by @jviotti in #367
  • Test current URI methods against URNs by @jviotti in #365
  • Test URNs that contain fragments by @jviotti in #368
  • Add tests exercising URIs with empty fragments by @jviotti in #369
  • Add test exercising URI recomposing with trailing slash path by @jviotti in #370
  • Simplify id() ternary logic in frame() by @jviotti in #373
  • Turn ReferenceFrame into a proper class by @jviotti in #372
  • Fix frame() Doxygen example by @jviotti in #375
  • Exercise frame() when passing an explicit equal default id by @jviotti in #377
  • Add a constant that represents the empty pointer by @jviotti in #374
  • Extend .frame() to work on multiple URI bases by @jviotti in #376
  • Clarify that in frame(), found identifiers only may be relative by @jviotti in #378
  • Handle framing with explicit different IDs by @jviotti in #371
  • Clarify that URI::recompose doesn't really normalize by @jviotti in #379
  • Implement a basic method to get the query part of a URI by @jviotti in #380
  • Implement a simple URI canonicalize method by @jviotti in #381
  • Implement support for tag URIs by @jviotti in #382
  • Canonicalize when storing URIs to reference frames by @jviotti in #383
  • Add basic URI iterator support to ReferenceFrame by @jviotti in #384
  • Rename JSON Pointer walker files to "subpointer walker" by @jviotti in #385
  • Implement a general-purpose JSON walker with JSON Pointer by @jviotti in #386
  • Add missing URI tests to Unikraft test runner app by @jviotti in #387
  • Implement JSON Pointer relative resolution by @jviotti in #388
  • Perform URI canonicalization on ReferenceFrame::defines by @jviotti in #390
  • Refactor frame() find bases internal function by @jviotti in #391
  • Add an assertion to confirm there is one base dialect only in frame() by @jviotti in #392
  • Implement a convenient function to convert a Pointer to a string by @jviotti in #393
  • Introduce an EXPECT_FRAME test macro by @jviotti in #394
  • Extend frame() to consider every JSON Pointer to the schema by @jviotti in #389
  • Upgrade the JSON Schema Referencing Suite to latest by @jviotti in #395
  • Rename base() to root() in ReferenceFrame by @jviotti in #396
  • Add a base to every ReferenceFrame entry by @jviotti in #397
  • Implement a function to convert a JSON Pointer to a URI fragment by @jviotti in #398
  • Add URI canonicalize examples around URI escaping by @jviotti in #399
  • Integrate with the JSON Schema referencing suite by @jviotti in #354
  • Run the JSON Schema Referencing Suite for 2019-09 by @jviotti in #400
  • Run the JSON Schema Referencing Suite for Draft7 by @jviotti in #401
  • Run the JSON Schema Referencing Suite for Draft6 by @jviotti in #402
  • Run the JSON Schema Referencing Suite on Draft 4 by @jviotti in #403
  • Run most of the JSON Schema Referencing Suite on Draft 3 by @jviotti in #404
  • Enable every test from the JSON Schema Referencing Suite by @jviotti in #405
  • Add a method to concatenate two JSON Pointers by @jviotti in #407
  • Implement schema transformation functionality by @jviotti in #406
  • Make schema transformation rules report the values they modified by @jviotti in #408
  • Fix rule/bundle examples by @jviotti in #409
  • Revert schema transform rules returning set of pointers by @jviotti in #410
  • Introduce a schema transformer proxy for transform rules by @jviotti in #411
  • Add method to check whether a Pointer starts with another Pointer by @jviotti in #412
  • Implement JSON Pointer rebasing by @jviotti in #413
  • Test URI resolution with fragments by @jviotti in #414
  • Let JSON Pointer instances be constructed from standard C++ strings by @jviotti in #415
  • Support framing references in anonymous schemas by @jviotti in #416
  • Add TODO about anchors and anonymous frames by @jviotti in #417
  • Implement an example "frame" JSON Schema CLI tool by @jviotti in #418
  • Cleanup Frame CLI output by @jviotti in #419
  • Add CMake option to control component installation by @jviotti in #420
  • Extend framing to support pointers without a base by @jviotti in #421
  • Support framing pointers to $anchor in anonymous schemas by @jviotti in #423
  • Frame static anchors on anonymous schemas by @jviotti in #424
  • Extend .frame() to receive ReferenceMap argument by @jviotti in #425
  • Revise .frame() reference map basic tests by @jviotti in #426
  • Remove incorrect TODOs by @jviotti in #427
  • Extend framing to resolve static references by @jviotti in #422
  • Print references in frame CLI tool by @jviotti in #428
  • Document frame references by @jviotti in #429
  • Register top-level static anchors without identifiers by @jviotti in #431
  • Extend framing to record dynamic anchors by @jviotti in #430
  • Dereference after framing by @jviotti in #432
  • Extract ReferenceFrame into a separate unit by @jviotti in #433
  • Remove invalid TODO in frame() by @jviotti in #434
  • Revert changes that frame dynamic anchors by @jviotti in #435
  • Don't record plain reference frames on schemas with ids by @jviotti in #436
  • Explicitly include CompilerOptions by @jviotti in #437
  • Upgrade Noa to 0862a96772362a6997ce2f5fda877b182a7b6f71 by @jviotti in #438
  • Simplify ReferenceMap to only consider static references by @jviotti in #439
  • Avoid passing a separate ReferenceFrame for dynamic frames by @jviotti in #440
  • Add a ReferenceType qualifier to ReferenceMap by @jviotti in #441
  • Implement $dynamicRef support in frame() by @jviotti in #442
  • Implement a method to recompose a URI without its fragment by @jviotti in #443
  • Make recompose_without_fragment() return an optional value by @jviotti in #445
  • Add TODOs to URI about the benefits of supporting mutations by @jviotti in #446
  • Add TODO for checking that static references exists in frames by @jviotti in #447
  • Extend ReferenceMap to split URI by its potential fragment by @jviotti in #444
  • Extract ReferenceType to its own header by @jviotti in #448
  • Simplify TO_POINTER macro in JSON Schema test utils by @jviotti in #450
  • Revise GitHub Actions Linux Clang CI workaround by @jviotti in #452
  • Check for 2020-12 Core vocabulary before framing $dynamicRef by @jviotti in #453
  • Store the reference type in ReferenceFrame by @jviotti in #449
  • Do not frame relative anchor URIs for schemas with identifiers by @jviotti in #455
  • Update frame() description docs by @jviotti in #456
  • Set ReferenceType as part of the ReferenceFrame key by @jviotti in #457
  • Correctly detect anchors that are both static and dynamic by @jviotti in #458
  • Add an overload for anchors() that directly take vocabularies by @jviotti in #459
  • Frame $dynamicAnchor for 2020-12 by @jviotti in #454
  • Implement a convenience base dialect shortcut for id() by @jviotti in #460
  • Add comment about extending SchemaIterator to return more information by @jviotti in #461
  • Add a helper for checking if $ref overrides adjacent keywords by @jviotti in #462
  • Upgrade KraftKit to v0.7.2 by @jviotti in #463
  • Optimize base_dialect() to require less JSON parsing by @jviotti in #465
  • Add performance-friendly vocabularies() overloads by @jviotti in #466
  • Optimize vocabularies() for 2020-12 and 2019-09 by @jviotti in #467
  • Extract URI parser into a separate function by @jviotti in #468
  • Perform URI canonicalization in-place by @jviotti in #469
  • Simplify ReferenceFrame::defines to not canonicalize by @jviotti in #472
  • Get rid of ReferenceFrame wrapper class in favor of an alias by @jviotti in #471
  • Simplify the ReferenceMap helper type by @jviotti in #473
  • Turn URI::resolve_from into a method that mutates the instance by @jviotti in #470
  • Upgrade Vendorpull by @jviotti in #474
  • Upgrade Noa to latest by @jviotti in #475
  • Add a default Vendorpull mask by @jviotti in #476
  • Perform a single pass over subschemas in frame() by @jviotti in #477
  • Test framing remote references by @jviotti in #479
  • Extend SchemaIterator to pass metadata about each schema by @jviotti in #478
  • Implement an assign_if_missing JSON helper method by @jviotti in #481
  • Implement JSON Schema bundling by @jviotti in #480
  • Extend SchemaTransformer to support the JSON BinPack Mapper by @jviotti in #482
  • Generalize transformer .at() into a schema getter by @jviotti in #484
  • Improve docs on how to define schema transformation methods by @jviotti in #485
  • Generalize transformer into_object() as replace() by @jviotti in #486
  • Generalize transformer .replace() to take pointers by @jviotti in #487
  • Generalize transformer .assign() to take base pointers by @jviotti in #488
  • Generalize transformer erase to take a pointer path by @jviotti in #489
  • Fix JSON erase iterator docs by @jviotti in #490
  • Implement erase_keys at SchemaTransformer by @jviotti in #491
  • Revise transformer erase_keys to take iterators by @jviotti in #492
  • De-duplicate noa_sanitizer commands by @jviotti in #493
  • Generate CMake config even on non-top level builds by @jviotti in #494
  • Support component-based find_package by @jviotti in #495
  • Get rid of Cirrus CI by @jviotti in #496
  • Guard package find scripts by @jviotti in #497
  • Fix GCC taking initializer_list precedence over copy-constructor by @jviotti in #498
  • Upgrade Noa to latest by @jviotti in #499
  • Simplify test Kraftfile by @jviotti in #500
  • Upgrade Noa to the latest version by @jviotti in #502
  • Implement a JSON method to estimate memory usage by @jviotti in #501

Full Changelog: https://github.com/sourcemeta/jsontoolkit/commits/v1.0.0