Add big int format to msgpack.pack #7811
Closed
+39
−15
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds big ints to msgpack.pack, which can now encode 64-bit signed ints.
And now what we can encode and decode with msgpack should be on parity with C python.
Of note:
Differentiating big ints that could fit in 32 bits would require a bunch more code, and I don't even know how I would do that, so it's an optimization of encoding size for another day.
Fixes #6851
Fixes #7388
Some test code that encodes and decodes back to compare the result, catch errors, and also compare to the expected encoding based on C python (doesn't always match but that's super important IMO as long as it decodes the same).
Note that the OverflowError are marked as ✅ when expected.
Before:
After:
Python 3: