:bug: Unfortunately, this release introduced a bug that breaks existing usages of the user-defined string literals (UDL). This is fixed in version 3.11.1.
Allow to use std::string_view as object keys in at, operator[], value, erase, find, contains, and count to avoid unnecessary allocations. #3423, #1529, #3558, #3564
Add support to read and write the UBJSON-derived Binary JData (BJData) format (see documentation). #3336, #3461, #3463, #3475, #3479, #3493, #3491, #3492, #3490, #3500, #3502, #3503, #3505, #3513, #3514, #3519, #3523, #3541, #3543
:bug: Bug fixes
Allow creation of ordered_json objects from initializer lists. #3342, #3343, #3370
Fix failing tests when compiling with C++20 and add support for operator<=>. #3207, #3446, #3472
Fix comparison-related compilation problems in C++20 on GCC 12. #3138, #3379
Make iterator satisfy std::incrementable. #3331, #3332
Exclude std::any from implicit conversion. #3428, #3437
Fix constraints on from_json() for strings. #3171, #3267, #3312, #3384, #3427, #3312, #3620
Make iterators usable with <ranges> and range-v3. #3130, #3446
Fix comparison of NaN values with json to behave like float. #3409, #3446
Allow to create booleans from std::vector<bool>::reference. #3533, #3534
Allow to use array types where iterators are pointers. #3544
Improve performance of writing binary formats to byte vectors. #3569
Add patch_inplace function to apply patches without copying. #3581, #3596
Use swap by ADL to allow swapping with non-std containers and improve error messages. #3609
Add versioned, ABI-tagged inline namespace (see NLOHMANN_JSON_NAMESPACE) to avoid ODR errors when linking different versions of the library. #1539, #3360, #3588, #3590
Move UDLs out of the global namespace (see JSON_USE_GLOBAL_UDLS) to avoid name clashes. #1682, #3605
Warnings
Fix ICPC warning 1098. #3632, #3634
Fix a -Wpragmas warning in GCC <11. #3550
:hammer: Further Changes
Fix _MSC_VER version to check for std::filesystem. #3240
Remove <sstream> dependency. #3239, #3244
Overwork bug template to systematically request information. #3348
Passing iterator pairs or pointer/length pairs to parsing functions (basic_json::parse, basic_json::accept, basic_json::sax_parse, basic_json::from_cbor, basic_json::from_msgpack, basic_json::from_ubjson, basic_json::from_bson) via initializer lists is deprecated. Instead, pass two iterators; for instance, call basic_json::from_cbor(ptr, ptr+len) instead of basic_json::from_cbor({ptr, len}).
All deprecations are annotated with HEDLEY_DEPRECATED_FOR to report which function to use instead.