* Tue Apr 10 2018 mardnh@gmx.de
- Update to version 3.1.2
Bug Fixes
* Fixed a memory leak occurring in the parser callback (#1001).
* Different specializations of basic_json (e.g., using different template
arguments for strings or objects) can now be used in assignments (#972, #
977, #986).
* Fixed a logical error in an iterator range check (#992).
Improvements
* The parser and the serialization now support user-defined string types (#
1006, #1009).
Further Changes
* Clang Analyzer is now used as additional static analyzer; see make
clang_analyze.
* Overworked README by adding links to the documentation (#981).
Deprecated functions
This release does not deprecate any functions. As an overview, the following
functions have been deprecated in earlier versions and will be removed in the
next major version (i.e., 4.0.0):
* Function iterator_wrapper are deprecated. Please use the member function
items() instead.
* Functions friend std::istream& operator<<(basic_json&, std::istream&) and
friend std::ostream& operator>>(const basic_json&, std::ostream&) are
deprecated. Please use friend std::istream& operator>>(std::istream&,
basic_json&) and friend operator<<(std::ostream&, const basic_json&)
instead.
- Update to version 3.1.1
Bug Fixes
* Fixed parsing of CBOR strings with indefinite length (#961). Earlier
versions of this library misinterpreted the CBOR standard and rejected
input with the 0x7F start byte.
* Fixed user-defined conversion to vector type (#924, #969). A wrong SFINAE
check rejected code though a user-defined conversion was provided.
* Fixed documentation of the parser behavior for objects with duplicate keys
(#963). The exact behavior is not specified by RFC 8259 and the library now
also provides no guarantee which object key is stored.
* Added check to detect memory overflow when parsing UBJSON containers (#962
). The optimized UBJSON format allowed for specifying an array with
billions of null elements with a few bytes and the library did not check
whether this size exceeded max_size().
Further Changes
* Code coverage is now calculated for the individual header files, allowing
to find uncovered lines more quickly than by browsing through the single
header version (#953, #957).
* A Makefile target run_benchmarks was added to quickly build and run the
benchmark suite.
* The documentation was harmonized with respect to the header inclusion (#955
). Now all examples and the README use #include <nlohmann/json.hpp> to
allow for selecting single_include or include or whatever installation
folder as include directory.
* Added note on how to use the library with the cget package manager (#954).
Deprecated functions
This release does not deprecate any functions. As an overview, the following
functions have been deprecated in earlier versions and will be removed in the
next major version (i.e., 4.0.0):
* Function iterator_wrapper are deprecated. Please use the member function
items() instead.
* Functions friend std::istream& operator<<(basic_json&, std::istream&) and
friend std::ostream& operator>>(const basic_json&, std::ostream&) are
deprecated. Please use friend std::istream& operator>>(std::istream&,
basic_json&) and friend operator<<(std::ostream&, const basic_json&)
instead.
- Update to version 3.1.0
Summary
This release adds support for the UBJSON format and JSON Merge Patch. It also
contains some minor changes and bug fixes. All changes are backward-compatible.
New features
* The library now supports UBJSON (Universal Binary JSON Specification) as
binary format to read and write JSON values space-efficiently. See the
documentation overview for a comparison of the different formats CBOR,
MessagePack, and UBJSON.
* JSON Merge Patch (RFC 7386) offers an intuitive means to describe patches
between JSON values (#876, #877). See the documentation of merge_patch for
more information.
Improvements
* The library now uses the Grisu2 algorithm for printing floating-point
numbers (based on the reference implementation by Florian Loitsch) which
produces a short representation which is guaranteed to round-trip (#360, #
935, #936).
* The UTF-8 handling was further simplified by using the decoder of Björn
Hoehrmann in more scenarios.
Reorganization
* Though the library is released as a single header, its development got more
and more complicated. With this release, the header is split into several
files and the single-header file json.hpp can be generated from these
development sources. In the repository, folder include contains the
development sources and single_include contains the single json.hpp header
(#700, #906, #907, #910, #911, #915, #920, #924, #925, #928, #944).
* The split further allowed for a forward declaration header include/nlohmann
/json_fwd.hpp to speed up compilation times (#314).
Further changes
* Google Benchmark is now used for micro benchmarks (see benchmarks folder, #
921).
* The serialization (JSON and binary formats) now properly work with the
libraries string template parameter, allowing for optimized string
implementations to be used in constraint environments such as embedded
software (#941, #950).
* The exceptional behavior can now be overridden by defining macros
JSON_THROW_USER, JSON_TRY_USER, and JSON_CATCH_USER, defining the behavior
of throw, try and catch, respectively. This allows to switch off C++'s
exception mechanism yet still execute user-defined code in case an error
condition occurs (#938).
* To facilitate the interplay with flex and Bison, the library does not use
the variable name yytext any more as it could clash with macro definitions
(#933).
* The library now defines NLOHMANN_JSON_VERSION_MAJOR,
NLOHMANN_JSON_VERSION_MINOR, and NLOHMANN_JSON_VERSION_PATCH to allow for
conditional compilation based on the included library version (#943, #948).
* A compilation error with ICC has been fixed (#947).
* Typos and links in the documentation have been fixed (#900, #930).
* A compiler error related to incomplete types has been fixed (#919).
* The tests form the UTF-8 decoder stress test have been added to the test
suite.
Deprecated functions
* Function iterator_wrapper has been deprecated (#874). Since its
introduction, the name was up for discussion, as it was too technical. We
now introduced the member function items() with the same semantics.
iterator_wrapper will be removed in the next major version (i.e., 4.0.0).
Furthermore, the following functions are deprecated since version 3.0.0 and
will be removed in the next major version (i.e., 4.0.0):
* friend std::istream& operator<<(basic_json&, std::istream&)
* friend std::ostream& operator>>(const basic_json&, std::ostream&)
Please use friend std::istream& operator>>(std::istream&, basic_json&) and
friend operator<<(std::ostream&, const basic_json&) instead.
- Rebase patch:
* nlohmann_json-cmake-lib_suffix.patch