Library

glaze v9.0.0

Versionv9.0.0
Stars★ 3,031
Released2026-09-24

Extremely 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


Discovered 2026-09-25 Source GitHub Archive 2026-09 →