| TODO | TODO | |||
|---|---|---|---|---|
| skipping to change at line 15 | skipping to change at line 15 | |||
| Known bugs | Known bugs | |||
| ---------- | ---------- | |||
| The test suite is too incomplete. | The test suite is too incomplete. | |||
| If the memory usage limit is less than about 13 MiB, xz is unable to | If the memory usage limit is less than about 13 MiB, xz is unable to | |||
| automatically scale down the compression settings enough even though | automatically scale down the compression settings enough even though | |||
| it would be possible by switching from BT2/BT3/BT4 match finder to | it would be possible by switching from BT2/BT3/BT4 match finder to | |||
| HC3/HC4. | HC3/HC4. | |||
| The code to detect number of CPU cores doesn't count hyperthreading | ||||
| as multiple cores. In context of xz, it probably should. | ||||
| Hyperthreading is good at least with p7zip. | ||||
| XZ Utils compress some files significantly worse than LZMA Utils. | XZ Utils compress some files significantly worse than LZMA Utils. | |||
| This is due to faster compression presets used by XZ Utils, and | This is due to faster compression presets used by XZ Utils, and | |||
| can often be worked around by using "xz --extreme". With some files | can often be worked around by using "xz --extreme". With some files | |||
| --extreme isn't enough though: it's most likely with files that | --extreme isn't enough though: it's most likely with files that | |||
| compress extremely well, so going from compression ratio of 0.003 | compress extremely well, so going from compression ratio of 0.003 | |||
| to 0.004 means big relative increase in the compressed file size. | to 0.004 means big relative increase in the compressed file size. | |||
| xz doesn't quote unprintable characters when it displays file names | xz doesn't quote unprintable characters when it displays file names | |||
| given on the command line. | given on the command line. | |||
| skipping to change at line 42 | skipping to change at line 38 | |||
| time and calculated (de)compression speed won't make sense in the | time and calculated (de)compression speed won't make sense in the | |||
| progress indicator (xz --verbose). | progress indicator (xz --verbose). | |||
| If liblzma has created threads and fork() gets called, liblzma | If liblzma has created threads and fork() gets called, liblzma | |||
| code will break in the child process unless it calls exec() and | code will break in the child process unless it calls exec() and | |||
| doesn't touch liblzma. | doesn't touch liblzma. | |||
| Missing features | Missing features | |||
| ---------------- | ---------------- | |||
| Add support for storing metadata in .xz files. A preliminary | ||||
| idea is to create a new Stream type for metadata. When both | ||||
| metadata and data are wanted in the same .xz file, two or more | ||||
| Streams would be concatenated. | ||||
| The state stored in lzma_stream should be cloneable, which would | ||||
| be mostly useful when using a preset dictionary in LZMA2, but | ||||
| it may have other uses too. Compare to deflateCopy() in zlib. | ||||
| Support LZMA_FINISH in raw decoder to indicate end of LZMA1 and | Support LZMA_FINISH in raw decoder to indicate end of LZMA1 and | |||
| other streams that don't have an end of payload marker. | other streams that don't have an end of payload marker. | |||
| Adjust dictionary size when the input file size is known. | Adjust dictionary size when the input file size is known. | |||
| Maybe do this only if an option is given. | Maybe do this only if an option is given. | |||
| xz doesn't support copying extended attributes, access control | xz doesn't support copying extended attributes, access control | |||
| lists etc. from source to target file. | lists etc. from source to target file. | |||
| Multithreaded compression: | Multithreaded compression: | |||
| skipping to change at line 74 | skipping to change at line 79 | |||
| Support changing lzma_options_lzma.mode with lzma_filters_update(). | Support changing lzma_options_lzma.mode with lzma_filters_update(). | |||
| Support LZMA_FULL_FLUSH for lzma_stream_decoder() to stop at | Support LZMA_FULL_FLUSH for lzma_stream_decoder() to stop at | |||
| Block and Stream boundaries. | Block and Stream boundaries. | |||
| lzma_strerror() to convert lzma_ret to human readable form? | lzma_strerror() to convert lzma_ret to human readable form? | |||
| This is tricky, because the same error codes are used with | This is tricky, because the same error codes are used with | |||
| slightly different meanings, and this cannot be fixed anymore. | slightly different meanings, and this cannot be fixed anymore. | |||
| Make it possible to adjust LZMA2 options in the middle of a Block | ||||
| so that the encoding speed vs. compression ratio can be optimized | ||||
| when the compressed data is streamed over network. | ||||
| Improved BCJ filters. The current filters are small but they aren't | ||||
| so great when compressing binary packages that contain various file | ||||
| types. Specifically, they make things worse if there are static | ||||
| libraries or Linux kernel modules. The filtering could also be | ||||
| more effective (without getting overly complex), for example, | ||||
| streamable variant BCJ2 from 7-Zip could be implemented. | ||||
| Filter that autodetects specific data types in the input stream | ||||
| and applies appropriate filters for the corrects parts of the input. | ||||
| Perhaps combine this with the BCJ filter improvement point above. | ||||
| Long-range LZ77 method as a separate filter or as a new LZMA2 | ||||
| match finder. | ||||
| Documentation | Documentation | |||
| ------------- | ------------- | |||
| Some tutorial is needed for liblzma. I have planned to write some | More tutorial programs are needed for liblzma. | |||
| extremely well commented example programs, which would work as | ||||
| a tutorial. I suppose the Doxygen tags are quite OK as a quick | ||||
| reference once one is familiar with the liblzma API. | ||||
| Document the LZMA1 and LZMA2 algorithms. | Document the LZMA1 and LZMA2 algorithms. | |||
| Miscellaneous | ||||
| ------------ | ||||
| Try to get the media type for .xz registered at IANA. | ||||
| End of changes. 5 change blocks. | ||||
| 8 lines changed or deleted | 28 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||