fouriertransformer / lua-simdjson Goto Github PK
View Code? Open in Web Editor NEWsimdjson bindings for lua (WIP)
License: Apache License 2.0
simdjson bindings for lua (WIP)
License: Apache License 2.0
Version 1.0
https://ift.tt/3ncDaYq
Release 1.0.0 of the simdjson library builds on earlier pre-1.0 release that made the On Demand frontend our default. The On Demand front-end is a new way to build parser. With On Demand, if you open a file containing 1000 numbers and you need just one of these numbers, only one number is parsed. If you need to put the numbers into your own data structure, they are materialized there directly, without being first written to a temporary tree. Thus we expect that the simdjson On Demand might often provide superior performance, when you do not need to intermediate materialized view of a DOM tree. The On Demand front-end was primarily developed by @jkeiser.
If you adopted simdjson from an earlier version and relied on the DOM approach, it remains as always. Though On Demand is our new default, we remain committed to supporting the conventional DOM approach in the future, as there are instances where it is more appropriate.
Release 1.0.0 adds several key features:
get_double_in_string()
. Credit: @NicolasJiaxin
Other improvements include:
simdjson::minify
) under ARM processors (credit @dougallj)We encourage users of previous versions of the simdjson library to update. We encourage users to deploy it for production uses.
Version 2.2.2
https://ift.tt/aDqVXE4
Full Changelog: v2.2.1...v2.2.2
Version 0.4.2
https://ift.tt/2NEtDq2
Fix an installation bug whereas the header may not get installed when only the library was built (issue #1000)
Version 2.0.2
https://ift.tt/A9OKX6s
This is a patch release which fixes compilation errors for 2.0.1 under GCC 8 specifically. The path contains two "workarounds" specific to GCC 8.
Version 0.9.2
https://ift.tt/3rHhkL5
This is a patch release which fixes a bug for users of the On Demand front-end. In some instances, when trying to access keys that are missing, the parser will fail with a generic error (TAPE_ERROR) under versions 0.9.0 and 0.9.1. Thanks to @jpalus for reporting the issue (#1521) and to @jkeiser for reviewing the patch.
Version 0.9.6
https://ift.tt/34SvdwT
This is a patch release fixing issue #1601 That is, users reusing the same document instance may get spurious errors in following parsing attempts because the "error" flag in the document is 'sticky'. This patch fixes the issue by modifying two lines of code.
v2.2.3
https://ift.tt/sz8ScTL
Full Changelog: v2.2.2...v2.2.3
Version 2.0.0
https://ift.tt/PLtrxom
Adding new icelake kernel with AVX-512 support. When the compiler and the processor has the adequate AVX-512 support, you might see a performance boost of between 25% to 40% on several tasks compared to the best previous kernel (haswell).
We rely on the fact that AVX-512 instructions no longer produce systematic frequency throttling on recent Intel processors (Ice Lake), https://travisdowns.github.io/blog/2020/08/19/icl-avx512-freq.html
Credit: Fangzheng Zhang and Weiqiang Wan (both from Intel) with indirect contributions by Kim Walisch and Jatin Bhateja.
Version 1.0.2
https://ift.tt/3mjj5hT
Patch for bug #1742
credit to @madhur4127 for the report.
Version 0.5.0
https://ift.tt/3hjQkgs
Performance
Code usability
parse_many
, when parsing streams of JSON documetns, we give to the users runtime control as to whether threads are used (via the parser.threaded attribute). #925
Standards
at(std::string_view)
method remains but is deprecated since it is not standard-compliant as per RFC 6901.Version 0.4.5
https://ift.tt/3dQUcmi
Fixed an issue whereas the installed library would not get versioned properly on some systems.
Version 1.0.1
https://ift.tt/3pmHNzR
It is a patch release on version 1.0.1.
It fixes issue #1736 (number parse bug in get_uint64_in_string())
Credit for the bug report to @madhur4127
Version 0.9.5
https://ift.tt/34ogsld
Patch release fixing issue 1588: Unexpected behavior while traversing a json array containing json objects containing a subset of known keys. This patch adds a single line. Users relying on the On Demand front-end should update.
Version 3.1.3
https://ift.tt/lN7DGo5
Full Changelog: v3.1.2...v3.1.3
Version 0.8.0
https://ift.tt/366X6Cm
The high-performance On Demand front-end introduced in version 0.7 has received major quality-of-life and performance improvements (credit @jkeiser).
double x = object["x"]; double y = object["y"];
will work no matter which order the fields appear in the object. Reading fields in order still gives maximum performance.object["a"]["b"]
)ondemand::value
, allowing more efficient filtering and bulk parsing, as well as fixing smaller quality-of-life issues.We have improved our CMake build with respect to installed artefacts so that
CMake dependencies automatically handle thread dependencies.
We have greatly improved our benchmarks with a set of realistic tasks on
realistic datasets, using Google Benchmark as a framework.
Version 0.6.0
https://ift.tt/35qnZjI
Release 0.6 features faster serialization, updated number parsing and a new parsing API (On Demand).
Novel parsing approach: Prior to release 0.6, the simdjson only supported the DOM model. In the DOM model, you parse the entire document eagerly and then query the resulting parsed document. With release 0.6, we have introduced an innovative new query model called "On Demand" (credit: @jkeiser). As the name suggests, the programmer can now access only the components of the JSON documents that are needed. It is useful when the dialect of the JSON document is known at compile-time. It can multiply the performance: on a benchmark where we retrieve unique identifiers from a file, we go from 2.3 GB/s to 4.6 GB/s. Compared to the generic DOM approach, the On Demand strategy may improve parsing speed and reduce memory usage. The On Demand API is both easy to use and highly efficient. We encourage our users to try out the new On Demand API and to provide constructive feedback. Though it is well tested, we consider On Demand to be a novel and experimental feature that will receive further updates in the upcoming releases including runtime dispatching. Users should be mindful that the On Demand API is subject to change in future releases, we encourage testing more than deployment. Please check our documentation:
https://github.com/simdjson/simdjson/blob/master/doc/ondemand.md
Performance:
New features:
my_implementation->supported_by_runtime_system()
.Correctness:
Version 2.2.1
https://ift.tt/fKGnE37
Full Changelog: v2.2.0...v2.2.1
Version 2.2.0
https://ift.tt/dnrXCOi
This release is a bug-fix release and is recommended for users relying on the icelake kernel.
Version 0.7.0
https://ift.tt/2L9x221
This version improves our support for streams of documents (ndjson). We have improved the documentation, especially with how one might deal with truncated inputs and track the location of the current JSON. We have added fuzz testing and other tests. We added some minor fixes.
Performance:
Platform support:
Version 1.1.0
https://ift.tt/f83TaVD
This is a maintenance release. Except for the new 'current_depth()' method, no new API component was added.
Version 0.4.4
https://ift.tt/2ZomcZl
CMake fix for when one builds using Visual Studio 2015 via Ninja.
I just wanted to pass along the fork I made : https://github.com/jdonaldson/hx-lua-simdjson
I stripped it down from your original repo here. I'm not going to maintain benchmarks, specs, etc. (I'll do that over in haxe-land).
I retained the license, and added you to the acknowledgements along with the simdjson authors.
Anything else I'm missing there?
FWIW, I think a fork wound up being the right call here for a lot of reasons. I had to tweak things a lot to get them working properly for my Haxe target. It'll be very difficult to unify our efforts here, unfortunately. :(
As a side note, I did resolve one json spec issue by updating the simdjson single header cpp/h files. I'd do that at your earliest convenience to ensure you've got up to date json format compliance.
Cheers!
(close this whenever you're happy with it)
Version 3.1.4
https://ift.tt/xGi0L8j
Full Changelog: v3.1.3...v3.1.4
Version 0.6.1
https://ift.tt/3oS9I8h
This is a minor patch release for version 0.6.0 to support legacy libc++ builds.
Version 0.9.3
https://ift.tt/3ogm9uI
Disable performance testing.
Version 0.5.0
https://ift.tt/3hjQkgs
Performance
Code usability
parse_many
, when parsing streams of JSON documetns, we give to the users runtime control as to whether threads are used (via the parser.threaded attribute). #925
Standards
at(std::string_view)
method remains but is deprecated since it is not standard-compliant as per RFC 6901.Version 0.4.6
https://ift.tt/2ZpHdTD
Version 0.7.1
https://ift.tt/2Ko12qq
It is a patch release for version 0.7.0 which mistakenly disabled, by default, optimized ARM NEON and POWER kernels. The result was a substantial lost of performance, by default, on these platforms. Users could still work around the limitation by passing macro values to the compiler.
Version 3.1.0
https://ift.tt/5Z3WivQ
Full Changelog: v3.0.1...3.1.0
Version 0.9.0
https://ift.tt/30SIq72
The high-performance On Demand front-end introduced in version 0.7 and optimized in version 0.8 becomes the primary simdjson front-end in version 0.9 (credit @jkeiser). The On Demand front-end benefits from new features:
type()
method so branching on the schema becomes possible.Other changes :
get<T>()
methods with specific methods, using get_object()
instead of get<simdjson::dom::object>()
, and get_uint64()
instead of get<uint64_t>()
.dom::document_stream::iterator
has received a default constructor and is copyableVersion 0.4.1
https://ift.tt/3eBc99S
This is a patch release to fix minor issues with release 0.4.0.
Version 2.0.4
https://ift.tt/Csk5pVn
Full Changelog: v2.0.3...v2.0.4
Version 3.1.1
https://ift.tt/REoxF28
Full Changelog: v3.1.0...v3.1.1
Version 3.1.2
https://ift.tt/Yufa0CB
Full Changelog: v3.1.1...v3.1.2
Version 3.1.5
https://ift.tt/lGAMQdY
Full Changelog: v3.1.4...v3.1.5
Version 3.0.1
https://ift.tt/sSgjWld
Full Changelog: v3.0.0...v3.0.1
Version 0.4.0
https://ift.tt/3hV9mKG
Highlights
New features:
Performance:
System support:
Version 0.4.7
https://ift.tt/2Bd0gsc
This is a patch release to remove an overhead of 100 ns per query. It will improve performance on small files. The fix involves the removal of a single line of code. Credit to @vitlibar from Yandex.
OSX, latest Luajit 2.1.
Totals:
{
cjson = 0,
dkjson = 0,
rapidjson = 0.07904502,
simdjson = 0.57141524
}
Version 2.0.3
https://ift.tt/9TBb1pP
This is a third patch release which allows the AVX-512 kernel under Visual Studio 2019 and up.
Version 2.0.1
https://ift.tt/T8pYgIU
It is a patch release which makes sure that AVX-512 is always enabled by default, even when using single-header files. It was the intended behaviour.
Version 3.1.0
https://ift.tt/vUoA9JP
Full Changelog: v3.0.1...3.1.0
Version 2.1.0
https://ift.tt/q81chal
Full Changelog: v2.0.4...v2.1.0
Version 0.4.3
https://ift.tt/2VwAc2a
Version 0.8.1
https://ift.tt/3ptLelA
This is a patch release fixing the find_package(simdjson)
functionality for CMake for users that updated to simdjson 0.8.0.
v0.9.7: update string_view lite to version 1.6.0 (#1677)
https://ift.tt/3idQRmM
This is the header as seen in the current master branch,
commit d27d7b5081406a35b41cb16b321be8833b4cd811, on
https://github.com/martinmoene/string-view-lite.
Version 0.8.2
https://ift.tt/3qbDzsr
This patch adds an explicit include for string_view which is needed by Visual Studio 2017. It also includes other minor Visual Studio 2017 fixes. Visual Studio 2017 are reminded that they should target specifically x64 builds.
credit to @NancyLi1013 for reporting the issue
Version 3.0.0
https://ift.tt/bPNHtS7
The main change in version 3.0.0 is that the is_null() methods may return an error. Previously, they would return merely true or false.
Full Changelog: v2.2.3...v3.0.0
Version 0.9.1
https://ift.tt/3cK3ORn
This is a patch release removing dead code (get_root_value). #1504
Version 0.9.4
https://ift.tt/3ypCPod
This fourth patch release is the second and final fix on an issue with the ondemand front-end where when we search for a key and it is not found, we can end up in a poor state from which follow-up queries will lead to spurious errors even with a valid JSON.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.