commit | ed873f059e809d8f09970132132b666c765c92a3 | [log] [tgz] |
---|---|---|
author | Marcin Kowalczyk <qrczak@google.com> | Fri Aug 02 18:40:56 2024 |
committer | qrczak <qrczak@google.com> | Fri Aug 02 19:46:31 2024 |
tree | 6506e9764f031a5d4e8979c09894051b3308aecb | |
parent | af393c30a29a7c75326468c40df5e699b4c6d73e [diff] |
Add `ByteFill`, representing a number of bytes filled with a single value, replacing `{{,Backward}Writer,DigesterHandle}::Write{Zeros,Chars,Bytes}()` and `{Array,Chain,Cord}OfZeros()`, and providing iteration over blocks which are convertible to `ExternalRef`. This makes it easier to combine writing repetitions with writing other objects in a single variadic call to `Write()` or `DigestFrom()`. This also makes it easier to implement materializing the sequence by iterating over blocks. `WriteSlow(ByteFill)` is virtual, replacing virtual `WriteZerosSlow()` and non-virtual `WriteCharsSlow()`. This means that filling with a value other than zero is customizable too, at the cost of having to customize for any value even if only filling with zeros is customizable in an interesting way. PiperOrigin-RevId: 658855384
Riegeli/records is a file format for storing a sequence of string records, typically serialized protocol buffers. It supports dense compression, fast decoding, seeking, detection and optional skipping of data corruption, filtering of proto message fields for even faster decoding, and parallel encoding.
See documentation.
Riegeli file format will only change in a backward compatible way (i.e. future readers will understand current files, but current readers might not understand files using future features).
Riegeli C++ API might change in incompatible ways.