github.com/minio/simdjson-go
v0.4.5
#873 most downloaded on Go modules
minio/simdjson-go
What this package is like to depend on
Last release 12 months ago
26 Aug 2025
Release timing varies
gaps range from 8 days to 1.3 years
Most releases are documented
notes for 11 of 16 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
61 releases · first in 2020
0 releases in the last 12 months
see the full history below
Release timeline
61 releases · Feb 2020 to Aug 2025Releases
latest 60 of 61-
v0.4.6-0.20250826165903-20f0d8f7fb4b26 Aug 2025 pre-releaseNothing published for this version
-
v0.4.6-0.20250616085317-cac9cd14dd0916 Jun 2025 pre-releaseNothing published for this version
-
v0.4.6-0.20250616085148-53771bd2e08516 Jun 2025 pre-releaseNothing published for this version
-
v0.4.6-0.20250306131712-da7fdcfec83b06 Mar 2025 pre-releaseNothing published for this version
-
v0.4.6-0.20250303224012-1a328090fbe403 Mar 2025 pre-releaseNothing published for this version
-
v0.4.6-0.20231116094823-04d21cddf99316 Nov 2023 pre-releaseNothing published for this version
-
v0.4.511 Mar 2023Release notes
Open source →What's Changed
- Fix skipping deleted data in elements by @klauspost in #82
Full Changelog: v0.4.4...v0.4.5
-
v0.4.5-0.20230311191656-d82c779820b211 Mar 2023 pre-releaseNothing published for this version
-
v0.4.420 Feb 2023 -
v0.4.4-0.20230220165457-e473c1e060c620 Feb 2023 pre-releaseNothing published for this version
-
v0.4.325 Oct 2022Release notes
Open source →What's Changed
- Allow nulling all types. by @klauspost in #77
- Document that Parse/ParseND is for objects/arrays by @martin-sucha in #60
- CpuSupported by @stokito in #73
- examples: OpenRTB request parsing by @stokito in #75
- Port Fuzz tests by @klauspost in #78
- Add Array example by @klauspost in #67
- Add Object&Array Element Deletion by @klauspost in #72
- adding vulncheck github workflow action by @Alevsk in #76
- benchmarks: split benchmarks for avoid depends unnecessary packages by @zchee in #56
New Contributors
- @martin-sucha made their first contribution in #60
- @stokito made their first contribution in #73
- @Alevsk made their first contribution in #76
Full Changelog: v0.4.2...v0.4.3
Release notes
Open source →func (a * Array ) DeleteElems(fn func(i Iter ) bool )
DeleteElems calls the provided function for every element. If the function returns true the element is deleted in the array. Example ¶
if !SupportedCPU() { // Fake it fmt.Println("Found array\nModified: {"Image":{"Animated":false,"Height":600,"IDs":[943,38793]},"Alt":"Image of city"}") return } input :=
{ "Image": { "Animated": false, "Height": 600, "IDs": [ 116, 943, 234, 38793 ] }, "Alt": "Image of city" }pj, err := Parse([]byte(input), nil) if err != nil { log.Fatal(err) } i := pj.Iter() i.AdvanceInto()// Grab root _, root, err := i.Root(nil) if err != nil { log.Fatal(err) } // Grab top object obj, err := root.Object(nil) if err != nil { log.Fatal(err) }
// Find element in path. elem, err := obj.FindPath(nil, "Image", "IDs") if err != nil { log.Fatal(err) } fmt.Println("Found", elem.Type) if elem.Type == TypeArray { array, err := elem.Iter.Array(nil) if err != nil { log.Fatal(err) } // Delete all integer elements that are < 500 array.DeleteElems(func(i Iter) bool { if id, err := i.Int(); err == nil { return id < 500 } return false }) } b, err := root.MarshalJSON() if err != nil { log.Fatal(err) } fmt.Println("Modified:", string(b))
Output: Found array Modified: {"Image":{"Animated":false,"Height":600,"IDs":[943,38793]},"Alt":"Image of city"}
-
v0.4.3-0.20221025075743-bd4a38d4fca125 Oct 2022 pre-releaseNothing published for this version
-
v0.4.3-0.20221024204222-655936b0396e24 Oct 2022 pre-releaseNothing published for this version
-
v0.4.3-0.20221019001001-93637d6543ae19 Oct 2022 pre-releaseNothing published for this version
-
v0.4.3-0.20221017091150-d7877ade8a9b17 Oct 2022 pre-releaseNothing published for this version
-
v0.4.3-0.20221017043916-2ba2c3c190ba17 Oct 2022 pre-releaseNothing published for this version
-
v0.4.3-0.20220322021643-e7da8e44866a22 Mar 2022 pre-releaseNothing published for this version
-
v0.4.3-0.20220310102241-b1184712b8a110 Mar 2022 pre-releaseNothing published for this version
-
v0.4.3-0.20220304150656-7f95387e980904 Mar 2022 pre-releaseNothing published for this version
-
v0.4.224 Feb 2022Release notes
Open source → -
v0.4.122 Feb 2022Release notes
Open source →What's Changed
- Remove parsing allocs by @klauspost in #55
- Fix parsing deadlock by @klauspost in #57
Full Changelog: v0.4.0...v0.4.1
-
v0.4.1-0.20220322021643-e7da8e44866a22 Mar 2022 pre-releaseNothing published for this version
-
v0.4.1-0.20220222185200-9743702f0b3d22 Feb 2022 pre-releaseNothing published for this version
-
v0.4.1-0.20220125175907-68d6648cff0725 Jan 2022 pre-releaseNothing published for this version
-
v0.4.002 Dec 2021Release notes
Open source →What's Changed
- Add Object/Array foreach by @klauspost in #49
- Simplify usage by @klauspost in #54 (breaking v0.3.0)
- Faster constant compares and numbers by @klauspost in #50
- Add github actions by @klauspost in #53
Full Changelog: v0.3.0...v0.4.0
Release notes
Open source →func (a * Array ) ForEach(fn func(i Iter ))
ForEach calls the provided function for every element.
-
v0.3.1-0.20211202192405-2455af93666602 Dec 2021 pre-releaseNothing published for this version
-
v0.3.1-0.20211202165916-d95f712bbb5202 Dec 2021 pre-releaseNothing published for this version
-
v0.3.1-0.20211201175300-e885dec6c1fd01 Dec 2021 pre-releaseNothing published for this version
-
v0.3.024 Nov 2021Release notes
Open source →What's Changed
- Add value editing by @klauspost in #46
- Improve marshal speed by @klauspost in #47
- Add Object Path selector by @klauspost in #48
New Contributors
Full Changelog: v0.2.2...v0.3.0
Release notes
Open source →func (i * Iter ) FindElement(dst * Element , path ... string ) (* Element , error )
FindElement allows searching for fields and objects by path from the iter and forward, moving into root and objects, but not arrays. For example "Image", "Url" will search the current root/object for an "Image" object and return the value of the "Url" element. ErrPathNotFound is returned if any part of the path cannot be found. If the tape contains an error it will be returned. The iter will not be advanced. Example ¶
if !SupportedCPU() { // Fake it fmt.Println("int\n100 <nil>") return } input :=
{ "Image": { "Animated": false, "Height": 600, "IDs": [ 116, 943, 234, 38793 ], "Thumbnail": { "Height": 125, "Url": "http://www.example.com/image/481989943", "Width": 100 }, "Title": "View from 15th Floor", "Width": 800 }, "Alt": "Image of city" }pj, err := Parse([]byte(input), nil) if err != nil { log.Fatal(err) } i := pj.Iter()// Find element in path. elem, err := i.FindElement(nil, "Image", "Thumbnail", "Width") if err != nil { log.Fatal(err) }
// Print result: fmt.Println(elem.Type) fmt.Println(elem.Iter.StringCvt())
Output: int 100 <nil>
-
v0.2.3-0.20211124125324-0c4d67fe065324 Nov 2021 pre-releaseNothing published for this version
-
v0.2.3-0.20211124112004-d9aecff3216524 Nov 2021 pre-releaseNothing published for this version
-
v0.2.3-0.20211124094301-ebc09ef18fd824 Nov 2021 pre-releaseNothing published for this version
-
v0.2.3-0.20210621070559-fa6f3f0738b421 Jun 2021 pre-releaseNothing published for this version
-
v0.2.218 May 2021Release notes
Open source →type ParserOption func(pj *internalParsedJson) error
ParserOption is a parser option.
-
v0.2.2-0.20210517164542-6accf0ca09a917 May 2021 pre-releaseNothing published for this version
-
v0.2.2-0.20210406123007-650cff7aea3406 Apr 2021 pre-releaseNothing published for this version
-
v0.2.125 Jan 2021Release notes
Open source →Indicate float conversion due to overflows (#31)
As flag to tape that indicates that an integer was converted to float due to int64/uint64 limits.
Fixes #25
Release notes
Open source →func (a * Array ) AsStringCvt() ([] string , error )
AsStringCvt returns the array values as a slice of strings. Scalar types are converted. Root, Object and Arrays are not supported an will return an error if found.
-
v0.2.1-0.20210125182806-c66cb857f22925 Jan 2021 pre-releaseNothing published for this version
-
v0.2.1-0.20210118143515-3d975b7ac79c18 Jan 2021 pre-releaseNothing published for this version
-
v0.2.018 Jan 2021Release notes
Open source →Number parsing fix and optimization (#27)
Remove `GOLANG_NUMBER_PARSING` and remove the imprecise parsing and fix up the actual number parsing in Go.
By default, everything that looked like a number would be accepted and a lot of errors were not caught.
Uints will now actually be used if numbers are above maximum int64 and below uint64 with no float point markers.
Even with all the additional checks we are still faster:
```
λ benchcmp before.txt after.txt
benchmark old ns/op new ns/op delta
BenchmarkParseNumber/Pos/63bit-32 91.9 75.9 -17.41%
BenchmarkParseNumber/Neg/63bit-32 106 77.2 -27.17%
BenchmarkParseNumberFloat-32 190 72.5 -61.84%
BenchmarkParseNumberFloatExp-32 212 98.6 -53.49%
BenchmarkParseNumberBig-32 401 175 -56.36%
BenchmarkParseNumberRandomBits-32 420 230 -45.24%
BenchmarkParseNumberRandomFloats-32 305 172 -43.61%
```
... and full benchmarks:
```
benchmark old ns/op new ns/op delta
BenchmarkApache_builds-32 137091 139556 +1.80%
BenchmarkCanada-32 30705862 19000003 -38.12%
BenchmarkCitm_catalog-32 1921474 2093471 +8.95%
BenchmarkGithub_events-32 77611 77873 +0.34%
BenchmarkGsoc_2018-32 1220291 1215097 -0.43%
BenchmarkInstruments-32 366747 374568 +2.13%
BenchmarkMarine_ik-32 27410259 18343775 -33.08%
BenchmarkMesh-32 8200018 5896043 -28.10%
BenchmarkMesh_pretty-32 9793413 6947830 -29.06%
BenchmarkNumbers-32 1967319 1213924 -38.30%
BenchmarkRandom-32 1072071 1042956 -2.72%
BenchmarkTwitter-32 645530 645529 -0.00%
BenchmarkTwitterescaped-32 1014456 1022548 +0.80%
``` -
v0.1.6-0.20210108142543-fcc30eb4c15f08 Jan 2021 pre-releaseNothing published for this version
-
v0.1.6-0.20201117050608-2f3d8600176717 Nov 2020 pre-releaseNothing published for this version
-
v0.1.6-0.20200812220214-ef1a2b46ad3712 Aug 2020 pre-releaseNothing published for this version
-
v0.1.530 Jun 2020Nothing published for this version
-
v0.1.5-0.20200630212848-d0e69ad5cd0b30 Jun 2020 pre-releaseNothing published for this version
-
v0.1.5-0.20200629213450-fee6ac8233d429 Jun 2020 pre-releaseNothing published for this version
-
v0.1.5-0.20200626222352-3ad39a3a93d526 Jun 2020 pre-releaseNothing published for this version
-
v0.1.5-0.20200430212000-d175d963fec430 Apr 2020 pre-releaseNothing published for this version
-
v0.1.5-0.20200410041114-41d55684e23210 Apr 2020 pre-releaseNothing published for this version
-
v0.1.5-0.20200306225311-93bb96058c4f06 Mar 2020 pre-releaseNothing published for this version
-
v0.1.5-0.20200303142138-b17fe061ea3703 Mar 2020 pre-releaseNothing published for this version
-
v0.1.402 Mar 2020Release notes
Open source →type CompressMode uint8
const ( // CompressNone no compression whatsoever. CompressNone CompressMode = iota // CompressFast will apply light compression, // but will not deduplicate strings which may affect deserialization speed. CompressFast // CompressDefault applies light compression and deduplicates strings. CompressDefault // CompressBest CompressBest )
-
v0.1.4-0.20200217105327-e5d89ebf895f17 Feb 2020 pre-releaseNothing published for this version
-
v0.1.316 Feb 2020Nothing published for this version
-
v0.1.213 Feb 2020Nothing published for this version
-
v0.1.112 Feb 2020Nothing published for this version
-
v0.1.011 Feb 2020Nothing published for this version
-
v0.0.0-20250826165903-20f0d8f7fb4b26 Aug 2025 pre-releaseNothing published for this version
-
v0.0.0-20231116094823-04d21cddf99316 Nov 2023 pre-releaseNothing published for this version
-
v0.0.0-20200211181334-36b7c3132c0111 Feb 2020 pre-releaseNothing published for this version