diff --git a/README.md b/README.md index a12f205..98e345a 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ A basic Lua binding to [simdjson](https://simdjson.org). The simdjson library is an incredibly fast JSON parser that uses SIMD instructions and fancy algorithms to parse JSON very quickly. It's been tested with LuaJIT 2.0/2.1 and Lua 5.1, 5.2, 5.3, and 5.4 on linux/osx/windows. It has a general parsing mode and a lazy mode that uses a JSON pointer. -Current simdjson version: 4.2.2 +Current simdjson version: 4.2.3 ## Installation If all the requirements are met, lua-simdjson can be install via luarocks with: diff --git a/src/simdjson.cpp b/src/simdjson.cpp index 2618925..687d98c 100644 --- a/src/simdjson.cpp +++ b/src/simdjson.cpp @@ -1,4 +1,4 @@ -/* auto-generated on 2025-11-11 14:17:08 -0500. version 4.2.2 Do not edit! */ +/* auto-generated on 2025-12-12 17:50:52 -0500. version 4.2.3 Do not edit! */ /* including simdjson.cpp: */ /* begin file simdjson.cpp */ #define SIMDJSON_SRC_SIMDJSON_CPP @@ -4047,20 +4047,14 @@ void grisu2(char *buf, int &len, int &decimal_exponent, FloatType value) { */ inline char *append_exponent(char *buf, int e) { - if (e < 0) { - e = -e; - *buf++ = '-'; - } else { - *buf++ = '+'; - } + bool isNegative = e < 0; + e = isNegative ? -e : e; + *buf++ = isNegative ? '-' : '+'; auto k = static_cast(e); - if (k < 10) { + if (k < 100) { // Always print at least two digits in the exponent. // This is for compatibility with printf("%g"). - *buf++ = '0'; - *buf++ = static_cast('0' + k); - } else if (k < 100) { *buf++ = static_cast('0' + k / 10); k %= 10; *buf++ = static_cast('0' + k); diff --git a/src/simdjson.h b/src/simdjson.h index d96b973..2b9af43 100644 --- a/src/simdjson.h +++ b/src/simdjson.h @@ -1,4 +1,4 @@ -/* auto-generated on 2025-11-11 14:17:08 -0500. version 4.2.2 Do not edit! */ +/* auto-generated on 2025-12-12 17:50:52 -0500. version 4.2.3 Do not edit! */ /* including simdjson.h: */ /* begin file simdjson.h */ #ifndef SIMDJSON_H @@ -2513,7 +2513,7 @@ namespace std { #define SIMDJSON_SIMDJSON_VERSION_H /** The version of simdjson being used (major.minor.revision) */ -#define SIMDJSON_VERSION "4.2.2" +#define SIMDJSON_VERSION "4.2.3" namespace simdjson { enum { @@ -2528,7 +2528,7 @@ enum { /** * The revision (major.minor.REVISION) of simdjson being used. */ - SIMDJSON_VERSION_REVISION = 2 + SIMDJSON_VERSION_REVISION = 3 }; } // namespace simdjson @@ -5387,10 +5387,7 @@ class parser { * * ### std::string references * - * If you pass a mutable std::string reference (std::string&), the parser will seek to extend - * its capacity to SIMDJSON_PADDING bytes beyond the end of the string. - * - * Whenever you pass an std::string reference, the parser will access the bytes beyond the end of + * Whenever you pass an std::string reference, the parser may access the bytes beyond the end of * the string but before the end of the allocated memory (std::string::capacity()). * If you are using a sanitizer that checks for reading uninitialized bytes or std::string's * container-overflow checks, you may encounter sanitizer warnings. @@ -5422,7 +5419,7 @@ class parser { /** @overload parse(const uint8_t *buf, size_t len, bool realloc_if_needed) */ simdjson_inline simdjson_result parse(const char *buf, size_t len, bool realloc_if_needed = true) & noexcept; simdjson_inline simdjson_result parse(const char *buf, size_t len, bool realloc_if_needed = true) && =delete; - /** @overload parse(const uint8_t *buf, size_t len, bool realloc_if_needed) */ + /** @overload parse(const std::string &) */ simdjson_inline simdjson_result parse(const std::string &s) & noexcept; simdjson_inline simdjson_result parse(const std::string &s) && =delete; /** @overload parse(const uint8_t *buf, size_t len, bool realloc_if_needed) */ @@ -37312,7 +37309,7 @@ class string_builder { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -46953,7 +46950,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range); @@ -51777,7 +51774,7 @@ class string_builder { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -61418,7 +61415,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range); @@ -66741,7 +66738,7 @@ class string_builder { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -76382,7 +76379,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range); @@ -81705,7 +81702,7 @@ class string_builder { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -91346,7 +91343,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range); @@ -96784,7 +96781,7 @@ class string_builder { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -106425,7 +106422,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range); @@ -112179,7 +112176,7 @@ class string_builder { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -121820,7 +121817,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range); @@ -127051,7 +127048,7 @@ class string_builder { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -136692,7 +136689,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range); @@ -141936,7 +141933,7 @@ class string_builder { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -151577,7 +151574,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range);