
XZ Utils To-Do List
===================

Known bugs
----------

    The test suite is too incomplete.

    If the memory usage limit is less than about 13 MiB, xz is unable to
    automatically scale down the compression settings enough even though
    it would be  possible by switching from BT2/BT3/BT4 match finder to
    HC3/HC4.

    XZ Utils compress some files significantly worse than LZMA Utils.
    This is due to faster compression presets used by XZ Utils, and
    can often be worked around by using "xz --extreme". With some files
    --extreme isn't enough though: it's most likely with files that
    compress extremely well, so going from compression ratio of 0.003
    to 0.004 means big relative increase in the compressed file size.

    xz doesn't quote unprintable characters when it displays file names
    given on the command line.

    tuklib_exit() doesn't block signals => EINTR is possible.

    SIGTSTP is not handled. If xz is stopped, the estimated remaining
    time and calculated (de)compression speed won't make sense in the
    progress indicator (xz --verbose).

    If liblzma has created threads and fork() gets called, liblzma
    code will break in the child process unless it calls exec() and
    doesn't touch liblzma.


Missing features
----------------

    Support LZMA_FINISH in raw decoder to indicate end of LZMA1 and
    other streams that don't have an end of payload marker.

    Adjust dictionary size when the input file size is known.
    Maybe do this only if an option is given.

    xz doesn't support copying extended attributes, access control
    lists etc. from source to target file.

    Multithreaded compression:
      - Reduce memory usage of the current method.
      - Implement threaded match finders.
      - Implement pigz-style threading in LZMA2.

    Multithreaded decompression

    Buffer-to-buffer coding could use less RAM (especially when
    decompressing LZMA1 or LZMA2).

    I/O library is not implemented (similar to gzopen() in zlib).
    It will be a separate library that supports uncompressed, .gz,
    .bz2, .lzma, and .xz files.

    Support changing lzma_options_lzma.mode with lzma_filters_update().

    Support LZMA_FULL_FLUSH for lzma_stream_decoder() to stop at
    Block and Stream boundaries.

    lzma_strerror() to convert lzma_ret to human readable form?
    This is tricky, because the same error codes are used with
    slightly different meanings, and this cannot be fixed anymore.


Documentation
-------------

    Some tutorial is needed for liblzma. I have planned to write some
    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.

