implement binary packed repeated encoding #145
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.
There is a bug with the current repeated encoding: it skips default values. Say you have a ResizeArray with
[1, 2, 3, 0, 4]
. ThewriteRepeated
will callfroto.Encoding.fromVarint
which ignores writing default values, in particular the 0 will not be written.Froto.Encoding
has fromRequired versions of each, so I first started fixing the bug by changing the code to callfroto.Encoding.fromRequiredVarint
and similar for primitive repeated fields. But then I realized froto also has some packed encoding helpers but they couldn't be used directly because froto uses a list type instead of seq or resizearray. Therefore, I use some of theWireFormat.Pack
utilities and recreate the packed primitive fields.Unfortunately, I can't get the build working on my laptop (Linux), paket is giving me some errors. So we will see what the CI server says about the build. If it fails, I will have to look into getting paket working...