From 5d16fd5f3185452b8d9fc7503966754354a01688 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Fri, 12 Dec 2025 17:51:39 -0500 Subject: [PATCH] 4.2.3 --- CMakeLists.txt | 2 +- Doxyfile | 2 +- include/simdjson/dom/parser.h | 2 +- include/simdjson/simdjson_version.h | 4 +-- singleheader/simdjson.cpp | 16 ++++------ singleheader/simdjson.h | 45 +++++++++++++--------------- singleheader/singleheader.zip | Bin 8811672 -> 8811967 bytes 7 files changed, 31 insertions(+), 40 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a794ec09c..7ae2fa382 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.14) project( simdjson # The version number is modified by tools/release.py - VERSION 4.2.2 + VERSION 4.2.3 DESCRIPTION "Parsing gigabytes of JSON per second" HOMEPAGE_URL "https://simdjson.org/" LANGUAGES CXX C diff --git a/Doxyfile b/Doxyfile index a6bac3ed9..4112fe85a 100644 --- a/Doxyfile +++ b/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = simdjson # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "4.2.2" +PROJECT_NUMBER = "4.2.3" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/include/simdjson/dom/parser.h b/include/simdjson/dom/parser.h index cb81db3fa..6fa461b81 100644 --- a/include/simdjson/dom/parser.h +++ b/include/simdjson/dom/parser.h @@ -204,7 +204,7 @@ public: * * ### std::string references * - * 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. diff --git a/include/simdjson/simdjson_version.h b/include/simdjson/simdjson_version.h index 4e4cea7ec..03ca42b37 100644 --- a/include/simdjson/simdjson_version.h +++ b/include/simdjson/simdjson_version.h @@ -4,7 +4,7 @@ #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 { @@ -19,7 +19,7 @@ enum { /** * The revision (major.minor.REVISION) of simdjson being used. */ - SIMDJSON_VERSION_REVISION = 2 + SIMDJSON_VERSION_REVISION = 3 }; } // namespace simdjson diff --git a/singleheader/simdjson.cpp b/singleheader/simdjson.cpp index 26189259f..687d98cd2 100644 --- a/singleheader/simdjson.cpp +++ b/singleheader/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/singleheader/simdjson.h b/singleheader/simdjson.h index d96b9734f..2b9af4306 100644 --- a/singleheader/simdjson.h +++ b/singleheader/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 @@ public: * * ### 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 @@ public: /** @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 @@ public: #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 @@ public: #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 @@ public: #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 @@ public: #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 @@ public: #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 @@ public: #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 @@ public: #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 @@ public: #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); diff --git a/singleheader/singleheader.zip b/singleheader/singleheader.zip index 737cf7261a0286e7fa7ed165c7cd1f1922739a2e..6a71b16c2cdda3213011cdf2933165ea4a602b57 100644 GIT binary patch delta 1487 zcmZwHYfM{Z7zc1pDU`Cc9vKrhZfCespeyvcZl%zRLuEKDI9weFYiTK$QEn|8W6*YP zJ#pEVGL5g(7-rl@$;JnH>z9pa7BBsP#xEMwV2CDe#;92qLX7%vQBxS_xzu9ov~CQen8&Ecjtb;ZmnJ)DvAB$g^& zfo_Fj<2q;N$2NH|MyfW)!{LH?px0O=rv49El#WPup6VH<1*2}t2FVBvAd zfgO+wJK+h)gM8QpyP*IIp$Lkh1UT3OrSK%|r5DArcMa0SjMV+_eXr9w({ws=&?-}G zIi_i^oS(JI=&ZHus+Q4GOQ5WeVYH-qvR}n7jg`@*G5OUHDO{Bs(g&R5^tz>9BB1Uy z`6rp=9#bwMKO8B_Bg;1{SQ28(rF@hrhYF|!1?&SQR6#YUKn)tuf)4bs9}I8+4uTPC zXp}L186wR7ky56GghM7deP^a#xt;uZ#Z*kpQB#;$?%9MS=nZ_HjPZy;E!2S-EMTSP zs4b@`nMlx5$2ZT~;3?WXd#LP>)bu>k!_)8#JPQqQ7-bv#wEsPi=WHLc{K85jJO@YU z!b;PFy3|bnHu}r&b}`RZKM!_jh8B1Mj#9R|_2}M>Nl9o~Y$8M2iJiR9-3l+lG3s+W z?$&RS{*wQ=_>Gw3t&}k&LXnsw5_>5UJ06L(MPlud*vs>=j+N3)rP$T>^-=_-4iWZp zhlpHXZC8+6A5H8ai?2B}guP>HNZg4?=j)D}bn(Z=p9F;cTaruaz8>C2*^g~Ew+$Dg9p07OK)p?T8lSzc&jbPm>fp3L%y@C2YR88 zc6RkMuWnK3+XqA0M77rccFIT+F&;5E2?OARK^UT{wc!QXrn)D-*`+66-0yJmX7vb+ zf}fhzfu@Q_OY+Oz0T_c*a2m$p3|;P?_%45QX0||;%uN0|JuV_MXZ`yULl%>v-)tG= zvtJ9PWcmG51&L1}<%81`a26(MaC+*l;?d%yAwE?^O5#(Y|KB%G4#%eodBh+HAqc}c zc!ie4&+B(@>MA-{tX_ZLnTO};%)<+lladYFEUEBEl(vn#iZd-cxgW1zZiJVxACLA9 axcf#2eN{d7#*ECwiU8*behq;LuKxh~VKX!U delta 1455 zcma*nUrbw790zbHAP0dN{2v_IfhZMQMp+x-WdPwBxJ0Yi>i@+Q-Efz13{B3Rb(zTH}(O zf?0A%l0_H{_Vst4>k;f0o5jZ5^#*Zlf=;C0o>0wZd%8P>@}N*FNEO16R=^Py>I8Fe zPx60dd!)l;LP0c(iOPr&Jlh}q@5W~rO{t4)JV)hZ_i|JuLzG1JK%**WQyNuXej+1` z46Bq#VZ9oaDEl-j$N)8DLKb904ro9NxsV52ARnFs9c+aHD1;(-9=1U-Y=;+M2keAh zPy(g!A_!0hdUy$5=01(#N=<&EnLqy_PA%H}X^S@Yr`urqAN`ckPwuWaep{`w>977` zE#?IgAGI}P zvYEg4nI_|&Lbe*Jl_qC=TV?N^2H4NNcV0VoKba#V2VRFa;7vFH2a)dyRVx$R{reqE z7ijUb8@&gsV{uO`ekc}i`X>ICX|H0)Y{ha|U_y7KlKG^=$C=yS{?oIXj2d|12polG zc$@pAme2IcI4R~WW2e8{wlg^^8MA_8@D8sEwBBn}Mn1Z5Lc`2+t;MO_C#T+2_>)t` zRT($KaX0}d;S~6|d9H1G(=fia=e$6t9x6 zbw*$iF2MWn0er}>bq@W$J^25E^Bu@9b-(#7JhI#6(6_xw@W!}^}(o^Y)^FkvYL6D^||c+Eu!cV>O8tm ozaQSRX>(=XNX#s3-Xi>I+T<>r`uTjUte#zu#CB!r24X1v3xUTw5C8xG