-
Notifications
You must be signed in to change notification settings - Fork 27
Task List
Joe Tsai edited this page Feb 19, 2016
·
26 revisions
By popular request, Brotli is currently the main focus. However, in order to satisfy that objective, a DEFLATE implementation will be done first.
- Implement
flate.Writer
- Implement
brotli.Writer
The Brotli format shares many similarities with DEFLATE. At its core, it is built on the ideas of LZ77 and Huffman bit-encoding. Thus, implementing DEFLATE first will allow for a better understanding of how to implement Brotli well. Given that the Readers were able to share much code, it is likely that the Writers will also be able to share much code.
-
brotli
-
Reader
- Make use of
internal/prefix
- Add more tests for malicious and strange inputs
- Make use of
-
Writer
- Implement me!
-
-
bzip2
-
Reader
- Handle CRC32 checksums at the block and stream level
- Handle multiple back-to-back files
- Add tests for malicious and strange inputs
- (performance) Reduce trash generation
- (performance) Add chunking between stages to reduce total memory bandwidth
- (performance) Investigate other ways to improve performance
-
Writer
- Optimize assignment of prefix trees for better compression ratio
- Investigate why
internal/sais
is crashing on some inputs - Investigate various BWT construction methods:
-
bwtis
,sais
,qsufsort
,divsufsort
-
- (performance) Remove trash generation
- (performance) Add chunking between stages to reduce total memory bandwidth
- (performance) Investigate other ways to improve performance
- Investigate if blocks can easily be byte aligned
-
-
flate
-
Reader
- Make use of
internal/dict
when available
- Make use of
-
Writer
- Implement me!
-
-
xz
- Implement me!
-
internal/prefix
- Track golang/go#14267 for ability to do unaligned loads/stores
-
internal/dict
- Implement a generic LZ77 dictionary for use in
brotli
andflate
- Implement a generic LZ77 dictionary for use in
-
internal/cgo
- Move C wrappers here
- Make C wrappers correct (they violate Go1.6 pointer passing rules)
-
internal/tool/bench
- Investigate why Brotli tests fail
-
internal/tool/fuzzer
- Test round-trip Go->Go functionality
- Test round-trip C->Go functionality
- Test round-trip Go->C functionality