implement binary packed repeated encoding
There is a bug with the current repeated encoding: it skips default values. Say you have a ResizeArray[1, 2, 3, 0, 4]. The writeRepeated will call froto.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 call froto.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 the WireFormat.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...
@wuzzeb Looks like the CI failed, although azure is down right now so I cant see the failure 🤦♂️
These are the errors:
D:\a\1\s\src\Falanx.Proto.Codec.Binary\Codec.fs(28,5): error FS0010: Incomplete structured construct at or before this point in type definition
[D:\a\1\s\src\Falanx.Proto.Codec.Binary\Falanx.Proto.Codec.Binary.fsproj] [D:\a\1\s\build.proj]
D:\a\1\s\src\Falanx.Proto.Codec.Binary\Codec.fs(40,21): error FS0010: Unexpected symbol '=' in member definition [D:\a\1\s\src\Falanx.Proto.Codec.Binary\Falanx.Proto.Codec.Binary.fsproj] [D:\a\1\s\build.proj]