Improve documentation: byte layouts, release pages, See also, dark-mode images (#5906)
- Make the iterator range illustrations legible in dark mode (prefers-color-scheme rules inside the SVGs). - Add a "Byte layout" section with a color-coded byte table to each binary format page (BJData, BON8, BSON, CBOR, MessagePack, UBJSON), and highlight the smallest size per file in the comparison table. - Add "See also" sections to the overview pages that lacked one. - Split the release notes into one page per release, grouped by minor version on the overview page, with an "API changes" section per release generated from the API pages' version histories (hooks/api_changes.py). - Fact-check the release notes and version histories against the release tags and correct wrong or misleading entries (e.g., json_serializer 2.1.0, merge_patch 3.1.0, items, count, operator[], to_bjdata, std::string_view key support). Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
1 parent
01139dc192
commit
52b72b5684
115 files changed
+1462
-546
No files matched your search
@@ -1,453 +0,0 @@
|
||||
# Releases
|
||||
|
||||
This page summarizes the notable changes of every release and links to the relevant documentation.
|
||||
The **complete release notes** — including all changes, the download files, and their checksums — are
|
||||
published on the [GitHub releases page](https://github.com/nlohmann/json/releases).
|
||||
|
||||
!!! info "Unreleased changes"
|
||||
|
||||
This documentation is built from the `develop` branch and may describe changes that are not part of a release
|
||||
yet. Their version numbers are followed by an <span class="unreleased-version">unreleased</span> badge.
|
||||
|
||||
## Unreleased
|
||||
|
||||
- Converting an rvalue container to JSON (`json j = std::move(vec);`, `json j = std::map<std::string, std::string>{...};`)
|
||||
now **moves** the elements instead of copying them (e.g., `std::vector<std::string>` with 100,000 strings: 4.7 ms to
|
||||
2.3 ms). Two consequences: the source container is left in a valid but unspecified (moved-from) state, and if an
|
||||
exception is thrown during the conversion, the source may be partially moved-from, so the strong exception guarantee
|
||||
no longer holds for the source of an rvalue conversion (the JSON value itself is unaffected). Lvalues and `const`
|
||||
objects are still copied. See [`basic_json`](../api/basic_json/basic_json.md).
|
||||
|
||||
## v3.12.0 (2025-04-11)
|
||||
|
||||
Fixes bugs found in 3.11.3 and adds several features. All changes are backward-compatible.
|
||||
|
||||
- Adds diagnostic byte positions via [`JSON_DIAGNOSTIC_POSITIONS`](../api/macros/json_diagnostic_positions.md),
|
||||
exposed through the new [`start_pos`](../api/basic_json/start_pos.md) and
|
||||
[`end_pos`](../api/basic_json/end_pos.md) member functions.
|
||||
- Makes the [conversion macros](../features/arbitrary_types.md#simplify-your-life-with-macros)
|
||||
templated (so they also work with [`ordered_json`](../api/ordered_json.md)) and adds
|
||||
[`NLOHMANN_DEFINE_DERIVED_TYPE`](../api/macros/nlohmann_define_derived_type.md) for derived classes.
|
||||
- Adds `std::optional` support (C++17) and lets [`patch`](../api/basic_json/patch.md),
|
||||
[`diff`](../api/basic_json/diff.md), and [`flatten`](../api/basic_json/flatten.md) work with
|
||||
arbitrary string types.
|
||||
- Extends the [binary formats](../features/binary_formats/index.md):
|
||||
[BJData](../features/binary_formats/bjdata.md) draft 3 and unsigned 64-bit integers for
|
||||
[BSON](../features/binary_formats/bson.md).
|
||||
- Adds multidimensional C-array conversion and UTF-8 encoded `std::filesystem::path` conversions, and
|
||||
raises the minimum [CMake](../integration/cmake.md) version to 3.5 and supports CMake 4.0.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.12.0).
|
||||
|
||||
## v3.11.3 (2023-11-28)
|
||||
|
||||
Adds features and fixes bugs found in 3.11.2. All changes are backward-compatible.
|
||||
|
||||
- Adds a [custom base class](../api/basic_json/json_base_class_t.md) as a node customization point.
|
||||
- Adds serialization-only [conversion macros](../features/macros.md)
|
||||
(`NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE` and `NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE`)
|
||||
and a clearer parse error for empty input.
|
||||
- Adds [Bazel](../integration/package_managers.md#bazel) and
|
||||
[Swift Package Manager](../integration/package_managers.md#swift-package-manager) build support.
|
||||
- Fixes custom allocators, a memory leak in [`adl_serializer`](../api/adl_serializer/to_json.md)'s
|
||||
`to_json`, initializer-list construction when `size_type` is not `int`, and many compiler warnings.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.11.3).
|
||||
|
||||
## v3.11.2 (2022-08-12)
|
||||
|
||||
Fixes bugs found in 3.11.1 and restructures the namespace. All changes are backward-compatible.
|
||||
|
||||
- Fixes the [`value`](../api/basic_json/value.md) function (broken for strings, size types, and
|
||||
`nullptr` in 3.11.0) and makes `json_fwd.hpp` self-contained.
|
||||
- Restores using [`json_pointer`](../api/json_pointer/index.md) as a key in associative containers and
|
||||
comparing it with strings.
|
||||
- Restructures the inline [namespace](../features/namespace.md) and allows disabling the version
|
||||
component, and avoids heap allocations in the [BJData](../features/binary_formats/bjdata.md) parser.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.11.2).
|
||||
|
||||
## v3.11.1 (2022-08-01)
|
||||
|
||||
Fixes a regression from 3.11.0. All changes are backward-compatible.
|
||||
|
||||
- Restores the global [user-defined string literals](../api/macros/json_use_global_udls.md)
|
||||
[`operator""_json`](../api/operator_literal_json.md) and
|
||||
[`operator""_json_pointer`](../api/operator_literal_json_pointer.md), which 3.11.0 had moved into a
|
||||
namespace by default.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.11.1).
|
||||
|
||||
## v3.11.0 (2022-08-01)
|
||||
|
||||
One of the largest releases ever. All changes are backward-compatible.
|
||||
|
||||
- Allows `std::string_view` as object keys in [`at`](../api/basic_json/at.md),
|
||||
[`operator[]`](../api/basic_json/operator%5B%5D.md), [`value`](../api/basic_json/value.md),
|
||||
[`erase`](../api/basic_json/erase.md), [`find`](../api/basic_json/find.md),
|
||||
[`contains`](../api/basic_json/contains.md), and [`count`](../api/basic_json/count.md).
|
||||
- Adds the [BJData](../features/binary_formats/bjdata.md) binary format (the fifth supported format).
|
||||
- Improves C++20 support, including [`operator<=>`](../api/basic_json/operator_spaceship.md) and
|
||||
`<ranges>`-compatible iterators.
|
||||
- Adds a versioned, ABI-tagged inline [namespace](../features/namespace.md)
|
||||
([`NLOHMANN_JSON_NAMESPACE`](../api/macros/nlohmann_json_namespace.md)) and the option to move the
|
||||
UDLs out of the global namespace ([`JSON_USE_GLOBAL_UDLS`](../api/macros/json_use_global_udls.md)).
|
||||
- Adds [`patch_inplace`](../api/basic_json/patch_inplace.md), default values for the
|
||||
[conversion macros](../features/arbitrary_types.md#simplify-your-life-with-macros), and an option to
|
||||
disable enum serialization ([`JSON_DISABLE_ENUM_SERIALIZATION`](../api/macros/json_disable_enum_serialization.md)).
|
||||
|
||||
This release introduced a UDL regression that was fixed in
|
||||
[3.11.1](https://github.com/nlohmann/json/releases/tag/v3.11.1).
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.11.0).
|
||||
|
||||
## v3.10.5 (2022-01-03)
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Guards the `std::filesystem` conversions behind compiler-support checks
|
||||
([`JSON_HAS_FILESYSTEM`](../api/macros/json_has_filesystem.md)), which can be set to `0` to disable
|
||||
them altogether.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.5).
|
||||
|
||||
## v3.10.4 (2021-10-16)
|
||||
|
||||
Fixes regressions introduced in 3.10.0. All changes are backward-compatible.
|
||||
|
||||
- Fixes the `std::filesystem::path` conversion (which could trigger a stack overflow and broke
|
||||
compilation on Windows).
|
||||
- Fixes compilation for types with an explicit defaulted constructor and for code relying on the
|
||||
return values of `std::find` and `std::remove`.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.4).
|
||||
|
||||
## v3.10.3 (2021-10-08)
|
||||
|
||||
Fixes more regressions from 3.10.0. All changes are backward-compatible.
|
||||
|
||||
- Fixes [extended-diagnostics](../api/macros/json_diagnostics.md) assertions triggered by
|
||||
[`update`](../api/basic_json/update.md) and by inserting into arrays.
|
||||
- Supports custom allocators when writing binary formats into a `std::vector`, and allows conversion
|
||||
from types that only provide `begin()`/`end()`.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.3).
|
||||
|
||||
## v3.10.2 (2021-08-26)
|
||||
|
||||
Re-release of 3.10.1, whose Git tag pointed at the wrong commit due to a bug in the release script.
|
||||
All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.2).
|
||||
|
||||
## v3.10.1 (2021-08-24)
|
||||
|
||||
Fixes a regression from 3.10.0. All changes are backward-compatible.
|
||||
|
||||
- Fixes an [extended-diagnostics](../api/macros/json_diagnostics.md) assertion triggered when used
|
||||
with [`ordered_json`](../api/ordered_json.md), and hardens the GDB pretty-printer.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.1).
|
||||
|
||||
## v3.10.0 (2021-08-17)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds [extended diagnostic messages](../api/macros/json_diagnostics.md)
|
||||
([`JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md)) that prepend a JSON pointer to exception
|
||||
messages to pinpoint the offending value.
|
||||
- Adds a GDB pretty-printer and a [`cbor_tag_handler_t`](../api/basic_json/cbor_tag_handler_t.md)
|
||||
`store` option to keep CBOR tags as binary subtypes.
|
||||
- Supports containers with non-default-constructible types and parsing from `std::byte`.
|
||||
- Adds [`JSON_NO_IO`](../api/macros/json_no_io.md) to exclude the I/O headers and the
|
||||
[`JSON_HAS_CPP_*`](../api/macros/json_has_cpp_11.md) macros to override the detected C++ standard.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.0).
|
||||
|
||||
## v3.9.1 (2020-08-06)
|
||||
|
||||
Fixes two regressions from 3.9.0. All changes are backward-compatible.
|
||||
|
||||
- Accepts consecutive [comments](../features/comments.md) and completes the
|
||||
[`ordered_json`](../api/ordered_json.md) interface (e.g. `ordered_json::parse`).
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.9.1).
|
||||
|
||||
## v3.9.0 (2020-07-27)
|
||||
|
||||
Feature release adding four long-requested features. All changes are backward-compatible.
|
||||
|
||||
- Optional [comment](../features/comments.md) parsing in [`parse`](../api/basic_json/parse.md) via the
|
||||
`ignore_comments` parameter.
|
||||
- [`ordered_json`](../api/ordered_json.md) to preserve the [insertion order](../features/object_order.md)
|
||||
of object keys.
|
||||
- An option to switch off [implicit conversions](../api/macros/json_use_implicit_conversions.md).
|
||||
- The [`NLOHMANN_DEFINE_TYPE_*`](../features/arbitrary_types.md#simplify-your-life-with-macros)
|
||||
convenience macros, plus high-precision-number support for
|
||||
[UBJSON](../features/binary_formats/ubjson.md) and CBOR tag handling.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.9.0).
|
||||
|
||||
## v3.8.0 (2020-06-14)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Introduces a [binary value](../features/binary_values.md) type that is read from and written to
|
||||
[CBOR](../features/binary_formats/cbor.md), [BSON](../features/binary_formats/bson.md), and
|
||||
[MessagePack](../features/binary_formats/messagepack.md), and can be shared between formats.
|
||||
- Generalizes the input adapters to read from any `LegacyInputIterator` container (3–10 % faster
|
||||
parsing).
|
||||
- Fixes [`contains`](../api/basic_json/contains.md) for JSON pointers and makes the binary
|
||||
[`from_cbor`](../api/basic_json/from_cbor.md)/[`from_msgpack`](../api/basic_json/from_msgpack.md)/etc.
|
||||
functions respect `allow_exceptions`.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.8.0).
|
||||
|
||||
## v3.7.3 (2019-11-17)
|
||||
|
||||
Fixes a regression from 3.7.2 that could yield quadratic complexity in destructor calls. All changes
|
||||
are backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v3.7.3).
|
||||
|
||||
## v3.7.2 (2019-11-10)
|
||||
|
||||
Fixes a stack overflow for deeply nested input by making the destructor iterative; parsing is now
|
||||
bounded only by available memory. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.7.2).
|
||||
|
||||
## v3.7.1 (2019-11-06)
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Fixes a segmentation fault when serializing the `std::int64_t` minimum value and fixes
|
||||
[`contains`](../api/basic_json/contains.md) for JSON pointers.
|
||||
- Allows [`items`](../api/basic_json/items.md) with a custom string type and makes `json_pointer::back`
|
||||
`const`.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.7.1).
|
||||
|
||||
## v3.7.0 (2019-07-28)
|
||||
|
||||
Convenience features and house-keeping. All changes are backward-compatible.
|
||||
|
||||
- Adds a [`contains`](../api/basic_json/contains.md) overload that checks a JSON pointer without
|
||||
throwing, a generic `to_string`, and a return value for
|
||||
[`emplace_back`](../api/basic_json/emplace_back.md).
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.7.0).
|
||||
|
||||
## v3.6.1 (2019-03-20)
|
||||
|
||||
Fixes a regression (GCC 7/8 compilation) and a `<Windows.h>` build error introduced in 3.6.0. All
|
||||
changes are backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v3.6.1).
|
||||
|
||||
## v3.6.0 (2019-03-20)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Reworks the [JSON pointer](../features/json_pointer.md) interface (`operator/`, `push_back`,
|
||||
`parent_pointer`, …).
|
||||
- Adds a [`contains`](../api/basic_json/contains.md) function to test for an object key and greatly
|
||||
improves the performance of integer serialization.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.6.0).
|
||||
|
||||
## v3.5.0 (2018-12-22)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds structured-binding support via the [`items`](../api/basic_json/items.md) function and reading
|
||||
from `FILE*` in the [`parse`](../api/basic_json/parse.md) function.
|
||||
- Fixes the `eofbit` handling on input streams and a bug in the BSON SAX parser.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.5.0).
|
||||
|
||||
## v3.4.0 (2018-10-30)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds [BSON](../features/binary_formats/bson.md) read/write support.
|
||||
- Adds configurable Unicode error handlers to [`dump`](../api/basic_json/dump.md) (throw, replace with
|
||||
U+FFFD, or ignore) and the
|
||||
[`NLOHMANN_JSON_SERIALIZE_ENUM`](../api/macros/nlohmann_json_serialize_enum.md) macro for
|
||||
[enum conversion](../features/enum_conversion.md).
|
||||
- Improves parse-error messages with line/column positions and context.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.4.0).
|
||||
|
||||
## v3.3.0 (2018-10-05)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds GCC 4.8 support, the [`get_to`](../api/basic_json/get_to.md) function, and an overhauled and
|
||||
documented [CMake](../integration/cmake.md) integration.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.3.0).
|
||||
|
||||
## v3.2.0 (2018-08-20)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds a [SAX interface](../features/parsing/sax_interface.md) and a non-recursive parser.
|
||||
- Adds parsing from wide-string types (`std::wstring`, `std::u16string`, `std::u32string`) and
|
||||
`std::string_view` (C++17), and round-tripping of `std::map`/`std::unordered_map` with non-string
|
||||
keys.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.2.0).
|
||||
|
||||
## v3.1.2 (2018-03-14)
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Fixes a memory leak in the parser callback and adds user-defined string-type support to the parser
|
||||
and serializer.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.1.2).
|
||||
|
||||
## v3.1.1 (2018-02-13)
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Fixes parsing of indefinite-length CBOR strings, a user-defined conversion to vector types, and
|
||||
overflow detection for UBJSON containers.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.1.1).
|
||||
|
||||
## v3.1.0 (2018-02-01)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds [UBJSON](../features/binary_formats/ubjson.md) read/write support and
|
||||
[JSON Merge Patch](../features/merge_patch.md) via [`merge_patch`](../api/basic_json/merge_patch.md).
|
||||
- Switches to the Grisu2 algorithm for short, round-trippable floating-point output, and splits the
|
||||
header into [multiple files](../integration/index.md) with a forward-declaration header.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.1.0).
|
||||
|
||||
## v3.0.1 (2017-12-29)
|
||||
|
||||
Fixes small issues in the [JSON Pointer](../features/json_pointer.md) and
|
||||
[JSON Patch](../features/json_patch.md) implementations (invalid "copy" targets and non-integer array
|
||||
indices). All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.0.1).
|
||||
|
||||
## v3.0.0 (2017-12-17)
|
||||
|
||||
First 3.x release — a major release with breaking changes (see the
|
||||
[migration guide](../integration/migration_guide.md)).
|
||||
|
||||
- Introduces user-defined [exceptions](exceptions.md) (`json::exception` and subtypes, each with an
|
||||
identifier).
|
||||
- Adds a non-throwing [`accept`](../api/basic_json/accept.md) function and an `allow_exceptions` flag
|
||||
for [`parse`](../api/basic_json/parse.md), and an [`update`](../api/basic_json/update.md) function to
|
||||
merge objects.
|
||||
- Adds streaming for CBOR and MessagePack and allows storing NaN/infinity.
|
||||
- Non-UTF-8 strings now throw on serialization, and the iterator category changed to bidirectional.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.0.0).
|
||||
|
||||
## v2.1.1 (2017-02-25)
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Makes number parsing and serialization locale-independent with correct floating-point
|
||||
round-tripping; released files are now GPG-signed.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.1.1).
|
||||
|
||||
## v2.1.0 (2017-01-28)
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds conversions from and to [arbitrary user-defined types](../features/arbitrary_types.md) via
|
||||
`to_json`/`from_json`, the [`meta`](../api/basic_json/meta.md) function, and the option to switch off
|
||||
exceptions ([`JSON_NOEXCEPTION`](../api/macros/json_noexception.md)).
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.1.0).
|
||||
|
||||
## v2.0.10 (2017-01-02)
|
||||
|
||||
Fixes several security-relevant bugs in the CBOR and MessagePack parsers found by OSS-Fuzz. All
|
||||
changes are backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.10).
|
||||
|
||||
## v2.0.9 (2016-12-16)
|
||||
|
||||
Adds the [CBOR](../features/binary_formats/cbor.md) and
|
||||
[MessagePack](../features/binary_formats/messagepack.md) binary formats. All changes are
|
||||
backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.9).
|
||||
|
||||
## v2.0.8 (2016-12-02)
|
||||
|
||||
Adds the [`emplace`](../api/basic_json/emplace.md) and
|
||||
[`emplace_back`](../api/basic_json/emplace_back.md) functions and improves parsing and serialization
|
||||
performance. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.8).
|
||||
|
||||
## v2.0.7 (2016-11-02)
|
||||
|
||||
Fixes several parser bugs found through the "Parsing JSON is a Minefield" study (short files, encoding
|
||||
detection, surrogate pairs). All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.7).
|
||||
|
||||
## v2.0.6 (2016-10-15)
|
||||
|
||||
Fixes [`operator[]`](../api/basic_json/operator%5B%5D.md) for [JSON pointers](../features/json_pointer.md)
|
||||
so that it creates missing values like the other overloads. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.6).
|
||||
|
||||
## v2.0.5 (2016-09-14)
|
||||
|
||||
Fixes a remaining stream end-of-file detection bug in the parser. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.5).
|
||||
|
||||
## v2.0.4 (2016-09-11)
|
||||
|
||||
Fixes stream end-of-file detection in the parser. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.4).
|
||||
|
||||
## v2.0.3 (2016-08-31)
|
||||
|
||||
Generalizes the parser to accept any contiguous sequence of one-byte elements and deprecates the
|
||||
input-stream constructor in favor of the [`parse`](../api/basic_json/parse.md) function. All changes
|
||||
are backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.3).
|
||||
|
||||
## v2.0.2 (2016-07-31)
|
||||
|
||||
Overhauls the parser (now rejecting unescaped control characters), tightens the class invariants, and
|
||||
cleans up the code. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.2).
|
||||
|
||||
## v2.0.1 (2016-06-28)
|
||||
|
||||
Fixes a performance regression in the [`dump`](../api/basic_json/dump.md) function by adjusting the
|
||||
stream locale once per serialization. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.1).
|
||||
|
||||
## v2.0.0 (2016-06-24)
|
||||
|
||||
Feature release with a minor (potentially non-backward-compatible) API change from added `noexcept`
|
||||
and `constexpr` specifiers.
|
||||
|
||||
- Adds [JSON Pointer](../features/json_pointer.md) support in [`at`](../api/basic_json/at.md) and
|
||||
[`operator[]`](../api/basic_json/operator%5B%5D.md), plus [`flatten`](../api/basic_json/flatten.md)
|
||||
and [`unflatten`](../api/basic_json/unflatten.md).
|
||||
- Adds [JSON Patch](../features/json_patch.md) via [`diff`](../api/basic_json/diff.md) and
|
||||
[`patch`](../api/basic_json/patch.md), unsigned 64-bit integer support, and locale-independent
|
||||
serialization.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.0).
|
||||
|
||||
## v1.1.0 (2016-01-24)
|
||||
|
||||
Bug-fix and feature release. All changes are backward-compatible.
|
||||
|
||||
- Improves floating-point round-tripping, adds a `get_ref` accessor for stored values, and introduces
|
||||
runtime [assertions](../features/assertions.md).
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v1.1.0).
|
||||
|
||||
## v1.0.0 (2015-12-28)
|
||||
|
||||
First official release. [Full release notes](https://github.com/nlohmann/json/releases/tag/v1.0.0).
|
||||
|
||||
## See also
|
||||
|
||||
- [Migration Guide](../integration/migration_guide.md) — how to future-proof your code for the next
|
||||
major version and replace deprecated functions.
|
||||
@@ -0,0 +1,155 @@
|
||||
# Releases
|
||||
|
||||
This section summarizes the notable changes of every release and links to the relevant documentation.
|
||||
The **complete release notes** — including all changes, the download files, and their checksums — are
|
||||
published on the [GitHub releases page](https://github.com/nlohmann/json/releases).
|
||||
|
||||
!!! info "Unreleased changes"
|
||||
|
||||
This documentation is built from the `develop` branch and may describe changes that are not part of a release
|
||||
yet. Their version numbers are followed by an <span class="unreleased-version">unreleased</span> badge.
|
||||
|
||||
Every release has its own page with a summary of its notable changes and an overview of the API that was added or
|
||||
changed in it. The API overview is generated from the "Version history" section of the
|
||||
[API pages](../../api/basic_json/index.md); it is not a change log, but helps to see whether a feature is available in
|
||||
the version you use.
|
||||
|
||||
## Unreleased
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [Unreleased](unreleased.md) | | Changes on the `develop` branch that are not part of a release yet. |
|
||||
|
||||
## Version 3.12.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.12.0](v3.12.0.md) | 2025-04-11 | Fixes bugs found in 3.11.3 and adds several features. No public API was removed or renamed. |
|
||||
|
||||
## Version 3.11.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.11.3](v3.11.3.md) | 2023-11-28 | Adds features and fixes bugs found in 3.11.2. All changes are backward-compatible. |
|
||||
| [v3.11.2](v3.11.2.md) | 2022-08-12 | Fixes bugs found in 3.11.1 and restructures the namespace. All changes are backward-compatible. |
|
||||
| [v3.11.1](v3.11.1.md) | 2022-08-01 | Fixes a regression from 3.11.0. All changes are backward-compatible. |
|
||||
| [v3.11.0](v3.11.0.md) | 2022-08-01 | One of the largest releases ever. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.10.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.10.5](v3.10.5.md) | 2022-01-03 | Bug-fix release. All changes are backward-compatible. |
|
||||
| [v3.10.4](v3.10.4.md) | 2021-10-16 | Fixes regressions introduced in 3.10.0. All changes are backward-compatible. |
|
||||
| [v3.10.3](v3.10.3.md) | 2021-10-08 | Fixes more regressions from 3.10.0. All changes are backward-compatible. |
|
||||
| [v3.10.2](v3.10.2.md) | 2021-08-26 | Re-release of 3.10.1, whose Git tag pointed at the wrong commit due to a bug in the release script. All changes are backward-compatible. |
|
||||
| [v3.10.1](v3.10.1.md) | 2021-08-24 | Fixes a regression from 3.10.0. All changes are backward-compatible. |
|
||||
| [v3.10.0](v3.10.0.md) | 2021-08-17 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.9.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.9.1](v3.9.1.md) | 2020-08-06 | Fixes two regressions from 3.9.0. All changes are backward-compatible. |
|
||||
| [v3.9.0](v3.9.0.md) | 2020-07-27 | Feature release adding four long-requested features. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.8.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.8.0](v3.8.0.md) | 2020-06-14 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.7.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.7.3](v3.7.3.md) | 2019-11-17 | Fixes a regression from 3.7.2 that could yield quadratic complexity in destructor calls. All changes are backward-compatible. |
|
||||
| [v3.7.2](v3.7.2.md) | 2019-11-10 | Fixes a stack overflow for deeply nested input by making the destructor iterative; parsing of JSON text is now bounded only by available memory (the binary-format parsers still recurse). All changes are backward-compatible. |
|
||||
| [v3.7.1](v3.7.1.md) | 2019-11-06 | Bug-fix release. All changes are backward-compatible. |
|
||||
| [v3.7.0](v3.7.0.md) | 2019-07-28 | Convenience features and house-keeping. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.6.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.6.1](v3.6.1.md) | 2019-03-20 | Fixes a regression (GCC 7/8 compilation) and a `<Windows.h>` build error introduced in 3.6.0. All changes are backward-compatible. |
|
||||
| [v3.6.0](v3.6.0.md) | 2019-03-20 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.5.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.5.0](v3.5.0.md) | 2018-12-22 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.4.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.4.0](v3.4.0.md) | 2018-10-30 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.3.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.3.0](v3.3.0.md) | 2018-10-05 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.2.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.2.0](v3.2.0.md) | 2018-08-20 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.1.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.1.2](v3.1.2.md) | 2018-03-14 | Bug-fix release. All changes are backward-compatible. |
|
||||
| [v3.1.1](v3.1.1.md) | 2018-02-13 | Bug-fix release. All changes are backward-compatible. |
|
||||
| [v3.1.0](v3.1.0.md) | 2018-02-01 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 3.0.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v3.0.1](v3.0.1.md) | 2017-12-29 | Fixes small issues in the [JSON Pointer](../../features/json_pointer.md) and [JSON Patch](../../features/json_patch.md) implementations (invalid "copy" targets and non-integer array indices). All changes are backward-compatible. |
|
||||
| [v3.0.0](v3.0.0.md) | 2017-12-17 | First 3.x release — a major release with breaking changes (see the [migration guide](../../integration/migration_guide.md)). |
|
||||
|
||||
## Version 2.1.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v2.1.1](v2.1.1.md) | 2017-02-25 | Bug-fix release. All changes are backward-compatible. |
|
||||
| [v2.1.0](v2.1.0.md) | 2017-01-28 | Feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 2.0.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v2.0.10](v2.0.10.md) | 2017-01-02 | Fixes several security-relevant bugs in the CBOR and MessagePack parsers found by OSS-Fuzz. All changes are backward-compatible. |
|
||||
| [v2.0.9](v2.0.9.md) | 2016-12-16 | Adds the [CBOR](../../features/binary_formats/cbor.md) and [MessagePack](../../features/binary_formats/messagepack.md) binary formats. All changes are backward-compatible. |
|
||||
| [v2.0.8](v2.0.8.md) | 2016-12-02 | Adds the [`emplace`](../../api/basic_json/emplace.md) and [`emplace_back`](../../api/basic_json/emplace_back.md) functions and improves parsing and serialization performance. All changes are backward-compatible. |
|
||||
| [v2.0.7](v2.0.7.md) | 2016-11-02 | Fixes several parser bugs found through the "Parsing JSON is a Minefield" study (short files, encoding detection, surrogate pairs). All changes are backward-compatible. |
|
||||
| [v2.0.6](v2.0.6.md) | 2016-10-15 | Fixes [`operator[]`](../../api/basic_json/operator%5B%5D.md) for [JSON pointers](../../features/json_pointer.md) so that it creates missing values like the other overloads. All changes are backward-compatible. |
|
||||
| [v2.0.5](v2.0.5.md) | 2016-09-14 | Fixes a remaining stream end-of-file detection bug in the parser. All changes are backward-compatible. |
|
||||
| [v2.0.4](v2.0.4.md) | 2016-09-11 | Fixes stream end-of-file detection in the parser. All changes are backward-compatible. |
|
||||
| [v2.0.3](v2.0.3.md) | 2016-08-31 | Generalizes the parser to accept any contiguous sequence of one-byte elements and deprecates the input-stream constructor in favor of the [`parse`](../../api/basic_json/parse.md) function. All changes are backward-compatible. |
|
||||
| [v2.0.2](v2.0.2.md) | 2016-07-31 | Overhauls the parser (now rejecting unescaped control characters), tightens the class invariants, and cleans up the code. All changes are backward-compatible. |
|
||||
| [v2.0.1](v2.0.1.md) | 2016-06-28 | Fixes a performance regression in the [`dump`](../../api/basic_json/dump.md) function by adjusting the stream locale once per serialization. All changes are backward-compatible. |
|
||||
| [v2.0.0](v2.0.0.md) | 2016-06-24 | Feature release with a minor (potentially non-backward-compatible) API change from added `noexcept` and `constexpr` specifiers. |
|
||||
|
||||
## Version 1.1.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v1.1.0](v1.1.0.md) | 2016-01-24 | Bug-fix and feature release. All changes are backward-compatible. |
|
||||
|
||||
## Version 1.0.x
|
||||
|
||||
| Release | Date | Summary |
|
||||
|---------|------|---------|
|
||||
| [v1.0.0](v1.0.0.md) | 2015-12-28 | First official release. |
|
||||
|
||||
## See also
|
||||
|
||||
- [Migration Guide](../../integration/migration_guide.md) — how to future-proof your code for the next
|
||||
major version and replace deprecated functions.
|
||||
@@ -0,0 +1,14 @@
|
||||
# Unreleased
|
||||
|
||||
These changes are part of the `develop` branch, but not of a release yet.
|
||||
|
||||
- Converting an rvalue container to JSON (`json j = std::move(vec);`, `json j = std::map<std::string, std::string>{...};`)
|
||||
now **moves** the elements instead of copying them (e.g., `std::vector<std::string>` with 100,000 strings: 4.7 ms to
|
||||
2.3 ms). Two consequences: the source container is left in a valid but unspecified (moved-from) state, and if an
|
||||
exception is thrown during the conversion, the source may be partially moved-from, so the strong exception guarantee
|
||||
no longer holds for the source of an rvalue conversion (the JSON value itself is unaffected). Lvalues and `const`
|
||||
objects are still copied. See [`basic_json`](../../api/basic_json/basic_json.md).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,9 @@
|
||||
# v1.0.0
|
||||
|
||||
Released on 2015-12-28.
|
||||
|
||||
First official release. [Full release notes](https://github.com/nlohmann/json/releases/tag/v1.0.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,14 @@
|
||||
# v1.1.0
|
||||
|
||||
Released on 2016-01-24.
|
||||
|
||||
Bug-fix and feature release. All changes are backward-compatible.
|
||||
|
||||
- Improves floating-point round-tripping, adds a `get_ref` accessor for stored values, and introduces
|
||||
runtime [assertions](../../features/assertions.md).
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v1.1.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,19 @@
|
||||
# v2.0.0
|
||||
|
||||
Released on 2016-06-24.
|
||||
|
||||
Feature release with a minor (potentially non-backward-compatible) API change from added `noexcept`
|
||||
and `constexpr` specifiers.
|
||||
|
||||
- Adds [JSON Pointer](../../features/json_pointer.md) support in [`at`](../../api/basic_json/at.md) and
|
||||
[`operator[]`](../../api/basic_json/operator%5B%5D.md), plus [`flatten`](../../api/basic_json/flatten.md)
|
||||
and [`unflatten`](../../api/basic_json/unflatten.md).
|
||||
- Adds [JSON Patch](../../features/json_patch.md) via [`diff`](../../api/basic_json/diff.md) and
|
||||
[`patch`](../../api/basic_json/patch.md), unsigned 64-bit integer support, and locale-independent
|
||||
serialization.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,11 @@
|
||||
# v2.0.1
|
||||
|
||||
Released on 2016-06-28.
|
||||
|
||||
Fixes a performance regression in the [`dump`](../../api/basic_json/dump.md) function by adjusting the
|
||||
stream locale once per serialization. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,10 @@
|
||||
# v2.0.10
|
||||
|
||||
Released on 2017-01-02.
|
||||
|
||||
Fixes several security-relevant bugs in the CBOR and MessagePack parsers found by OSS-Fuzz. All
|
||||
changes are backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.10).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,11 @@
|
||||
# v2.0.2
|
||||
|
||||
Released on 2016-07-31.
|
||||
|
||||
Overhauls the parser (now rejecting unescaped control characters), tightens the class invariants, and
|
||||
cleans up the code. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.2).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,11 @@
|
||||
# v2.0.3
|
||||
|
||||
Released on 2016-08-31.
|
||||
|
||||
Generalizes the parser to accept any contiguous sequence of one-byte elements and deprecates the
|
||||
input-stream constructor in favor of the [`parse`](../../api/basic_json/parse.md) function. All changes
|
||||
are backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.3).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,10 @@
|
||||
# v2.0.4
|
||||
|
||||
Released on 2016-09-11.
|
||||
|
||||
Fixes stream end-of-file detection in the parser. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.4).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,10 @@
|
||||
# v2.0.5
|
||||
|
||||
Released on 2016-09-14.
|
||||
|
||||
Fixes a remaining stream end-of-file detection bug in the parser. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.5).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,11 @@
|
||||
# v2.0.6
|
||||
|
||||
Released on 2016-10-15.
|
||||
|
||||
Fixes [`operator[]`](../../api/basic_json/operator%5B%5D.md) for [JSON pointers](../../features/json_pointer.md)
|
||||
so that it creates missing values like the other overloads. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.6).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,11 @@
|
||||
# v2.0.7
|
||||
|
||||
Released on 2016-11-02.
|
||||
|
||||
Fixes several parser bugs found through the "Parsing JSON is a Minefield" study (short files, encoding
|
||||
detection, surrogate pairs). All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.7).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,12 @@
|
||||
# v2.0.8
|
||||
|
||||
Released on 2016-12-02.
|
||||
|
||||
Adds the [`emplace`](../../api/basic_json/emplace.md) and
|
||||
[`emplace_back`](../../api/basic_json/emplace_back.md) functions and improves parsing and serialization
|
||||
performance. All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.8).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,11 @@
|
||||
# v2.0.9
|
||||
|
||||
Released on 2016-12-16.
|
||||
|
||||
Adds the [CBOR](../../features/binary_formats/cbor.md) and
|
||||
[MessagePack](../../features/binary_formats/messagepack.md) binary formats. All changes are
|
||||
backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v2.0.9).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,15 @@
|
||||
# v2.1.0
|
||||
|
||||
Released on 2017-01-28.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds conversions from and to [arbitrary user-defined types](../../features/arbitrary_types.md) via
|
||||
`to_json`/`from_json`, the [`meta`](../../api/basic_json/meta.md) function, and the option to switch off
|
||||
exceptions ([`JSON_NOEXCEPTION`](../../api/macros/json_noexception.md)).
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.1.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,14 @@
|
||||
# v2.1.1
|
||||
|
||||
Released on 2017-02-25.
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Makes number parsing and serialization locale-independent with correct floating-point
|
||||
round-tripping; commits and released files are GPG-signed.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v2.1.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,20 @@
|
||||
# v3.0.0
|
||||
|
||||
Released on 2017-12-17.
|
||||
|
||||
First 3.x release — a major release with breaking changes (see the
|
||||
[migration guide](../../integration/migration_guide.md)).
|
||||
|
||||
- Introduces user-defined [exceptions](../exceptions.md) (`json::exception` and subtypes, each with an
|
||||
identifier).
|
||||
- Adds a non-throwing [`accept`](../../api/basic_json/accept.md) function and an `allow_exceptions` flag
|
||||
for [`parse`](../../api/basic_json/parse.md), and an [`update`](../../api/basic_json/update.md) function to
|
||||
merge objects.
|
||||
- Adds streaming for CBOR and MessagePack and allows storing NaN/infinity.
|
||||
- Non-UTF-8 strings now throw on serialization, and the iterator category changed to bidirectional.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.0.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,12 @@
|
||||
# v3.0.1
|
||||
|
||||
Released on 2017-12-29.
|
||||
|
||||
Fixes small issues in the [JSON Pointer](../../features/json_pointer.md) and
|
||||
[JSON Patch](../../features/json_patch.md) implementations (invalid "copy" targets and non-integer array
|
||||
indices). All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.0.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,16 @@
|
||||
# v3.1.0
|
||||
|
||||
Released on 2018-02-01.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds [UBJSON](../../features/binary_formats/ubjson.md) read/write support and
|
||||
[JSON Merge Patch](../../features/merge_patch.md) via [`merge_patch`](../../api/basic_json/merge_patch.md).
|
||||
- Switches to the Grisu2 algorithm for short, round-trippable floating-point output, and splits the
|
||||
header into [multiple files](../../integration/index.md) with a forward-declaration header.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.1.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,14 @@
|
||||
# v3.1.1
|
||||
|
||||
Released on 2018-02-13.
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Fixes parsing of indefinite-length CBOR strings, a user-defined conversion to vector types, and
|
||||
overflow detection for UBJSON containers.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.1.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,14 @@
|
||||
# v3.1.2
|
||||
|
||||
Released on 2018-03-14.
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Fixes a memory leak in the parser callback and adds user-defined string-type support to the parser
|
||||
and serializer.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.1.2).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,20 @@
|
||||
# v3.10.0
|
||||
|
||||
Released on 2021-08-17.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds [extended diagnostic messages](../../api/macros/json_diagnostics.md)
|
||||
([`JSON_DIAGNOSTICS`](../../api/macros/json_diagnostics.md)) that prepend a JSON pointer to exception
|
||||
messages to pinpoint the offending value.
|
||||
- Adds a GDB pretty-printer and a [`cbor_tag_handler_t`](../../api/basic_json/cbor_tag_handler_t.md)
|
||||
`store` option to keep CBOR tags as binary subtypes.
|
||||
- Supports containers with non-default-constructible types and parsing from `std::byte`.
|
||||
- Adds [`JSON_NO_IO`](../../api/macros/json_no_io.md) to exclude the I/O headers and the
|
||||
[`JSON_HAS_CPP_*`](../../api/macros/json_has_cpp_11.md) macros to override the detected C++ standard.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,14 @@
|
||||
# v3.10.1
|
||||
|
||||
Released on 2021-08-24.
|
||||
|
||||
Fixes a regression from 3.10.0. All changes are backward-compatible.
|
||||
|
||||
- Fixes an [extended-diagnostics](../../api/macros/json_diagnostics.md) assertion triggered when used
|
||||
with [`ordered_json`](../../api/ordered_json.md), and hardens the GDB pretty-printer.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,11 @@
|
||||
# v3.10.2
|
||||
|
||||
Released on 2021-08-26.
|
||||
|
||||
Re-release of 3.10.1, whose Git tag pointed at the wrong commit due to a bug in the release script.
|
||||
All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.2).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,16 @@
|
||||
# v3.10.3
|
||||
|
||||
Released on 2021-10-08.
|
||||
|
||||
Fixes more regressions from 3.10.0. All changes are backward-compatible.
|
||||
|
||||
- Fixes [extended-diagnostics](../../api/macros/json_diagnostics.md) assertions triggered by
|
||||
[`update`](../../api/basic_json/update.md) and by inserting into arrays.
|
||||
- Supports custom allocators when writing binary formats into a `std::vector`, and allows conversion
|
||||
from types that only provide `begin()`/`end()`.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.3).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,16 @@
|
||||
# v3.10.4
|
||||
|
||||
Released on 2021-10-16.
|
||||
|
||||
Fixes regressions introduced in 3.10.0. All changes are backward-compatible.
|
||||
|
||||
- Fixes the `std::filesystem::path` conversion (which could trigger a stack overflow and broke
|
||||
compilation on Windows).
|
||||
- Fixes compilation for types with an explicit defaulted constructor and for code relying on the
|
||||
return values of `std::find` and `std::remove`.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.4).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,15 @@
|
||||
# v3.10.5
|
||||
|
||||
Released on 2022-01-03.
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Guards the `std::filesystem` conversions behind compiler-support checks
|
||||
([`JSON_HAS_FILESYSTEM`](../../api/macros/json_has_filesystem.md)), which can be set to `0` to disable
|
||||
them altogether.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.10.5).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,27 @@
|
||||
# v3.11.0
|
||||
|
||||
Released on 2022-08-01.
|
||||
|
||||
One of the largest releases ever. All changes are backward-compatible.
|
||||
|
||||
- Allows `std::string_view` as object keys in [`at`](../../api/basic_json/at.md),
|
||||
[`operator[]`](../../api/basic_json/operator%5B%5D.md), [`value`](../../api/basic_json/value.md),
|
||||
[`erase`](../../api/basic_json/erase.md), [`find`](../../api/basic_json/find.md),
|
||||
[`contains`](../../api/basic_json/contains.md), and [`count`](../../api/basic_json/count.md).
|
||||
- Adds the [BJData](../../features/binary_formats/bjdata.md) binary format (the fifth supported format).
|
||||
- Improves C++20 support, including [`operator<=>`](../../api/basic_json/operator_spaceship.md) and
|
||||
`<ranges>`-compatible iterators.
|
||||
- Adds a versioned, ABI-tagged inline [namespace](../../features/namespace.md)
|
||||
([`NLOHMANN_JSON_NAMESPACE`](../../api/macros/nlohmann_json_namespace.md)) and the option to move the
|
||||
UDLs out of the global namespace ([`JSON_USE_GLOBAL_UDLS`](../../api/macros/json_use_global_udls.md)).
|
||||
- Adds [`patch_inplace`](../../api/basic_json/patch_inplace.md), default values for the
|
||||
[conversion macros](../../features/arbitrary_types.md#simplify-your-life-with-macros), and an option to
|
||||
disable enum serialization ([`JSON_DISABLE_ENUM_SERIALIZATION`](../../api/macros/json_disable_enum_serialization.md)).
|
||||
|
||||
This release introduced a UDL regression that was fixed in
|
||||
[3.11.1](https://github.com/nlohmann/json/releases/tag/v3.11.1).
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.11.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,16 @@
|
||||
# v3.11.1
|
||||
|
||||
Released on 2022-08-01.
|
||||
|
||||
Fixes a regression from 3.11.0. All changes are backward-compatible.
|
||||
|
||||
- Restores the global [user-defined string literals](../../api/macros/json_use_global_udls.md)
|
||||
[`operator""_json`](../../api/operator_literal_json.md) and
|
||||
[`operator""_json_pointer`](../../api/operator_literal_json_pointer.md), which 3.11.0 had moved into a
|
||||
namespace by default.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.11.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,18 @@
|
||||
# v3.11.2
|
||||
|
||||
Released on 2022-08-12.
|
||||
|
||||
Fixes bugs found in 3.11.1 and restructures the namespace. All changes are backward-compatible.
|
||||
|
||||
- Fixes the [`value`](../../api/basic_json/value.md) function (broken for strings, size types, and
|
||||
`nullptr` in 3.11.0) and makes `json_fwd.hpp` self-contained.
|
||||
- Restores using [`json_pointer`](../../api/json_pointer/index.md) as a key in associative containers and
|
||||
comparing it with strings.
|
||||
- Restructures the inline [namespace](../../features/namespace.md) and allows disabling the version
|
||||
component, and avoids heap allocations in the [BJData](../../features/binary_formats/bjdata.md) parser.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.11.2).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,20 @@
|
||||
# v3.11.3
|
||||
|
||||
Released on 2023-11-28.
|
||||
|
||||
Adds features and fixes bugs found in 3.11.2. All changes are backward-compatible.
|
||||
|
||||
- Adds a [custom base class](../../api/basic_json/json_base_class_t.md) as a node customization point.
|
||||
- Adds serialization-only [conversion macros](../../features/macros.md)
|
||||
(`NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE` and `NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE`)
|
||||
and a clearer parse error for empty input.
|
||||
- Adds [Bazel](../../integration/package_managers.md#bazel) and
|
||||
[Swift Package Manager](../../integration/package_managers.md#swift-package-manager) build support.
|
||||
- Fixes custom allocators, a memory leak in [`adl_serializer`](../../api/adl_serializer/to_json.md)'s
|
||||
`to_json`, initializer-list construction when `size_type` is not `int`, and many compiler warnings.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.11.3).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,26 @@
|
||||
# v3.12.0
|
||||
|
||||
Released on 2025-04-11.
|
||||
|
||||
Fixes bugs found in 3.11.3 and adds several features. No public API was removed or renamed.
|
||||
|
||||
- Adds diagnostic byte positions via [`JSON_DIAGNOSTIC_POSITIONS`](../../api/macros/json_diagnostic_positions.md),
|
||||
exposed through the new [`start_pos`](../../api/basic_json/start_pos.md) and
|
||||
[`end_pos`](../../api/basic_json/end_pos.md) member functions.
|
||||
- Makes the [conversion macros](../../features/arbitrary_types.md#simplify-your-life-with-macros)
|
||||
templated (so they also work with [`ordered_json`](../../api/ordered_json.md)) and adds
|
||||
[`NLOHMANN_DEFINE_DERIVED_TYPE`](../../api/macros/nlohmann_define_derived_type.md) for derived classes.
|
||||
- Adds `std::optional` support (C++17) and lets [`patch`](../../api/basic_json/patch.md),
|
||||
[`diff`](../../api/basic_json/diff.md), and [`flatten`](../../api/basic_json/flatten.md) work with
|
||||
arbitrary string types.
|
||||
- Extends the [binary formats](../../features/binary_formats/index.md):
|
||||
[BJData](../../features/binary_formats/bjdata.md) draft 3 and unsigned 64-bit integers for
|
||||
[BSON](../../features/binary_formats/bson.md).
|
||||
- Adds multidimensional C-array conversion and UTF-8 encoded `std::filesystem::path` conversions, and
|
||||
raises the minimum [CMake](../../integration/cmake.md) version to 3.5 and supports CMake 4.0.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.12.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,16 @@
|
||||
# v3.2.0
|
||||
|
||||
Released on 2018-08-20.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds a [SAX interface](../../features/parsing/sax_interface.md) and a non-recursive parser.
|
||||
- Adds parsing from wide-string types (`std::wstring`, `std::u16string`, `std::u32string`), conversion to
|
||||
`std::string_view` (C++17), and round-tripping of `std::map`/`std::unordered_map` with non-string
|
||||
keys.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.2.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,14 @@
|
||||
# v3.3.0
|
||||
|
||||
Released on 2018-10-05.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds GCC 4.8 support, the [`get_to`](../../api/basic_json/get_to.md) function, and an overhauled and
|
||||
documented [CMake](../../integration/cmake.md) integration.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.3.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,18 @@
|
||||
# v3.4.0
|
||||
|
||||
Released on 2018-10-30.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds [BSON](../../features/binary_formats/bson.md) read/write support.
|
||||
- Adds configurable Unicode error handlers to [`dump`](../../api/basic_json/dump.md) (throw, replace with
|
||||
U+FFFD, or ignore) and the
|
||||
[`NLOHMANN_JSON_SERIALIZE_ENUM`](../../api/macros/nlohmann_json_serialize_enum.md) macro for
|
||||
[enum conversion](../../features/enum_conversion.md).
|
||||
- Improves parse-error messages with line/column positions and context.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.4.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,15 @@
|
||||
# v3.5.0
|
||||
|
||||
Released on 2018-12-22.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Adds structured-binding support via the [`items`](../../api/basic_json/items.md) function and reading
|
||||
from `FILE*` in the [`parse`](../../api/basic_json/parse.md) function.
|
||||
- Fixes the `eofbit` handling on input streams and a bug in the BSON SAX parser.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.5.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,16 @@
|
||||
# v3.6.0
|
||||
|
||||
Released on 2019-03-20.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Reworks the [JSON pointer](../../features/json_pointer.md) interface (`operator/`, `push_back`,
|
||||
`parent_pointer`, …).
|
||||
- Adds a [`contains`](../../api/basic_json/contains.md) function to test for an object key and greatly
|
||||
improves the performance of integer serialization.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.6.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,10 @@
|
||||
# v3.6.1
|
||||
|
||||
Released on 2019-03-20.
|
||||
|
||||
Fixes a regression (GCC 7/8 compilation) and a `<Windows.h>` build error introduced in 3.6.0. All
|
||||
changes are backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v3.6.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,15 @@
|
||||
# v3.7.0
|
||||
|
||||
Released on 2019-07-28.
|
||||
|
||||
Convenience features and house-keeping. All changes are backward-compatible.
|
||||
|
||||
- Adds a [`contains`](../../api/basic_json/contains.md) overload that checks a JSON pointer without
|
||||
throwing, a generic `to_string`, and a return value for
|
||||
[`emplace_back`](../../api/basic_json/emplace_back.md).
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.7.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,16 @@
|
||||
# v3.7.1
|
||||
|
||||
Released on 2019-11-06.
|
||||
|
||||
Bug-fix release. All changes are backward-compatible.
|
||||
|
||||
- Fixes a segmentation fault when serializing the `std::int64_t` minimum value and fixes
|
||||
[`contains`](../../api/basic_json/contains.md) for JSON pointers.
|
||||
- Allows [`items`](../../api/basic_json/items.md) with a custom string type and makes `json_pointer::back`
|
||||
`const`.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.7.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,11 @@
|
||||
# v3.7.2
|
||||
|
||||
Released on 2019-11-10.
|
||||
|
||||
Fixes a stack overflow for deeply nested input by making the destructor iterative; parsing of JSON
|
||||
text is now bounded only by available memory (the binary-format parsers still recurse). All changes are backward-compatible.
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.7.2).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,10 @@
|
||||
# v3.7.3
|
||||
|
||||
Released on 2019-11-17.
|
||||
|
||||
Fixes a regression from 3.7.2 that could yield quadratic complexity in destructor calls. All changes
|
||||
are backward-compatible. [Full release notes](https://github.com/nlohmann/json/releases/tag/v3.7.3).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,20 @@
|
||||
# v3.8.0
|
||||
|
||||
Released on 2020-06-14.
|
||||
|
||||
Feature release. All changes are backward-compatible.
|
||||
|
||||
- Introduces a [binary value](../../features/binary_values.md) type that is read from and written to
|
||||
[CBOR](../../features/binary_formats/cbor.md), [BSON](../../features/binary_formats/bson.md), and
|
||||
[MessagePack](../../features/binary_formats/messagepack.md), and can be shared between formats.
|
||||
- Generalizes the input adapters to read from any `LegacyInputIterator` container (3–10 % faster
|
||||
parsing).
|
||||
- Fixes [`contains`](../../api/basic_json/contains.md) for JSON pointers and makes the binary
|
||||
[`from_cbor`](../../api/basic_json/from_cbor.md)/[`from_msgpack`](../../api/basic_json/from_msgpack.md)/etc.
|
||||
functions respect `allow_exceptions`.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.8.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,20 @@
|
||||
# v3.9.0
|
||||
|
||||
Released on 2020-07-27.
|
||||
|
||||
Feature release adding four long-requested features. All changes are backward-compatible.
|
||||
|
||||
- Optional [comment](../../features/comments.md) parsing in [`parse`](../../api/basic_json/parse.md) via the
|
||||
`ignore_comments` parameter.
|
||||
- [`ordered_json`](../../api/ordered_json.md) to preserve the [insertion order](../../features/object_order.md)
|
||||
of object keys.
|
||||
- An option to switch off [implicit conversions](../../api/macros/json_use_implicit_conversions.md).
|
||||
- The [`NLOHMANN_DEFINE_TYPE_*`](../../features/arbitrary_types.md#simplify-your-life-with-macros)
|
||||
convenience macros, plus high-precision-number support for
|
||||
[UBJSON](../../features/binary_formats/ubjson.md) and CBOR tag handling.
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.9.0).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
@@ -0,0 +1,14 @@
|
||||
# v3.9.1
|
||||
|
||||
Released on 2020-08-06.
|
||||
|
||||
Fixes two regressions from 3.9.0. All changes are backward-compatible.
|
||||
|
||||
- Accepts consecutive [comments](../../features/comments.md) and completes the
|
||||
[`ordered_json`](../../api/ordered_json.md) interface (e.g. `ordered_json::parse`).
|
||||
|
||||
[Full release notes](https://github.com/nlohmann/json/releases/tag/v3.9.1).
|
||||
|
||||
## API changes
|
||||
|
||||
<!-- api-changes -->
|
||||
Reference in new issue
Block a user