Changes in each version
The BitBuffer module with additions is used to store values as low as possible
VarInts are variable-length integers. They are good because as the number increases, the length also does. Making short numbers use less amount of data.
This is the most important part, reutilizing values. Any kind of value. There are a lot of dictionaries with repeating indexes, and it’s good to shorten it to ~2 bytes.
Backwards compatibility included
I noticed that it wasn’t necessary to modify the original source
I forgot to retrieve the serialized data