Files
json/home/releases/v3.12.0.md
T
2026-10-24 17:31:11 +00:00

27 lines
1.4 KiB
Markdown

# 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 -->