github stephenberry/glaze v9.0.0

one hour ago

Breaking changes

  • MessagePack and CBOR wire format (#2853): variants are written in the shape their glz::meta declares, as in JSON and BEVE, instead of wrapped in a Glaze-specific id or index. MessagePack structs are now keyed maps. Variants written by earlier versions no longer read back, and earlier MessagePack structs read back only under structs_as_arrays.
  • Removed: glz::invoke_update (#2913), shared_async_map and shared_async_vector (#2916), glz::hostname_include (#2924), glz::disable_padding_on/off (#2872).
  • Writing a glz::invoke member is a compile error (#2913). Exclude it with meta<T>::skip. Formats without support for a Glaze wrapper type now reject it at compile time instead of reflecting its internals (#2932).
  • meta<T>::skip applies to every keyed format (#2925): BEVE, CBOR, MessagePack, TOML, BSON and JSONB now drop skipped keys, as JSON and YAML already did.
  • is_padded is now the caller's promise that their buffer has padding_bytes of readable slack past the end (#2872).
  • Stricter parsing: numbers with an empty exponent such as 1e (#2935) and JSON Pointer array indices with leading zeros (#2894) are rejected.
  • TLS: http_server and the HTTP/WebSocket clients refuse TLS 1.0 and 1.1 (#2873, #2874).
  • An empty glz::raw_json writes null instead of nothing (#2890).

Feature-test macros: glaze_v9_0_0_meta_skip_all_formats, glaze_v9_0_0_invoke, glaze_v9_0_0_wrappers_not_reflected.

Highlights

  • Faster reads that never modify the input (#2872): glz::read no longer resizes the caller's buffer to pad it, which makes small-document reads several times faster.
  • glz::custom in every format that can express it (#2811).
  • Compact, portable MessagePack and CBOR for variants and glz::generic (#2853).
  • HTTPS server negotiates TLS 1.3 and exposes its SSL context via configure_ssl_context (#2873).
  • Reusable contexts: a glz::context stays usable after a failed or partial read (#2927, #2930).
  • RFC 6902 JSON Patch conformance (#2894), and every public header compiles on its own (#2931).

What's Changed

New Contributors

Full Changelog: v8.4.0...v9.0.0

Don't miss a new glaze release

NewReleases is sending notifications on new releases.