A high-performance Rust JSON parser porting simdjson's SIMD techniques, with Serde compatibility.
simd-json is a Rust port of the simdjson C++ library that uses SIMD instructions (AVX2, SSE4.2, NEON, or simd128) to parse JSON documents at maximum performance. It solves the problem of high-speed JSON parsing in Rust by providing both a DOM-based API for flexible data manipulation and full Serde compatibility for seamless integration with the Rust ecosystem. When SIMD instructions are unavailable, it falls back to a native Rust parser to ensure broad compatibility.
Rust developers working on performance-critical applications that require high-throughput JSON parsing, such as web servers, data processing pipelines, or real-time analytics systems. It is also suitable for projects needing a drop-in replacement for serde_json with significant speed improvements.
Developers choose simd-json over alternatives because it delivers near-C++ levels of parsing speed through SIMD acceleration while maintaining Rust ergonomics and Serde compatibility. Its unique selling point is the combination of extreme performance via SIMD instructions, flexible APIs (DOM, Tape, and Serde), and configurable features like known-key memoization and 128-bit integer support.
Rust port of simdjson
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages AVX2, SSE4.2, NEON, or simd128 instructions with runtime detection on x86, delivering near-C++ parsing speeds for performance-critical applications.
Full support for serde::Serialize and serde::Deserialize via the default serde_impl feature, making it a drop-in replacement for serde_json with speed improvements.
Offers DOM-based (BorrowedValue, OwnedValue) and low-level Tape APIs for versatile data manipulation, catering to both high-level and direct access needs.
Includes optional features like known-key for memoization, 128bit integer support, and big-int-as-float, allowing optimization for specific workloads.
Extensive use of unsafe Rust for SIMD intrinsics and performance bottlenecks, requiring rigorous testing and auditing to mitigate memory safety risks.
Design decisions like DOM parsing prioritize ergonomics over raw speed, meaning it doesn't always match the peak performance of the C++ simdjson library.
The multitude of optional features (e.g., known-key, 128bit, beef) complicates configuration and can lead to dependency conflicts or breaking changes.