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/