Download Latest Version v6.4.0 source code.tar.gz (1.1 MB)
Email in envelope

Get an email when there's a new version of Glaze

Home / v6.3.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2025-12-17 3.9 kB
v6.3.0 source code.tar.gz 2025-12-17 1.0 MB
v6.3.0 source code.zip 2025-12-17 1.2 MB
Totals: 3 Items   2.2 MB 0

Major Features

  • RFC compliance for JSON Patch and JSON Merge Patch
  • Big endian architecture support
  • std::chrono JSON 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])

  • [#2141]

JSON Patch (RFC 6902)

Complete implementation of RFC 6902 JSON Patch for computing and applying document differences:

  • glz::diff() - Generate patches between documents
  • glz::patch() - Apply operations in-place
  • glz::patched() - Non-mutating patch application
  • glz::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-place
  • merge_patched() - Returns new patched value
  • merge_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 count
  • std::chrono::system_clock::time_point - ISO 8601 UTC format
  • std::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 buffer
  • write_beve_append_with_delimiter() - Streaming-friendly writes
  • write_beve_delimited() - Container serialization with delimiters
  • read_beve_delimited() - Read delimiter-separated values
  • read_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.

  • [#2142]

std::u8string and std::u8string_view Support

Native serialization support for UTF-8 string types.

  • [#2127]

mimic Type in glz::meta

New mimic type alias to prevent double-quoting of custom types as map keys: (Closes [#1477])

:::cpp
template <>
struct glz::meta<my_key> {
   using mimic = std::string;
   static constexpr auto value = &my_key::value;
};
  • [#2123]

Networking Improvements

  • HTTP Server Keep Alive - Persistent connection support for HTTP servers [#2128]
  • WebSocket internal() Methods - Access underlying implementation via internal() and socket() methods [#2140]

Performance Improvements

  • Reduced template instantiations when various glz::opts are used, decreasing compile times [#2138]
  • Pass end iterator by value for higher performance in parsing [#2133]
  • Pass std::string_view by value throughout codebase [#2134]
  • Remove reinterpret_cast from atoi implementation [#2136]

Code Cleanup

  • Removed legacy hash_map implementation and cleaned up variant hashing [#2135]

Bug Fixes

  • Fixed glz::seek for invalid paths to maps by using find [#2129]

Breaking Changes

  • Error code renamed: get_nonexistent_json_ptrnonexistent_json_ptr for consistency [#2131]

Full Changelog: https://github.com/stephenberry/glaze/compare/v6.2.0...v6.3.0

Source: README.md, updated 2025-12-17