mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 797e61742c | |||
| f289412e0a | |||
| 7bd79b4445 | |||
| 078e2c9073 | |||
| d7b6b20511 | |||
| dbea3bbd62 |
+1
-1
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.14)
|
||||
project(
|
||||
simdjson
|
||||
# The version number is modified by tools/release.py
|
||||
VERSION 3.12.0
|
||||
VERSION 3.12.2
|
||||
DESCRIPTION "Parsing gigabytes of JSON per second"
|
||||
HOMEPAGE_URL "https://simdjson.org/"
|
||||
LANGUAGES CXX C
|
||||
|
||||
@@ -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 = "3.12.0"
|
||||
PROJECT_NUMBER = "3.12.2"
|
||||
|
||||
# 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
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
|
||||
[/badge.svg)](https://simdjson.org/plots.html)
|
||||
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:simdjson)
|
||||
[![][license img]][license] [![][licensemit img]][licensemit]
|
||||
|
||||
@@ -63,6 +62,8 @@ Real-world usage
|
||||
- [ada-url](https://github.com/ada-url/ada)
|
||||
- [fastgron](https://github.com/adamritter/fastgron)
|
||||
- [WasmEdge](https://wasmedge.org)
|
||||
- [RonDB](https://github.com/logicalclocks/rondb)
|
||||
|
||||
|
||||
If you are planning to use simdjson in a product, please work from one of our releases.
|
||||
|
||||
|
||||
@@ -148,14 +148,18 @@ namespace simd {
|
||||
|
||||
// Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
|
||||
// Passing a 0 value for mask would be equivalent to writing out every byte to output.
|
||||
// Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
|
||||
// Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
|
||||
// get written.
|
||||
// Design consideration: it seems like a function with the
|
||||
// signature simd8<L> compress(uint32_t mask) would be
|
||||
// sensible, but the AVX ISA makes this kind of approach difficult.
|
||||
template<typename L>
|
||||
simdjson_inline void compress(uint64_t mask, L * output) const {
|
||||
_mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
// we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
|
||||
// (AMD Zen4 has terrible performance with it, it is effectively broken)
|
||||
// _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
__m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
|
||||
_mm512_storeu_si512(output, compressed); // could use a mask
|
||||
}
|
||||
|
||||
template<typename L>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#define SIMDJSON_SIMDJSON_VERSION_H
|
||||
|
||||
/** The version of simdjson being used (major.minor.revision) */
|
||||
#define SIMDJSON_VERSION "3.12.0"
|
||||
#define SIMDJSON_VERSION "3.12.2"
|
||||
|
||||
namespace simdjson {
|
||||
enum {
|
||||
@@ -19,7 +19,7 @@ enum {
|
||||
/**
|
||||
* The revision (major.minor.REVISION) of simdjson being used.
|
||||
*/
|
||||
SIMDJSON_VERSION_REVISION = 0
|
||||
SIMDJSON_VERSION_REVISION = 2
|
||||
};
|
||||
} // namespace simdjson
|
||||
|
||||
|
||||
@@ -441,6 +441,22 @@ if SCRIPTPATH != AMALGAMATE_OUTPUT_PATH:
|
||||
shutil.copy2(os.path.join(SCRIPTPATH,"amalgamate_demo.cpp"),AMALGAMATE_OUTPUT_PATH)
|
||||
shutil.copy2(os.path.join(SCRIPTPATH,"README.md"),AMALGAMATE_OUTPUT_PATH)
|
||||
|
||||
|
||||
|
||||
|
||||
def create_zip():
|
||||
import zipfile
|
||||
outdir = AMALGAMATE_OUTPUT_PATH
|
||||
|
||||
path = os.path.join(outdir, "singleheader.zip")
|
||||
print(f"Creating {path}")
|
||||
with zipfile.ZipFile(path, 'w') as zf:
|
||||
for name in ["simdjson.cpp", "simdjson.h"]:
|
||||
source = os.path.join(outdir, name)
|
||||
print(f"Adding {source}")
|
||||
zf.write(source, name)
|
||||
print(f"Created {path}")
|
||||
create_zip()
|
||||
print("Done with all files generation.")
|
||||
|
||||
print(f"Files have been written to directory: {AMALGAMATE_OUTPUT_PATH}/")
|
||||
@@ -449,6 +465,8 @@ print(subprocess.run(['ls', '-la', AMAL_C, AMAL_H, DEMOCPP, README],
|
||||
print("Done with all files generation.")
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Instructions to create demo
|
||||
#
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* auto-generated on 2025-01-27 20:34:35 -0500. Do not edit! */
|
||||
/* auto-generated on 2025-02-14 16:11:36 -0500. Do not edit! */
|
||||
/* including simdjson.cpp: */
|
||||
/* begin file simdjson.cpp */
|
||||
#define SIMDJSON_SRC_SIMDJSON_CPP
|
||||
@@ -20813,14 +20813,18 @@ namespace simd {
|
||||
|
||||
// Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
|
||||
// Passing a 0 value for mask would be equivalent to writing out every byte to output.
|
||||
// Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
|
||||
// Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
|
||||
// get written.
|
||||
// Design consideration: it seems like a function with the
|
||||
// signature simd8<L> compress(uint32_t mask) would be
|
||||
// sensible, but the AVX ISA makes this kind of approach difficult.
|
||||
template<typename L>
|
||||
simdjson_inline void compress(uint64_t mask, L * output) const {
|
||||
_mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
// we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
|
||||
// (AMD Zen4 has terrible performance with it, it is effectively broken)
|
||||
// _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
__m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
|
||||
_mm512_storeu_si512(output, compressed); // could use a mask
|
||||
}
|
||||
|
||||
template<typename L>
|
||||
@@ -23443,14 +23447,18 @@ namespace simd {
|
||||
|
||||
// Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
|
||||
// Passing a 0 value for mask would be equivalent to writing out every byte to output.
|
||||
// Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
|
||||
// Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
|
||||
// get written.
|
||||
// Design consideration: it seems like a function with the
|
||||
// signature simd8<L> compress(uint32_t mask) would be
|
||||
// sensible, but the AVX ISA makes this kind of approach difficult.
|
||||
template<typename L>
|
||||
simdjson_inline void compress(uint64_t mask, L * output) const {
|
||||
_mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
// we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
|
||||
// (AMD Zen4 has terrible performance with it, it is effectively broken)
|
||||
// _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
__m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
|
||||
_mm512_storeu_si512(output, compressed); // could use a mask
|
||||
}
|
||||
|
||||
template<typename L>
|
||||
|
||||
+15
-7
@@ -1,4 +1,4 @@
|
||||
/* auto-generated on 2025-01-27 20:34:35 -0500. Do not edit! */
|
||||
/* auto-generated on 2025-02-14 16:11:36 -0500. Do not edit! */
|
||||
/* including simdjson.h: */
|
||||
/* begin file simdjson.h */
|
||||
#ifndef SIMDJSON_H
|
||||
@@ -2437,7 +2437,7 @@ namespace std {
|
||||
#define SIMDJSON_SIMDJSON_VERSION_H
|
||||
|
||||
/** The version of simdjson being used (major.minor.revision) */
|
||||
#define SIMDJSON_VERSION "3.12.0"
|
||||
#define SIMDJSON_VERSION "3.12.2"
|
||||
|
||||
namespace simdjson {
|
||||
enum {
|
||||
@@ -2452,7 +2452,7 @@ enum {
|
||||
/**
|
||||
* The revision (major.minor.REVISION) of simdjson being used.
|
||||
*/
|
||||
SIMDJSON_VERSION_REVISION = 0
|
||||
SIMDJSON_VERSION_REVISION = 2
|
||||
};
|
||||
} // namespace simdjson
|
||||
|
||||
@@ -17948,14 +17948,18 @@ namespace simd {
|
||||
|
||||
// Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
|
||||
// Passing a 0 value for mask would be equivalent to writing out every byte to output.
|
||||
// Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
|
||||
// Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
|
||||
// get written.
|
||||
// Design consideration: it seems like a function with the
|
||||
// signature simd8<L> compress(uint32_t mask) would be
|
||||
// sensible, but the AVX ISA makes this kind of approach difficult.
|
||||
template<typename L>
|
||||
simdjson_inline void compress(uint64_t mask, L * output) const {
|
||||
_mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
// we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
|
||||
// (AMD Zen4 has terrible performance with it, it is effectively broken)
|
||||
// _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
__m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
|
||||
_mm512_storeu_si512(output, compressed); // could use a mask
|
||||
}
|
||||
|
||||
template<typename L>
|
||||
@@ -65401,14 +65405,18 @@ namespace simd {
|
||||
|
||||
// Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
|
||||
// Passing a 0 value for mask would be equivalent to writing out every byte to output.
|
||||
// Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
|
||||
// Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
|
||||
// get written.
|
||||
// Design consideration: it seems like a function with the
|
||||
// signature simd8<L> compress(uint32_t mask) would be
|
||||
// sensible, but the AVX ISA makes this kind of approach difficult.
|
||||
template<typename L>
|
||||
simdjson_inline void compress(uint64_t mask, L * output) const {
|
||||
_mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
// we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
|
||||
// (AMD Zen4 has terrible performance with it, it is effectively broken)
|
||||
// _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
|
||||
__m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
|
||||
_mm512_storeu_si512(output, compressed); // could use a mask
|
||||
}
|
||||
|
||||
template<typename L>
|
||||
|
||||
@@ -184,8 +184,6 @@ else:
|
||||
if(detectedreadme != toversionstring(*newversion)):
|
||||
print(colored(255, 0, 0, "Consider updating the readme link to "+toversionstring(*newversion)))
|
||||
|
||||
|
||||
|
||||
print("Please run the tests before issuing a release. \n")
|
||||
print("to issue release, enter \n git commit -a && git push && git tag -a v"+toversionstring(*newversion)+" -m \"version "+toversionstring(*newversion)+"\" && git push --tags \n")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user