mirror of https://git.tukaani.org/xz.git
173 lines
6.8 KiB
Plaintext
173 lines
6.8 KiB
Plaintext
|
|
XZ Utils
|
|
========
|
|
|
|
0. Overview
|
|
1. Documentation
|
|
1.1. Overall documentation
|
|
1.2. Documentation for command line tools
|
|
1.3. Documentation for liblzma
|
|
2. Version numbering
|
|
3. Other implementations of the .xz format
|
|
4. Contact information
|
|
|
|
|
|
0. Overview
|
|
-----------
|
|
|
|
XZ Utils provide a general purporse data compression library and
|
|
command line tools. The native file format is the .xz format, but
|
|
also the legacy .lzma format is supported. The .xz format supports
|
|
multiple compression algorithms, which are called "filters" in
|
|
context of XZ Utils. The primary filter is currently LZMA2. With
|
|
typical files, XZ Utils create about 30 % smaller files than gzip.
|
|
|
|
To ease adapting support for the .xz format into existing applications
|
|
and scripts, the API of liblzma is somewhat similar to the API of the
|
|
popular zlib library. For the same reason, the command line tool xz
|
|
has similar command line syntax than that of gzip.
|
|
|
|
When aiming for the highest compression ratio, LZMA2 encoder uses
|
|
a lot of CPU time and may use, depending on the settings, even
|
|
hundreds of megabytes of RAM. However, in fast modes, LZMA2 encoder
|
|
competes with bzip2 in compression speed, RAM usage, and compression
|
|
ratio.
|
|
|
|
LZMA2 is reasonably fast to decompress. It is a little slower than
|
|
gzip, but a lot faster than bzip2. Being fast to decompress means
|
|
that the .xz format is especially nice when the same file will be
|
|
decompressed very many times (usually on different computers), which
|
|
is the case e.g. when distributing software packages. In such
|
|
situations, it's not too bad if the compression takes some time,
|
|
since that needs to be done only once to benefit many people.
|
|
|
|
With some file types, combining (or "chaining") LZMA2 with an
|
|
additional filter can improve compression ratio. A filter chain may
|
|
contain up to four filters, although usually only one two is used.
|
|
For example, putting a BCJ (Branch/Call/Jump) filter before LZMA2
|
|
in the filter chain can improve compression ratio of executable files.
|
|
|
|
Since the .xz format allows adding new filter IDs, it is possible that
|
|
some day there will be a filter that is, for example, much faster to
|
|
compress than LZMA2 (but probably with worse compression ratio).
|
|
Similarly, it is possible that some day there is a filter that will
|
|
compress better than LZMA2.
|
|
|
|
XZ Utils doesn't support multithreaded compression or decompression
|
|
yet. It has been planned though and taken into account when designing
|
|
the .xz file format.
|
|
|
|
|
|
1. Documentation
|
|
----------------
|
|
|
|
1.1. Overall documentation
|
|
|
|
README This file
|
|
|
|
INSTALL.generic Generic install instructions for those not familiar
|
|
with packages using GNU Autotools
|
|
INSTALL Installation instructions specific to XZ Utils
|
|
PACKAGERS Information to packagers of XZ Utils
|
|
|
|
COPYING XZ Utils copyright and license information
|
|
COPYING.GPLv2 GNU General Public License version 2
|
|
COPYING.GPLv3 GNU General Public License version 3
|
|
COPYING.LGPLv2.1 GNU Lesser General Public License version 2.1
|
|
|
|
AUTHORS The main authors of XZ Utils
|
|
THANKS Incomplete list of people who have helped making
|
|
this software
|
|
NEWS User-visible changes between XZ Utils releases
|
|
ChangeLog Detailed list of changes (commit log)
|
|
|
|
Note that only some of the above files are included in binary
|
|
packages.
|
|
|
|
|
|
1.2. Documentation for command line tools
|
|
|
|
The command line tools are documented as man pages. In source code
|
|
releases (and possibly also in some binary packages), the man pages
|
|
are also provided in plain text (ASCII only) and PDF formats in the
|
|
directory "doc/man" to make the man pages more accessible to those
|
|
whose operating system doesn't provide an easy way to view man pages.
|
|
|
|
|
|
1.3. Documentation for liblzma
|
|
|
|
The liblzma API headers include short docs about each function
|
|
and data type as Doxygen tags. These docs should be quite OK as
|
|
a quick reference.
|
|
|
|
I have planned to write a bunch of very well documented example
|
|
programs, which (due to comments) should work as a tutorial to
|
|
various features of liblzma. No such example programs have been
|
|
written yet.
|
|
|
|
For now, if you have never used liblzma, libbzip2, or zlib, I
|
|
recommend learning *basics* of zlib API. Once you know that, it
|
|
should be easier to learn liblzma.
|
|
|
|
http://zlib.net/manual.html
|
|
http://zlib.net/zlib_how.html
|
|
|
|
|
|
2. Version numbering
|
|
--------------------
|
|
|
|
The version number format of XZ Utils is X.Y.ZS:
|
|
|
|
- X is the major version. When this is incremented, the library
|
|
API and ABI break.
|
|
|
|
- Y is the minor version. It is incremented when new features are
|
|
added without breaking existing API or ABI. Even Y indicates
|
|
stable release and odd Y indicates unstable (alpha or beta
|
|
version).
|
|
|
|
- Z is the revision. This has different meaning for stable and
|
|
unstable releases:
|
|
* Stable: Z is incremented when bugs get fixed without adding
|
|
any new features.
|
|
* Unstable: Z is just a counter. API or ABI of features added
|
|
in earlier unstable releases having the same X.Y may break.
|
|
|
|
- S indicates stability of the release. It is missing from the
|
|
stable releases where Y is an even number. When Y is odd, S
|
|
is either "alpha" or "beta" to make it very clear that such
|
|
versions are not stable releases. The same X.Y.Z combination is
|
|
not used for more than one stability level i.e. after X.Y.Zalpha,
|
|
the next version can be X.Y.(Z+1)beta but not X.Y.Zbeta.
|
|
|
|
|
|
3. Other implementations of the .xz format
|
|
------------------------------------------
|
|
|
|
7-Zip and the p7zip port of 7-Zip support the .xz format starting
|
|
from the version 9.00alpha.
|
|
|
|
http://7-zip.org/
|
|
http://p7zip.sourceforge.net/
|
|
|
|
XZ Embedded is a limited implementation written for use in the Linux
|
|
kernel, but it is also suitable for other embedded use.
|
|
|
|
http://tukaani.org/xz-embedded/
|
|
|
|
|
|
4. Contact information
|
|
----------------------
|
|
|
|
If you have questions, bug reports, patches etc. related to XZ Utils,
|
|
contact Lasse Collin <lasse.collin@tukaani.org>. tukaani.org uses
|
|
greylisting to reduce spam, thus when you send your first email, it
|
|
may get delayed by a few hours. In addition to that, I'm sometimes
|
|
slow at replying. If you haven't got a reply within two weeks, assume
|
|
that your email has got lost and resend it or use IRC.
|
|
|
|
You can find me also from #tukaani on Freenode; my nick is Larhzu.
|
|
The channel tends to be pretty quiet, so just ask your question and
|
|
someone may wake up.
|
|
|