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.

Reply via email to