Hi all,
I'm the author/maintainer of **fastjsond**, a JSON library for D
built on top of simdjson. It aims to accelerate parsing and
serialization while being transparent to use. The goal is to
offer a drop-in replacement for `std.json` with significantly
higher performance.
**Why**: When dealing with large JSON volumes, `std.json` can
become a bottleneck. I needed something faster without changing
the API.
**What it is**:
- SIMD-accelerated parser and serializer: According to the
benchmarks in the README, on a MacBook Pro M4 fastjsond reads
1 MB in 0.59 ms vs 8.45 ms for `std.json` (~14x) and 10 MB in
6.8 ms vs 82 ms.
- Two APIs: a native zero‑copy API for maximum speed and a
`std.json` compatible API for easy migration.
- Auto‑detects SIMD instruction sets (AVX2, SSE4.2, NEON) and
supports `@nogc`.
**Minimal drop‑in example**:
```d
import fastjsond.std; // replaces std.json
auto json = parseJSON(`{"name":"Aurora","version":2}`);
string name = json["name"].str;
long ver = json["version"].integer;
```
Or the native zero‑copy API:
```d
import fastjsond;
auto parser = Parser.create();
auto doc = parser.parse(`{"name":"Aurora","version":2}`);
const(char)[] name = doc.root["name"].getString; // slice into
original buffer
```
**How to try**:
With Dub:
```json
"dependencies": { "fastjsond": "~>1.0.2" }
```
Or via:
```bash
dub add fastjsond
```
The project is on GitHub:
https://github.com/federikowsky/Fastjsond. I'm looking for
feedback on the API, real-world use cases and honest limitations
(the native API isn't thread-safe, and strings are valid only
while the document exists). Pull requests are welcome.
If you try it in practice, I'm interested to hear how it behaves
and what trade‑offs you encounter. Thanks!