Deepslate was going to be an implementation of Polar for Rust (Valence), but Polar... it does weird stuff (from the point of view of Rust), weird stuff that no one needs... VarInts cough so... I decided to make it more rust-friendly and then optimized it a couple times (too many) and here we are. I'm not going to say that it's better (although...), but it's not Java so at the very least we have that. This is very much WIP, but I decided to get it on Github so if anyone was interested they could help/use it.
It is written fully from scratch, even if borrowing from my previous projects (but who doesn't do that), such as lurcar's precursor QRCA for the writer/reader thing-ama-jig.
As you may notice this also lacks any checks or any docs whatsoever. If I wanted to believe that if I can understand this code almost a year (QRCA) after writing it, everyone should be, I'd probably be delusional. So until I can bring myself to write those, if u write any or do any changes you think are positive, hit me up, make a pull request, whatever the hell you want to be honest. Honestly, even an issue would help (please don't do anything like "the code is unreadable" because I won't even have an idea what you're talking about).
I also have an implementation of this for Valence, so if anyone needs it right now, again, hit me up, otherwise, I will release it once it is good enough for me.
Scenario | Deepslate (v0.2.0, zstd) | Polar (v1, zstd) | Polar (v1, uncompressed) | TNT (v1) | Anvil |
---|---|---|---|---|---|
1.19.4 Region | 4.8mb (WOW) | 5.9mb | 26.1mb | 115.9mb | 9.7mb |
The difference may also be the fault of the lack of block entities
I also should say that it is 2am as of writing this so your mileage with this README may vary.