Skip to content

Commit 5bfa0b0

Browse files
authored
patch release 3.11.3 (simdjson#2313)
* preparing patch release 3.11.3
1 parent f7ba9cb commit 5bfa0b0

File tree

11 files changed

+134
-29
lines changed

11 files changed

+134
-29
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.14)
33
project(
44
simdjson
55
# The version number is modified by tools/release.py
6-
VERSION 3.11.2
6+
VERSION 3.11.3
77
DESCRIPTION "Parsing gigabytes of JSON per second"
88
HOMEPAGE_URL "https://simdjson.org/"
99
LANGUAGES CXX C

Doxyfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ PROJECT_NAME = simdjson
3838
# could be handy for archiving the generated documentation or if some version
3939
# control system is used.
4040

41-
PROJECT_NUMBER = "3.11.2"
41+
PROJECT_NUMBER = "3.11.3"
4242

4343
# Using the PROJECT_BRIEF tag one can provide an optional one line description
4444
# for a project that appears at the top of each page and should give viewer a

doc/basics.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Requirements
4848
------------------
4949

5050
- A recent compiler (LLVM clang 6 or better, GNU GCC 7.4 or better, Xcode 11 or better) on a 64-bit (PPC, ARM or x64 Intel/AMD) POSIX systems such as macOS, freeBSD or Linux. We require that the compiler supports the C++11 standard or better.
51-
- Visual Studio 2017 or better under 64-bit Windows. Users should target a 64-bit build (x64 or ARM64) instead of a 32-bit build (x86). We support the LLVM clang compiler under Visual Studio (clangcl) as well as as the regular Visual Studio compiler. We also support MinGW 64-bit under Windows.
51+
- Visual Studio 2017 or better under 64-bit Windows. Users should target a 64-bit build (x64 or ARM64) instead of a 32-bit build (x86). We support the LLVM clang compiler under Visual Studio (clang-cl) as well as as the regular Visual Studio compiler. For better release performance (both compile time and execution time), we recommend Visual Studio users adopt LLVM (clang-cl). We also support MinGW 64-bit under Windows.
5252

5353

5454
Support for AVX-512 require a processor with AVX512-VBMI2 support (Ice Lake or better, AMD Zen 4 or better) under a 64-bit system and a recent compiler (LLVM clang 6 or better, GCC 8 or better, Visual Studio 2019 or better). You need a correspondingly recent assembler such as gas (2.30+) or nasm (2.14+): recent compilers usually come with recent assemblers. If you mix a recent compiler with an incompatible/old assembler (e.g., when using a recent compiler with an old Linux distribution), you may get errors at build time because the compiler produces instructions that the assembler does not recognize: you should update your assembler to match your compiler (e.g., upgrade binutils to version 2.30 or better under Linux) or use an older compiler matching the capabilities of your assembler.

doc/ondemand_design.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ or indexing (`object["key"]`). In some cases, the values are even deserialized d
102102
maps.
103103

104104
The DOM approach is conceptually simple and "programmer friendly". Using the
105-
DOM tree is often easy enough that many users use the DOM as-is instead of creating
105+
DOM tree is often easy enough that many users process the DOM as-is instead of creating
106106
their own custom data structures.
107107

108108
The DOM approach was the only way to parse JSON documents up to version 0.6 of the simdjson library.

doc/performance.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,9 @@ On Intel and AMD Windows platforms, Microsoft Visual Studio enables programmers
158158

159159
When compiling with Visual Studio, we recommend the flags `/Ob2 /O2` or better. We do not recommend that you compile simdjson with architecture-specific flags such as `arch:AVX2`. The simdjson library automatically selects the best execution kernel at runtime.
160160

161-
Recent versions of Microsoft Visual Studio on Windows provides support for the LLVM Clang compiler. You only need to install the "Clang compiler" optional component (ClangCL). You may also get a copy of the 64-bit LLVM CLang compiler for [Windows directly from LLVM](https://releases.llvm.org/download.html). The simdjson library fully supports the LLVM Clang compiler under Windows. In fact, you may get better performance out of simdjson with the LLVM Clang compiler than with the regular Visual Studio compiler. Meanwhile the [LLVM CLang compiler is binary compatible with Visual Studio](https://clang.llvm.org/docs/MSVCCompatibility.html) which means that you can combine their binaries (executables and libraries).
161+
Recent versions of Microsoft Visual Studio on Windows provides support for the LLVM Clang compiler. You only need to install the "Clang compiler" optional component (clang-cl). You may also get a copy of the 64-bit LLVM CLang compiler for [Windows directly from LLVM](https://releases.llvm.org/download.html). The simdjson library fully supports the LLVM Clang compiler under Windows. In fact, you may get better performance out of simdjson with the LLVM Clang compiler than with the regular Visual Studio compiler. Meanwhile the [LLVM CLang compiler is binary compatible with Visual Studio](https://clang.llvm.org/docs/MSVCCompatibility.html) which means that you can combine their binaries (executables and libraries).
162+
163+
We recommend Visual Studio users prefer LLVM (clang-cl). It compiles to faster release binaries. Furthermore, it compilers faster in release mode.
162164

163165
Under Windows, we also support the GNU GCC compiler via MSYS2. The performance of 64-bit MSYS2 under Windows is excellent (on par with Linux).
164166

include/simdjson/compiler_check.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@
5656
#endif
5757
#endif
5858

59-
#ifdef __cpp_concepts
59+
#if defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
6060
#include <utility>
6161
#define SIMDJSON_SUPPORTS_DESERIALIZATION 1
62-
#else // __cpp_concepts
62+
#else // defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
6363
#define SIMDJSON_SUPPORTS_DESERIALIZATION 0
64-
#endif
64+
#endif // defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
65+
6566
#endif // SIMDJSON_COMPILER_CHECK_H

include/simdjson/generic/ondemand/document-inl.h

+10-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
246246
}
247247

248248
simdjson_inline error_code document::consume() noexcept {
249-
auto error = iter.skip_child(0);
249+
bool scalar = false;
250+
auto error = is_scalar().get(scalar);
251+
if(error) { return error; }
252+
if(scalar) {
253+
iter.return_current_and_advance();
254+
return SUCCESS;
255+
}
256+
error = iter.skip_child(0);
250257
if(error) { iter.abandon(); }
251258
return error;
252259
}
@@ -268,6 +275,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
268275
}
269276

270277
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
278+
// For more speed, we could do:
279+
// return iter.is_single_token();
271280
json_type this_type;
272281
auto error = type().get(this_type);
273282
if(error) { return error; }

include/simdjson/simdjson_version.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#define SIMDJSON_SIMDJSON_VERSION_H
55

66
/** The version of simdjson being used (major.minor.revision) */
7-
#define SIMDJSON_VERSION "3.11.2"
7+
#define SIMDJSON_VERSION "3.11.3"
88

99
namespace simdjson {
1010
enum {
@@ -19,7 +19,7 @@ enum {
1919
/**
2020
* The revision (major.minor.REVISION) of simdjson being used.
2121
*/
22-
SIMDJSON_VERSION_REVISION = 2
22+
SIMDJSON_VERSION_REVISION = 3
2323
};
2424
} // namespace simdjson
2525

singleheader/simdjson.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* auto-generated on 2024-12-09 21:36:12 -0500. Do not edit! */
1+
/* auto-generated on 2024-12-12 10:37:26 -0500. Do not edit! */
22
/* including simdjson.cpp: */
33
/* begin file simdjson.cpp */
44
#define SIMDJSON_SRC_SIMDJSON_CPP
@@ -83,12 +83,13 @@
8383
#endif
8484
#endif
8585

86-
#ifdef __cpp_concepts
86+
#if defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
8787
#include <utility>
8888
#define SIMDJSON_SUPPORTS_DESERIALIZATION 1
89-
#else // __cpp_concepts
89+
#else // defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
9090
#define SIMDJSON_SUPPORTS_DESERIALIZATION 0
91-
#endif
91+
#endif // defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
92+
9293
#endif // SIMDJSON_COMPILER_CHECK_H
9394
/* end file simdjson/compiler_check.h */
9495
/* including simdjson/portability.h: #include "simdjson/portability.h" */

singleheader/simdjson.h

+87-14
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* auto-generated on 2024-12-09 21:36:12 -0500. Do not edit! */
1+
/* auto-generated on 2024-12-12 10:37:26 -0500. Do not edit! */
22
/* including simdjson.h: */
33
/* begin file simdjson.h */
44
#ifndef SIMDJSON_H
@@ -103,12 +103,13 @@
103103
#endif
104104
#endif
105105

106-
#ifdef __cpp_concepts
106+
#if defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
107107
#include <utility>
108108
#define SIMDJSON_SUPPORTS_DESERIALIZATION 1
109-
#else // __cpp_concepts
109+
#else // defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
110110
#define SIMDJSON_SUPPORTS_DESERIALIZATION 0
111-
#endif
111+
#endif // defined(__cpp_concepts) && !defined(SIMDJSON_CONCEPT_DISABLED)
112+
112113
#endif // SIMDJSON_COMPILER_CHECK_H
113114
/* end file simdjson/compiler_check.h */
114115
/* including simdjson/portability.h: #include "simdjson/portability.h" */
@@ -2420,7 +2421,7 @@ namespace std {
24202421
#define SIMDJSON_SIMDJSON_VERSION_H
24212422

24222423
/** The version of simdjson being used (major.minor.revision) */
2423-
#define SIMDJSON_VERSION "3.11.2"
2424+
#define SIMDJSON_VERSION "3.11.3"
24242425

24252426
namespace simdjson {
24262427
enum {
@@ -2435,7 +2436,7 @@ enum {
24352436
/**
24362437
* The revision (major.minor.REVISION) of simdjson being used.
24372438
*/
2438-
SIMDJSON_VERSION_REVISION = 2
2439+
SIMDJSON_VERSION_REVISION = 3
24392440
};
24402441
} // namespace simdjson
24412442

@@ -38216,7 +38217,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
3821638217
}
3821738218

3821838219
simdjson_inline error_code document::consume() noexcept {
38219-
auto error = iter.skip_child(0);
38220+
bool scalar = false;
38221+
auto error = is_scalar().get(scalar);
38222+
if(error) { return error; }
38223+
if(scalar) {
38224+
iter.return_current_and_advance();
38225+
return SUCCESS;
38226+
}
38227+
error = iter.skip_child(0);
3822038228
if(error) { iter.abandon(); }
3822138229
return error;
3822238230
}
@@ -38238,6 +38246,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
3823838246
}
3823938247

3824038248
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
38249+
// For more speed, we could do:
38250+
// return iter.is_single_token();
3824138251
json_type this_type;
3824238252
auto error = type().get(this_type);
3824338253
if(error) { return error; }
@@ -49180,7 +49190,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
4918049190
}
4918149191

4918249192
simdjson_inline error_code document::consume() noexcept {
49183-
auto error = iter.skip_child(0);
49193+
bool scalar = false;
49194+
auto error = is_scalar().get(scalar);
49195+
if(error) { return error; }
49196+
if(scalar) {
49197+
iter.return_current_and_advance();
49198+
return SUCCESS;
49199+
}
49200+
error = iter.skip_child(0);
4918449201
if(error) { iter.abandon(); }
4918549202
return error;
4918649203
}
@@ -49202,6 +49219,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
4920249219
}
4920349220

4920449221
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
49222+
// For more speed, we could do:
49223+
// return iter.is_single_token();
4920549224
json_type this_type;
4920649225
auto error = type().get(this_type);
4920749226
if(error) { return error; }
@@ -60636,7 +60655,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
6063660655
}
6063760656

6063860657
simdjson_inline error_code document::consume() noexcept {
60639-
auto error = iter.skip_child(0);
60658+
bool scalar = false;
60659+
auto error = is_scalar().get(scalar);
60660+
if(error) { return error; }
60661+
if(scalar) {
60662+
iter.return_current_and_advance();
60663+
return SUCCESS;
60664+
}
60665+
error = iter.skip_child(0);
6064060666
if(error) { iter.abandon(); }
6064160667
return error;
6064260668
}
@@ -60658,6 +60684,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
6065860684
}
6065960685

6066060686
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
60687+
// For more speed, we could do:
60688+
// return iter.is_single_token();
6066160689
json_type this_type;
6066260690
auto error = type().get(this_type);
6066360691
if(error) { return error; }
@@ -72085,7 +72113,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
7208572113
}
7208672114

7208772115
simdjson_inline error_code document::consume() noexcept {
72088-
auto error = iter.skip_child(0);
72116+
bool scalar = false;
72117+
auto error = is_scalar().get(scalar);
72118+
if(error) { return error; }
72119+
if(scalar) {
72120+
iter.return_current_and_advance();
72121+
return SUCCESS;
72122+
}
72123+
error = iter.skip_child(0);
7208972124
if(error) { iter.abandon(); }
7209072125
return error;
7209172126
}
@@ -72107,6 +72142,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
7210772142
}
7210872143

7210972144
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
72145+
// For more speed, we could do:
72146+
// return iter.is_single_token();
7211072147
json_type this_type;
7211172148
auto error = type().get(this_type);
7211272149
if(error) { return error; }
@@ -83655,7 +83692,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
8365583692
}
8365683693

8365783694
simdjson_inline error_code document::consume() noexcept {
83658-
auto error = iter.skip_child(0);
83695+
bool scalar = false;
83696+
auto error = is_scalar().get(scalar);
83697+
if(error) { return error; }
83698+
if(scalar) {
83699+
iter.return_current_and_advance();
83700+
return SUCCESS;
83701+
}
83702+
error = iter.skip_child(0);
8365983703
if(error) { iter.abandon(); }
8366083704
return error;
8366183705
}
@@ -83677,6 +83721,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
8367783721
}
8367883722

8367983723
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
83724+
// For more speed, we could do:
83725+
// return iter.is_single_token();
8368083726
json_type this_type;
8368183727
auto error = type().get(this_type);
8368283728
if(error) { return error; }
@@ -95542,7 +95588,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
9554295588
}
9554395589

9554495590
simdjson_inline error_code document::consume() noexcept {
95545-
auto error = iter.skip_child(0);
95591+
bool scalar = false;
95592+
auto error = is_scalar().get(scalar);
95593+
if(error) { return error; }
95594+
if(scalar) {
95595+
iter.return_current_and_advance();
95596+
return SUCCESS;
95597+
}
95598+
error = iter.skip_child(0);
9554695599
if(error) { iter.abandon(); }
9554795600
return error;
9554895601
}
@@ -95564,6 +95617,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
9556495617
}
9556595618

9556695619
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
95620+
// For more speed, we could do:
95621+
// return iter.is_single_token();
9556795622
json_type this_type;
9556895623
auto error = type().get(this_type);
9556995624
if(error) { return error; }
@@ -106906,7 +106961,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
106906106961
}
106907106962

106908106963
simdjson_inline error_code document::consume() noexcept {
106909-
auto error = iter.skip_child(0);
106964+
bool scalar = false;
106965+
auto error = is_scalar().get(scalar);
106966+
if(error) { return error; }
106967+
if(scalar) {
106968+
iter.return_current_and_advance();
106969+
return SUCCESS;
106970+
}
106971+
error = iter.skip_child(0);
106910106972
if(error) { iter.abandon(); }
106911106973
return error;
106912106974
}
@@ -106928,6 +106990,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
106928106990
}
106929106991

106930106992
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
106993+
// For more speed, we could do:
106994+
// return iter.is_single_token();
106931106995
json_type this_type;
106932106996
auto error = type().get(this_type);
106933106997
if(error) { return error; }
@@ -118283,7 +118347,14 @@ simdjson_inline simdjson_result<value> document::operator[](const char *key) & n
118283118347
}
118284118348

118285118349
simdjson_inline error_code document::consume() noexcept {
118286-
auto error = iter.skip_child(0);
118350+
bool scalar = false;
118351+
auto error = is_scalar().get(scalar);
118352+
if(error) { return error; }
118353+
if(scalar) {
118354+
iter.return_current_and_advance();
118355+
return SUCCESS;
118356+
}
118357+
error = iter.skip_child(0);
118287118358
if(error) { iter.abandon(); }
118288118359
return error;
118289118360
}
@@ -118305,6 +118376,8 @@ simdjson_inline simdjson_result<json_type> document::type() noexcept {
118305118376
}
118306118377

118307118378
simdjson_inline simdjson_result<bool> document::is_scalar() noexcept {
118379+
// For more speed, we could do:
118380+
// return iter.is_single_token();
118308118381
json_type this_type;
118309118382
auto error = type().get(this_type);
118310118383
if(error) { return error; }

0 commit comments

Comments
 (0)