Skip to content

Releases: danielaparker/jsoncons

Release 1.0.0

31 Dec 17:00
Compare
Choose a tag to compare
  • API Changes

    • Non-const basic_json::operator[const string_view_type& key] no longer
      returns a proxy type. The rationale for this change is given in Git Issue
      #315. The new behavior for the non-const overload of operator[](const string_view_type& key) is to return a reference to the value that is
      associated with key, inserting a default constructed value with the key
      if no such key already exists, which is consistent with the standard
      library std::map behavior. The new behavior for the const overload of
      operator[](const string_view_type& key) is to return a const reference
      to the value that is associated with key, returning a const reference to
      a default constructed value with static storage duration if no such key
      already exists.

    • Until 1.0.0, a buffer of text is supplied to basic_json_parser with a
      call to update() followed by a call to parse_some(). Once the parser
      reaches the end of the buffer, additional JSON text can be supplied to the
      parser with another call to update(), followed by another call to
      parse_some(). See Incremental parsing (until
      1.0.0)
      .
      Since 0.179, an initial buffer of text is supplied to the parse with a
      call to set_buffer, and parsing commences with a call to parse_some.
      The parser can be constructed with a user provided chunk reader to obtain
      additional JSON text as needed. See Incremental parsing (since
      1.0.0)
      .

    • enum bigint_chars_format is deprecated and replaced by
      bignum_format_kind. Added bignum_format getter and setter functions
      to basic_json_options, and deprecated bigint_format getter and setter
      functions. Changed default bignum_format from
      bigint_chars_format::base10 to bignum_format_kind::raw. Rationale:
      bigint_chars_format was misnamed, as it applied to bigdec as well as
      bigint numbers, and defaulting to bigint_chars_format::base10 produced
      surprising results for users of our lossless number option.

    • The URI argument passed to the jsonschema ResolveURI function object now
      included the fragment part of the URI.

  • Fixed bugs:

    • Git Issue #554: [jsonpath] evaluation throws on json containing json_const_pointer

    • Git PR #560: [jmespath] When there are elements and the sum is indeed zero, avg function should return average value returned instead of a null value.

    • Git Issue #561: json_string_reader does not work correctly for empty string or string with all blanks

    • Git Issue #564: Fixed basic_json compare of double and non-numeric string

    • Git Issue #570: Fixed writing fixed number of map value/value pairs using cbor_encoder and msgpack_encoder

    • Fixed a number of issues in uri::resolve, used in jsonschema, related to abnormal references,
      particulay ones containing dots in path segments.

  • Removed deprecated classes and functions:

    • The jsonschema function make_schema, classes json_validator and validation_output,
      header file json_validator.hpp and example legacy_jsonschema_examples.cpp,
      deprecated in 0.174.0, have been removed.
  • Enhancements:

    • Added stream output operator (<<) to uri class.

    • Added basic_json(json_pointer_arg_t, basic_json* j) constructor to
      allow a basic_json value to contain a non-owning view of another basic_json
      value.

    • Added constant null_arg so that a null json value can be
      constructed with

        json j{jsoncons::null_arg};
    
    • Custom jmespath functions are now supported thanks to PR #560

    • jsonschema now understands the 'uri' and 'uri-reference' formats

Release 0.178.0

31 Oct 13:22
Compare
Choose a tag to compare

Defect fixes:

  • Fixed issue with jmespath::join function through PR #546

  • Fixed issue with the path for cmake config files through PR #547

  • Related to #539, made the basic_json constructor basic_json(const Allocator&)
    consistent with basic_json(json_object_arg_t, const Allocator& alloc = Allocator()).

  • Related to #539, basic_json copy construction now applies allocator traits select_on_container_copy_construction
    to the allocator obtained from other. For pmr allocators, this gives a default constructed pmr allocator rather
    than a copy of the allocator in other.

Enhancements:

  • Improved the implementation of basic_json swap. Previously in some cases it would allocate.

  • Improved the implementation of basic_json copy assignment. Reduced allocations when assigning from array to array and object to
    object.

  • Documented the rules for basic_json allocators here,
    and added numerous tests for conformance to the rules.

  • Added missing basic_json constructor

basic_json(json_array_arg_t, 
    std::size_t count, const basic_json& value, semantic_tag tag = semantic_tag::none, 
    const Allocator& alloc = Allocator());   

Release 0.177.0

16 Aug 15:38
Compare
Choose a tag to compare

Changes

  • Removed deprecated functions and type names identified in #487

  • Reduced the size of some initial json_parser allocations to help with #531

Defect fixes

  • Fixed #528

  • Fixed #530 by making jmespath_expression::evaluate const

  • Fixed #488 related to some standard libraries that don't support strings with stateful allocators.

  • Fixed issue identified in PR #532 with basic_json::compare function

Release 0.176.0

10 Jun 18:44
Compare
Choose a tag to compare

Compiler support

  • Update to Supported compilers
    documentation to reflect the compilers that are currently in continuous integration testing.

  • Support for some ancient compilers, in particular g++ 4.8 and 4.9, has been dropped.

  • Accepted pr #519 to support build with with llvm-toolset-7 on CentOS 7.

  • We (and users) have seen some compilation errors with tests of std::scoped_allocator_adaptor using our sample stateful allocator FreeListAllocator
    in versions of clang predating version 11, and versions of g++ predating version 10. We've therefore excluded these tests when testing with
    the older compilers.

Enhancements

  • basic_json now supports using C++ 17 structured binding, so you can write
for (const auto& [key, value] : j.object_range())
{
    std::cout << key << " => " << value << std::endl;
}
  • Addressed issue #509 of over allocating memory due to alignment constraints through pr #510

jsonschema extension defect fixes:

  • Fixed issue #520 where enabling format validation resulted in a premature abort to validation

  • Addressed issue #521 so that jsonschema now supports big integers

Other defect fixes:

  • Resolved #518 about CUDA and int128 and float 128

Release 0.175.0

02 May 19:21
Compare
Choose a tag to compare

This release contains two breaking changes to recently added
features.

Change to jsonpath::get function

  • The return value for jsonpath::get has been changed from a
    pointer to the selected JSON value, or null if not found, to a
    std::pair<Json*,bool>, where the bool component indicates
    whether the get operation succeeded.

Change to new jsonschema classes and functions introduced in 0.174.0:

  • The overload of json_schema<Json>::validate that takes a callback
    must now be passed a lambda that returns walk_result::advance or
    walk_result::abort. This supports early exit from validation.

Note that this change does not affect the legacy pre-0.174.0 jsonschema
classes and functions (make_schema, json_validator).

Enhancement to jsonschema library:

  • New json_schema member function walk for walking through the schema.

Release 0.174.0

22 Apr 14:59
Compare
Choose a tag to compare

Defect fixes:

  • Fixed issue #499 with nan_to_str, inf_to_str and neginf_to_str

Core library enhancements

  • New json_options line_splits option that addresses issue #490

jsonpath library enhancements

  • New function jsonpath::replace analagous to jsonpointer::replace,
    but for normalized paths.

jsonschema library enhancements

  • The jsonschema extension now supports Drafts 4, 6, 2019-09 and 2020-12
    in addition to Draft 07.

    • New function make_json_schema that returns a representation of
      a compiled JSON Schema document.

    • New class validation_message

    • The legacy function make_schema and classes json_validator and
      validation_output remain for backward compatibility, but have been
      deprecated.

Release 0.173.4

04 Feb 23:08
Compare
Choose a tag to compare

Defect fixes

  • Fixed issue #485 where basic_json member names did not use polymorphic_allocator

  • Addressed issue #482 by replacing static_assert with runtime exception

Release 0.173.3

31 Jan 23:02
Compare
Choose a tag to compare

Defect fixes:

Release 0.173.2

20 Dec 18:52
Compare
Choose a tag to compare
  • Removed use of deduced return types in jsonpath extension (C++ 14 feature)

Release 173.1

19 Dec 03:26
Compare
Choose a tag to compare
  • Fixed issue #473 about bigint and -Werror=stringop-overflow