Releases: stephenberry/glaze
v3.3.4
Experimental glz::repe::registry
reworking of locking logic by @stephenberry in #1290
This makes the registry locking logic behave the same for reading and writing. This limits reading a bit more by not allowing asynchronous reads to the exact same field, but it makes asynchronous writing possible, and keeps the locking logic simpler. We can now asynchronously write to differing targets, and importantly we can call asynchronous invocations.
We are removing automatic invoke locking. With variables, there is no place for a user to put logic when it comes to locking/unlocking access. However, when it comes to functions, there is room for users to add mutexes and locks to customize lock behavior. Also, functions often have complex side effects that need to be known to the programmer. On top of this, if we don't manipulate references in an RPC, we'd like the default behavior to be able to asynchronously call these functions. For these reasons we don't automatically lock the path taken to the function call. Because we also don't want to assume that a function call would manipulate the returned state of a data, which would block reads to the data.
Full Changelog: v3.3.3...v3.3.4
v3.3.3
32-bit support
Many thanks to @Bolderaysky for fixing build issues with 32-bit and adding GitHub Action runners to the CI pipeline so that 32-bit support can be maintained. #1287
Fixes
- Fixed error propagation when parsing arrays in
glz::beve_to_json
by @stephenberry in #1289 - Thanks @pauldreik for reporting
Full Changelog: v3.3.2...v3.3.3
v3.3.2
Fixes
- Fixed key parsing issue with variant object reading of unknown keys by @stephenberry in #1283
- Fixed Apple clang precompiled headers due to std::filesystem::path hashing in #1284
Full Changelog: v3.3.1...v3.3.2
v3.3.1
Fixes
- Fixed lvalue lambda compilation error in corner cases within
glz::meta
in #1270 - Better validation and excluding trailing whitespace for
get_sv_json
in #1271 - Additional optional guard to fix compilation on the latest version of MSVC in #1273
Full Changelog: v3.3.0...v3.3.1
v3.3.0
Non-null terminated buffers!
JSON
Non-null terminated buffer reading when using glz::read<glz::opts{.null_terminated = false}>
.
In order to not introduce any breaking changes glz::read_json
(using default glz::opts
) has null_terminated = true
.
The default behavior requires null termination for maximum performance.
glz::prettify_json
and glz::minify_json
also support non-null terminated buffers.
BEVE (binary)
For BEVE we don't care whether a buffer is null terminated anymore, we just always handle the data as if it is not, because we wouldn't get significant performance improvements like we do with JSON. The reason is that a null character is valid binary so we can't make decisions on this value.
What's Changed
- Support for non-null terminated buffers when parsing JSON and BEVE by @stephenberry in #1262
Full Changelog: v3.2.6...v3.3.0
v3.2.6
Minor Breaking Improvement
- Glaze's pair concept is now more restrictive and requires the member types
first_type
andsecond_type
. This prevents normal structs with keys namedfirst
andsecond
from being misinterpreted as a pair.
by @stephenberry in #1267
Fixes
- Fixed explicit (non sequenced) enum writing by @stephenberry in #1269
Full Changelog: v3.2.5...v3.2.6
v3.2.5
More hashing optimizations for special cases
- Longer front hash algorithms (uint32_t and uint64_t) by @stephenberry in #1259
- Three element hash optimization by @stephenberry in #1260
Minor Improvements
- glaze_BUILD_EXAMPLES rename for proper grouping in CMake
Full Changelog: v3.2.4...v3.2.5
v3.2.4
Improvements
- More hashing performance improvements for JSON reading
- Optimized and reduced resulting hashing binary for objects with only two elements
- Full, flat hashing using new jump tables for faster read performance
Full Changelog: v3.2.3...v3.2.4
v3.2.3
Improvements
- Faster hashing/read performance in JSON for objects with similar keys using the new jump table approach, by @stephenberry in #1253
- Fixed more MSVC warnings
Full Changelog: v3.2.2...v3.2.3
v3.2.2
Improvements
- Faster floating point read performance by @stephenberry in #1251
- Using
[[msvc::forceinline]]
where appropriate on MSVC in #1250 - Using new hash map approach for internal enum reading in #1252
Full Changelog: v3.2.1...v3.2.2