Update dependency stephenberry/glaze to v7.5.0 #86

Merged
Bluemedia merged 1 commit from renovate/stephenberry-glaze-7.x into main 2026-04-29 09:07:18 +00:00
Collaborator

This PR contains the following updates:

Package Update Change
stephenberry/glaze minor 7.4.07.5.0

Release Notes

stephenberry/glaze (stephenberry/glaze)

v7.5.0

Compare Source

BSON Support

Glaze now supports BSON. Helper types (glz::bson::object_id, datetime, regex, javascript, decimal128, timestamp, binary, min_key, max_key) cover BSON wire types that have no native JSON equivalent, and glz::bson_to_json produces MongoDB Canonical Extended JSON v2.

Faster Float Writing

glz::to_chars for floats now uses a header-only port of Victor Zverovich's zmij (Schubfach + xjb) in place of dragonbox.

  • ~2.7× faster than dragonbox on random finite doubles, ~3× faster on floats.
  • The size-optimized path (OptSize=true) is ~4–8× faster than the previous simple_float::to_chars at roughly the same footprint.
  • Side-effect bugfix: simple_float::from_chars no longer hits a 1-ULP rounding miss on platforms where long double aliases double (ARM64 macOS, MSVC).

Full exhaustive sweep over all 4,278,190,080 finite float values round-trips exactly.

Struct Flattening with glz::merge

glz::merge now works inside glz::meta with member pointers, enabling both reading and writing of composite structs as flat JSON objects.

struct Species { std::string name{}; int legs{}; };
struct Appearance { double weight{}; std::string color{}; };
struct BearRecord { Species species{}; Appearance appearance{}; };

template <>
struct glz::meta<BearRecord> {
   using T = BearRecord;
   static constexpr auto value = glz::merge{&T::species, &T::appearance};
};

// Reads and writes as: {"name":"Grizzly","legs":4,"weight":300.5,"color":"brown"}

Sub-types can be either glaze_object_t (with custom key names) or reflectable (automatic reflection), and any number of sub-structs can be merged. Implemented entirely at the reflect<T> layer, so JSON, BEVE, YAML, CBOR, and other formats all pick it up automatically.

flatten_map Wrapper

A new glz::flatten_map wrapper serializes map-like containers as flat arrays of the form [key elements..., mapped value, ...], supporting fixed-size keys (std::pair, tuples, Glaze arrays, std::array) for both reading and writing.

std::unordered_map<std::pair<int, int>, std::string, pair_hash> map;
map[{1, 2}] = "example";

std::string out;
glz::write_json(glz::flatten_map_wrapper{map}, out);
// out == R"([1,2,"example"])"

Usable both inside glz::meta via member pointer (glz::flatten_map<&T::m>) and as a top-level CTAD wrapper (glz::flatten_map_wrapper{map}).

Improvements

  • Cross-format skip_null_members honored by JSONB, CBOR, MsgPack, and BEVE map writers, matching the existing struct-writer behavior by @​stephenberry in #​2518
  • Remove force inlining for YAML and TOML to improve compile times and reduce binary size by @​stephenberry in #​2517

Fixes

  • Named enum map keys: reading a std::map keyed by an enum declared with the keys + value array form of glz::meta no longer fails with expected_quote by @​stephenberry in #​2523
  • jsonb_to_json now emits 9e999 / -9e999 for ±Infinity (matching SQLite's json() convention) instead of null. NaN continues to map to null. Documentation also clarifies that 64-bit integer / binary64 float ranges are a Glaze implementation constraint, not a SQLite spec limit by @​stephenberry in #​2521

Full Changelog: https://github.com/stephenberry/glaze/compare/v7.4.0...v7.5.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [stephenberry/glaze](https://github.com/stephenberry/glaze) | minor | `7.4.0` → `7.5.0` | --- ### Release Notes <details> <summary>stephenberry/glaze (stephenberry/glaze)</summary> ### [`v7.5.0`](https://github.com/stephenberry/glaze/releases/tag/v7.5.0) [Compare Source](https://github.com/stephenberry/glaze/compare/v7.4.0...v7.5.0) ### BSON Support Glaze now supports [BSON](https://bsonspec.org/). Helper types (`glz::bson::object_id`, `datetime`, `regex`, `javascript`, `decimal128`, `timestamp`, `binary`, `min_key`, `max_key`) cover BSON wire types that have no native JSON equivalent, and `glz::bson_to_json` produces MongoDB Canonical Extended JSON v2. - BSON read/write support by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2518](https://github.com/stephenberry/glaze/pull/2518) #### Faster Float Writing `glz::to_chars` for floats now uses a header-only port of [Victor Zverovich's zmij](https://github.com/vitaut/zmij) (Schubfach + xjb) in place of dragonbox. - **\~2.7× faster** than dragonbox on random finite doubles, **\~3× faster** on floats. - The size-optimized path (`OptSize=true`) is **\~4–8× faster** than the previous `simple_float::to_chars` at roughly the same footprint. - Side-effect bugfix: `simple_float::from_chars` no longer hits a 1-ULP rounding miss on platforms where `long double` aliases `double` (ARM64 macOS, MSVC). Full exhaustive sweep over all 4,278,190,080 finite `float` values round-trips exactly. - Replace dragonbox with zmij by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2528](https://github.com/stephenberry/glaze/pull/2528) #### Struct Flattening with `glz::merge` `glz::merge` now works inside `glz::meta` with member pointers, enabling both reading and writing of composite structs as flat JSON objects. ```cpp struct Species { std::string name{}; int legs{}; }; struct Appearance { double weight{}; std::string color{}; }; struct BearRecord { Species species{}; Appearance appearance{}; }; template <> struct glz::meta<BearRecord> { using T = BearRecord; static constexpr auto value = glz::merge{&T::species, &T::appearance}; }; // Reads and writes as: {"name":"Grizzly","legs":4,"weight":300.5,"color":"brown"} ``` Sub-types can be either `glaze_object_t` (with custom key names) or `reflectable` (automatic reflection), and any number of sub-structs can be merged. Implemented entirely at the `reflect<T>` layer, so JSON, BEVE, YAML, CBOR, and other formats all pick it up automatically. - `glz::merge` support for aggregate structs by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2503](https://github.com/stephenberry/glaze/pull/2503) #### `flatten_map` Wrapper A new `glz::flatten_map` wrapper serializes map-like containers as flat arrays of the form `[key elements..., mapped value, ...]`, supporting fixed-size keys (`std::pair`, tuples, Glaze arrays, `std::array`) for both reading and writing. ```cpp std::unordered_map<std::pair<int, int>, std::string, pair_hash> map; map[{1, 2}] = "example"; std::string out; glz::write_json(glz::flatten_map_wrapper{map}, out); // out == R"([1,2,"example"])" ``` Usable both inside `glz::meta` via member pointer (`glz::flatten_map<&T::m>`) and as a top-level CTAD wrapper (`glz::flatten_map_wrapper{map}`). - `flatten_map` wrapper by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2412](https://github.com/stephenberry/glaze/pull/2412) - `flatten_map_wrapper` top-level wrapping via CTAD by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2526](https://github.com/stephenberry/glaze/pull/2526) #### Improvements - Cross-format `skip_null_members` honored by JSONB, CBOR, MsgPack, and BEVE map writers, matching the existing struct-writer behavior by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2518](https://github.com/stephenberry/glaze/pull/2518) - Remove force inlining for YAML and TOML to improve compile times and reduce binary size by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2517](https://github.com/stephenberry/glaze/pull/2517) #### Fixes - Named enum map keys: reading a `std::map` keyed by an enum declared with the `keys` + `value` array form of `glz::meta` no longer fails with `expected_quote` by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2523](https://github.com/stephenberry/glaze/pull/2523) - `jsonb_to_json` now emits `9e999` / `-9e999` for `±Infinity` (matching SQLite's `json()` convention) instead of `null`. `NaN` continues to map to `null`. Documentation also clarifies that 64-bit integer / `binary64` float ranges are a Glaze implementation constraint, not a SQLite spec limit by [@&#8203;stephenberry](https://github.com/stephenberry) in [#&#8203;2521](https://github.com/stephenberry/glaze/pull/2521) **Full Changelog**: <https://github.com/stephenberry/glaze/compare/v7.4.0...v7.5.0> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTAuMCIsInVwZGF0ZWRJblZlciI6IjQzLjE1MC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Update dependency stephenberry/glaze to v7.5.0
All checks were successful
ci/woodpecker/push/glaze Pipeline was successful
5e08e18915
Bluemedia deleted branch renovate/stephenberry-glaze-7.x 2026-04-29 09:07:18 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Bluemedia/desktop-environment-rpms!86
No description provided.