Skip to content

Commit

Permalink
Vendor import of xz-5.2.0 (stripped)
Browse files Browse the repository at this point in the history
  • Loading branch information
rpaulo authored and rpaulo committed Feb 6, 2015
1 parent 65c6ce7 commit 82958f0
Show file tree
Hide file tree
Showing 118 changed files with 7,695 additions and 1,239 deletions.
2,897 changes: 2,605 additions & 292 deletions ChangeLog

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions THANKS
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,26 @@ has been important. :-) In alphabetical order:
- Denis Excoffier
- Michael Felt
- Mike Frysinger
- Daniel Richard G.
- Bill Glessner
- Jason Gorski
- Juan Manuel Guerrero
- Diederik de Haas
- Joachim Henke
- Christian Hesse
- Vincenzo Innocente
- Peter Ivanov
- Jouk Jansen
- Jun I Jin
- Per Øyvind Karlsen
- Thomas Klausner
- Richard Koch
- Ville Koskinen
- Jan Kratochvil
- Christian Kujau
- Stephan Kulow
- Peter Lawler
- James M Leddy
- Hin-Tak Leung
- Andraž 'ruskie' Levstik
- Cary Lewis
Expand All @@ -49,6 +58,7 @@ has been important. :-) In alphabetical order:
- Bela Lubkin
- Gregory Margo
- Jim Meyering
- Arkadiusz Miskiewicz
- Conley Moorhous
- Rafał Mużyło
- Adrien Nader
Expand All @@ -61,6 +71,7 @@ has been important. :-) In alphabetical order:
- Diego Elio Pettenò
- Elbert Pol
- Mikko Pouru
- Trần Ngọc Quân
- Pavel Raiskup
- Robert Readman
- Bernhard Reutner-Fischer
Expand All @@ -75,13 +86,15 @@ has been important. :-) In alphabetical order:
- Stuart Shelton
- Jonathan Stott
- Dan Stromberg
- Vincent Torri
- Paul Townsend
- Mohammed Adnène Trojette
- Alexey Tourbin
- Patrick J. Volkerding
- Martin Väth
- Christian Weisgerber
- Bert Wesarg
- Fredrik Wikstrom
- Ralf Wildenhues
- Charles Wilson
- Lars Wirzenius
Expand Down
58 changes: 53 additions & 5 deletions TODO
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,36 @@ Known bugs
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
----------------

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
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
Multithreaded compression:
- Reduce memory usage of the current method.
- Implement threaded match finders.
- Implement pigz-style threading in LZMA2.

Multithreaded decompression

Expand All @@ -46,18 +68,44 @@ Missing features
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.

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

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.
More tutorial programs are needed for liblzma.

Document the LZMA1 and LZMA2 algorithms.


Miscellaneous
------------

Try to get the media type for .xz registered at IANA.

Loading

0 comments on commit 82958f0

Please sign in to comment.