Updated history.txt.
This commit is contained in:
parent
2f0bc9cd40
commit
4787d65443
105
doc/history.txt
105
doc/history.txt
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
LZMA Utils history
|
History of LZMA Utils and XZ Utils
|
||||||
------------------
|
==================================
|
||||||
|
|
||||||
Tukaani distribution
|
Tukaani distribution
|
||||||
|
|
||||||
|
@ -15,10 +15,10 @@ Tukaani distribution
|
||||||
which is an abbreviation of .tar.gz. A logical naming for LZMA
|
which is an abbreviation of .tar.gz. A logical naming for LZMA
|
||||||
compressed packages was .tlz, being an abbreviation of .tar.lzma.
|
compressed packages was .tlz, being an abbreviation of .tar.lzma.
|
||||||
|
|
||||||
At the end of the year 2007, there's no distribution under the Tukaani
|
At the end of the year 2007, there was no distribution under the
|
||||||
project anymore. Development of LZMA Utils still continues. Still,
|
Tukaani project anymore, but development of LZMA Utils was kept going.
|
||||||
there are .tlz packages around, because at least Vector Linux (a
|
Still, there were .tlz packages around, because at least Vector Linux
|
||||||
Slackware based distribution) uses LZMA for its packages.
|
(a Slackware based distribution) used LZMA for its packages.
|
||||||
|
|
||||||
First versions of the modified pkgtools used the LZMA_Alone tool from
|
First versions of the modified pkgtools used the LZMA_Alone tool from
|
||||||
Igor Pavlov's LZMA SDK as is. It was fine, because users wouldn't need
|
Igor Pavlov's LZMA SDK as is. It was fine, because users wouldn't need
|
||||||
|
@ -59,8 +59,8 @@ Second generation
|
||||||
command line tool, but they had completely different command line
|
command line tool, but they had completely different command line
|
||||||
interface. The file format was still the same.
|
interface. The file format was still the same.
|
||||||
|
|
||||||
Lasse wrote liblzmadec, which was a small decoder-only library based on
|
Lasse wrote liblzmadec, which was a small decoder-only library based
|
||||||
the C code found from LZMA SDK. liblzmadec had API similar to zlib,
|
on the C code found from LZMA SDK. liblzmadec had API similar to zlib,
|
||||||
although there were some significant differences, which made it
|
although there were some significant differences, which made it
|
||||||
non-trivial to use it in some applications designed for zlib and
|
non-trivial to use it in some applications designed for zlib and
|
||||||
libbzip2.
|
libbzip2.
|
||||||
|
@ -77,8 +77,8 @@ Second generation
|
||||||
but appeared to work well enough, so some people started using it too.
|
but appeared to work well enough, so some people started using it too.
|
||||||
|
|
||||||
Because the development of the third generation of LZMA Utils was
|
Because the development of the third generation of LZMA Utils was
|
||||||
delayed considerably (roughly two years), the 4.32.x branch had to be
|
delayed considerably (3-4 years), the 4.32.x branch had to be kept
|
||||||
kept maintained. It got some bug fixes now and then, and finally it was
|
maintained. It got some bug fixes now and then, and finally it was
|
||||||
decided to call it stable, although most of the missing features were
|
decided to call it stable, although most of the missing features were
|
||||||
never added.
|
never added.
|
||||||
|
|
||||||
|
@ -90,51 +90,60 @@ File format problems
|
||||||
features. The two biggest problems for non-embedded use were lack of
|
features. The two biggest problems for non-embedded use were lack of
|
||||||
magic bytes and integrity check.
|
magic bytes and integrity check.
|
||||||
|
|
||||||
Igor and Lasse started developing a new file format with some help from
|
Igor and Lasse started developing a new file format with some help
|
||||||
Ville Koskinen, Mark Adler and Mikko Pouru. Designing the new format
|
from Ville Koskinen. Also Mark Adler, Mikko Pouru, H. Peter Anvin,
|
||||||
took quite a long time. It was mostly because Lasse was quite slow at
|
and Lars Wirzenius helped with some minor things at some point of the
|
||||||
getting things done due to personal reasons.
|
development. Designing the new format took quite a long time (actually,
|
||||||
|
too long time would be more appropriate expression). It was mostly
|
||||||
|
because Lasse was quite slow at getting things done due to personal
|
||||||
|
reasons.
|
||||||
|
|
||||||
Near the end of the year 2007 the new format was practically finished.
|
Originally the new format was supposed to use the same .lzma suffix
|
||||||
Compared to LZMA_Alone format and the .gz format used by gzip, the new
|
that was already used by the old file format. Switching to the new
|
||||||
.lzma format is quite complex as a whole. This means that tools having
|
format wouldn't have caused much trouble when the old format wasn't
|
||||||
*full* support for the new format would be larger and more complex than
|
used by many people. But since the development of the new format took
|
||||||
the tools supporting only the old LZMA_Alone format.
|
so long time, the old format got quite popular, and it was decided
|
||||||
|
that the new file format must use a different suffix.
|
||||||
|
|
||||||
For the situations where the full support for the .lzma format wouldn't
|
It was decided to use .xz as the suffix of the new file format. The
|
||||||
be required (embedded systems, operating system kernels), the new
|
first stable .xz file format specification was finally released in
|
||||||
format has a well-defined subset, which is easy to support with small
|
December 2008. In addition to fixing the most obvious problems of
|
||||||
amount of code. It wouldn't be as small as an implementation using the
|
the old .lzma format, the .xz format added some new features like
|
||||||
LZMA_Alone format, but the difference shouldn't be significant.
|
support for multiple filters (compression algorithms), filter chaining
|
||||||
|
(like piping on the command line), and limited random-access reading.
|
||||||
|
|
||||||
The new .lzma format allows dividing the data in multiple independent
|
Currently the primary compression algorithm used in .xz is LZMA2.
|
||||||
blocks, which can be compressed and uncompressed independenly. This
|
It is an extension on top of the original LZMA to fix some practical
|
||||||
makes multi-threading possible with algorithms that aren't inherently
|
problems: LZMA2 adds support for flushing the encoder, uncompressed
|
||||||
parallel (such as LZMA). There's also a central index of the sizes of
|
chunks, eases stateful decoder implementations, and improves support
|
||||||
the blocks, which makes it possible to do limited random-access reading
|
for multithreading. Since LZMA2 is better than the original LZMA, the
|
||||||
with granularity of the block size.
|
original LZMA is not supported in .xz.
|
||||||
|
|
||||||
The new .lzma format uses the same filename suffix that was used for
|
|
||||||
LZMA_Alone files. The advantage is that users using the new tools won't
|
|
||||||
notice the change to the new format. The disadvantage is that the old
|
|
||||||
tools won't work with the new files.
|
|
||||||
|
|
||||||
|
|
||||||
Third generation
|
Transition to XZ Utils
|
||||||
|
|
||||||
LZMA Utils 4.42.0alphas drop the rest of the C++ LZMA SDK. The LZMA and
|
The early versions of XZ Utils were called LZMA Utils. The first
|
||||||
other included filters (algorithm implementations) are still directly
|
releases were 4.42.0alphas. They dropped the rest of the C++ LZMA SDK.
|
||||||
based on LZMA SDK, but ported to C.
|
The code was still directly based on LZMA SDK but ported to C and
|
||||||
|
converted from callback API to stateful API. Later, Igor Pavlov made
|
||||||
|
C version of the LZMA encoder too; these ports from C++ to C were
|
||||||
|
independent in LZMA SDK and LZMA Utils.
|
||||||
|
|
||||||
liblzma is now the core of LZMA Utils. It has zlib-like API, which
|
The core of the new LZMA Utils was liblzma, a compression library with
|
||||||
doesn't suffer from the problems of the API of liblzmadec. liblzma
|
zlib-like API. liblzma supported both the old and new file format. The
|
||||||
supports not only LZMA, but several other filters, which together
|
gzip-like lzma command line tool was rewritten to use liblzma.
|
||||||
can improve compression ratio even further with certain file types.
|
|
||||||
|
|
||||||
The lzma and lzmadec command line tools have been rewritten. They uses
|
The new LZMA Utils code base was renamed to XZ Utils when the name
|
||||||
liblzma to do the actual compressing or uncompressing.
|
of the new file format had been decided. The liblzma compression
|
||||||
|
library retained its name though, because changing it would have
|
||||||
|
caused unnecessary breakage in applications already using the early
|
||||||
|
liblzma snapshots.
|
||||||
|
|
||||||
The development of LZMA Utils 4.42.x is still in alpha stage. Several
|
The xz command line tool can emulate the gzip-like lzma tool by
|
||||||
features are still missing or don't fully work yet. Documentation is
|
creating appropriate symlinks (e.g. lzma -> xz). Thus, practically
|
||||||
also very minimal.
|
all scripts using the lzma tool from LZMA Utils will work as is with
|
||||||
|
XZ Utils (and will keep using the old .lzma format). Still, the .lzma
|
||||||
|
format is more or less deprecated. XZ Utils will keep supporting it,
|
||||||
|
but new applications should use the .xz format, and migrating old
|
||||||
|
applications to .xz is often a good idea too.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue