On Thursday, 30 October 2025 at 16:40:54 UTC, Dennis wrote:
On Thursday, 30 October 2025 at 13:02:16 UTC, Hipreme wrote:
Redub uses a cache system in which the hash of an object
becomes a key. This does not translate well to structs as they
are "random" keys. (...)
So you have several use cases where the keys are not a small
set known ahead of time, but constructed dynamically. Makes
sense, though now I wonder why you would use JSON for your
cache or filesystem when performance is such a concern. Or when
it's not a concern, why std.json doesn't suffice.
There is another case in which the dynamic type API is kinda
important, which is mostly when you do union types, so one
would still need a good representation of it:
You could define:
```D
struct Input
{
string keyboard;
string gamepad;
string analog;
string axis;
}
```
And then check the length of those strings to see if they have
a value.
Either way, it's still useful to have a fast JSON parser using
dynamic objects, and using std.json's API makes it an easy
upgrade.
I do plan to also add a streaming API in the near future. I think
that with this addition, it will also becomes a lot easier to add
this new struct dump API.
Btw, with HipJSON, I can parse up to 700MBps for my cache system.
Considering it usually takes like 120KB, it becomes like 0.17ms
to parse that cache, so I don't think it is slow. THe 80MBps I
show there is for parsing pure-dictionary, which is the slowest
operation you can do for JSON.