v6.3.0
Major Features
- RFC compliance for JSON Patch and JSON Merge Patch
- Big endian architecture support
std::chronoJSON support- Enhanced BEVE format streaming capabilities
Big Endian Support
Full support for big endian architectures with compile-time detection via std::endian::native. Includes byte-swapping implementations across all components, with CI testing through GCC cross-compilation and QEMU. (Closes #1675)
JSON Patch (RFC 6902)
Complete implementation of RFC 6902 JSON Patch for computing and applying document differences:
glz::diff()- Generate patches between documentsglz::patch()- Apply operations in-placeglz::patched()- Non-mutating patch applicationglz::patch_json()- Work directly with JSON strings- All six operations:
add,remove,replace,move,copy,test - Atomic transactions with automatic rollback on failure
- Option to create missing intermediate paths
- #2131
JSON Merge Patch (RFC 7386)
Full support for RFC 7386 JSON Merge Patch:
merge_patch()- Apply patches in-placemerge_patched()- Returns new patched valuemerge_diff()- Generate patches between documents- Correct handling of null-value removal, recursive merging, and array replacement
- #2132
std::chrono Support
Zero-allocation serialization for chrono types: (Closes #1110)
std::chrono::duration- Serialized as numeric countstd::chrono::system_clock::time_point- ISO 8601 UTC formatstd::chrono::steady_clock::time_point- Numeric format- Epoch wrappers:
epoch_seconds,epoch_millis,epoch_micros,epoch_nanos - Precision-aware fractional seconds based on duration type
- Automatic timezone offset conversion to UTC
- #2130
BEVE Delimiter and Incremental Writing
New streaming capabilities for BEVE (Binary Efficient Value Encoding) similar to NDJSON for JSON:
write_beve_delimiter()- Outputs delimiter byte (0x06)write_beve_append()- Adds values without clearing bufferwrite_beve_append_with_delimiter()- Streaming-friendly writeswrite_beve_delimited()- Container serialization with delimitersread_beve_delimited()- Read delimiter-separated valuesread_beve_at()- Offset-based reading with automatic delimiter skipping
When converting delimited BEVE to JSON via beve_to_json, delimiters become newlines for NDJSON-compatible output.
std::u8string and std::u8string_view Support
Native serialization support for UTF-8 string types.
mimic Type in glz::meta
New mimic type alias to prevent double-quoting of custom types as map keys: (Closes #1477)
template <>
struct glz::meta<my_key> {
using mimic = std::string;
static constexpr auto value = &my_key::value;
};Networking Improvements
- HTTP Server Keep Alive - Persistent connection support for HTTP servers #2128
- WebSocket internal() Methods - Access underlying implementation via
internal()andsocket()methods #2140
Performance Improvements
- Reduced template instantiations when various
glz::optsare used, decreasing compile times #2138 - Pass end iterator by value for higher performance in parsing #2133
- Pass
std::string_viewby value throughout codebase #2134 - Remove
reinterpret_castfrom atoi implementation #2136
Code Cleanup
- Removed legacy
hash_mapimplementation and cleaned up variant hashing #2135
Bug Fixes
- Fixed
glz::seekfor invalid paths to maps by usingfind#2129
Breaking Changes
- Error code renamed:
get_nonexistent_json_ptr→nonexistent_json_ptrfor consistency #2131
Full Changelog: v6.2.0...v6.3.0