The simdjson library
simdjson.org
simdjson.org
And capnproto is basically another version of pb... (see discussion above)
Apache Arrow defines an inter-process communication (IPC) mechanism to transfer a collection of Arrow columnar arrays (called a “record batch”). It can be used synchronously between processes using the Arrow “stream format”, or asynchronously by first persisting data on storage using the Arrow “file format”.
The Arrow IPC mechanism is based on the Arrow in-memory format, such that there is no translation necessary between the on-disk representation and the in-memory representation. [0]
The Arrow spec aligns columnar data in memory to minimize cache misses and take advantage of the latest SIMD (Single input multiple data) and GPU operations on modern processors. [1]
https://en.wikipedia.org/wiki/Interchange_File_Format
Unfortunately with the Amiga itself being a niche platform, the idea didn't catch on.
It also sort-of requires a central registry for the top level FourCC codes (basically reserved magic number for each file format).
I swear the only reason people pay FJCVTZS any attention at all is that it has "JavaScript" in its name. If it was just a "convert float to int, round towards zero" instruction, everyone would see it as a normal, boring part of the ISA.
You’re not wrong, and yet—
> convert float to int, round towards zero
... and take the result modulo 2^32 as two’s complement. That’s still rather specific and likely useless for numeric computing, which is the canonical application area for this kind of thing. So the “JavaScript” in the name is fair, if only to dispel confusion around why one would ever want this.
(The normal, saturating conversion is FCVTZS.)
SSE/AVX/NEON/RVV are all general sets of vector operations, which can be used to optimize certain parts of parsing, as simdjson does. If there could be instructions added to further optimize JSON parsing, I have a feeling that they would be new general purpose vector instructions rather than anything JSON-specific.
Or do you have any JSON-specific instructions in mind which would help beyond what the existing vector instructions already do?