glaze v9.0.0
Permanent link:
cppdashboard.dev/r/2026/09/glaze-v9-0-0Extremely fast, in memory, serialization, reflection, and RPC library for C++. JSON, BEVE, BSON, CBOR, CSV, JSONB, MessagePack, TOML, YAML, EETF
Release notes
## 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 * bound the readers instead of padding the input by @stephenberry in https://github.com/stephenberry/glaze/pull/2872 * http_server: negotiate TLS 1.3 and expose the SSL context by @michaelaeriksen in https://github.com/stephenberry/glaze/pull/2873 * net: raise the TLS floor on the client side, assert SSL context is configured before start() by @stephenberry in https://github.com/stephenberry/glaze/pull/2874 * Handle // comments in the JSONC formatters and fix the comment scanners (#2864) by @stephenberry in https://github.com/stephenberry/glaze/pull/2881 * bound prettify's writes to a fixed-capacity output by @stephenberry in https://github.com/stephenberry/glaze/pull/2882 * Fix YAML quote lookahead crossing line boundaries by @Skold177 in https://github.com/stephenberry/glaze/pull/2869 * Fix the YAML implicit-key probes' handling of the '' escape by @stephenberry in https://github.com/stephenberry/glaze/pull/2892 * Fold the key length into the full hash by @stephenberry in https://github.com/stephenberry/glaze/pull/2893 * Tidy read_base64: unsigned accumulator, 256 B decode table by @stephenberry in https://github.com/stephenberry/glaze/pull/2908 * Don't clobber std::atomic on a failed read by @stephenberry in https://github.com/stephenberry/glaze/pull/2909 * Don't skip the atomic store on non-error codes by @stephenberry in https://github.com/stephenberry/glaze/pull/2914 * Remove glz::invoke_update; writing an invoke member is now an error by @stephenberry in https://github.com/stephenberry/glaze/pull/2913 * Match prettify's depth limit to the readers by @stephenberry in https://github.com/stephenberry/glaze/pull/2920 * Don't count scalars against the binary-to-JSON depth limit by @stephenberry in https://github.com/stephenberry/glaze/pull/2921 * Enforce RFC 6901 array indices, fix RFC 6902 patch confo…
Share this resource