
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.

    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.
    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.

