1 |
|
2 |
XZ Utils Release Notes |
3 |
====================== |
4 |
|
5 |
5.0.8 (2014-12-21) |
6 |
|
7 |
* Fixed an old bug in xzgrep that affected OpenBSD and probably |
8 |
a few other operating systems too. |
9 |
|
10 |
* Updated French and German translations. |
11 |
|
12 |
* Added support for detecting the amount of RAM on AmigaOS/AROS. |
13 |
|
14 |
* Minor build system updates. |
15 |
|
16 |
|
17 |
5.0.7 (2014-09-20) |
18 |
|
19 |
* Fix regressions introduced in 5.0.6: |
20 |
|
21 |
- Fix building with non-GNU make. |
22 |
|
23 |
- Fix invalid Libs.private value in liblzma.pc which broke |
24 |
static linking against liblzma if the linker flags were |
25 |
taken from pkg-config. |
26 |
|
27 |
|
28 |
5.0.6 (2014-09-14) |
29 |
|
30 |
* xzgrep now exits with status 0 if at least one file matched. |
31 |
|
32 |
* A few minor portability and build system fixes |
33 |
|
34 |
|
35 |
5.0.5 (2013-06-30) |
36 |
|
37 |
* lzmadec and liblzma's lzma_alone_decoder(): Support decompressing |
38 |
.lzma files that have less common settings in the headers |
39 |
(dictionary size other than 2^n or 2^n + 2^(n-1), or uncompressed |
40 |
size greater than 256 GiB). The limitations existed to avoid false |
41 |
positives when detecting .lzma files. The lc + lp <= 4 limitation |
42 |
still remains since liblzma's LZMA decoder has that limitation. |
43 |
|
44 |
NOTE: xz's .lzma support or liblzma's lzma_auto_decoder() are NOT |
45 |
affected by this change. They still consider uncommon .lzma headers |
46 |
as not being in the .lzma format. Changing this would give way too |
47 |
many false positives. |
48 |
|
49 |
* xz: |
50 |
|
51 |
- Interaction of preset and custom filter chain options was |
52 |
made less illogical. This affects only certain less typical |
53 |
uses cases so few people are expected to notice this change. |
54 |
|
55 |
Now when a custom filter chain option (e.g. --lzma2) is |
56 |
specified, all preset options (-0 ... -9, -e) earlier are on |
57 |
the command line are completely forgotten. Similarly, when |
58 |
a preset option is specified, all custom filter chain options |
59 |
earlier on the command line are completely forgotten. |
60 |
|
61 |
Example 1: "xz -9 --lzma2=preset=5 -e" is equivalent to "xz -e" |
62 |
which is equivalent to "xz -6e". Earlier -e didn't put xz back |
63 |
into preset mode and thus the example command was equivalent |
64 |
to "xz --lzma2=preset=5". |
65 |
|
66 |
Example 2: "xz -9e --lzma2=preset=5 -7" is equivalent to |
67 |
"xz -7". Earlier a custom filter chain option didn't make |
68 |
xz forget the -e option so the example was equivalent to |
69 |
"xz -7e". |
70 |
|
71 |
- Fixes and improvements to error handling. |
72 |
|
73 |
- Various fixes to the man page. |
74 |
|
75 |
* xzless: Fixed to work with "less" versions 448 and later. |
76 |
|
77 |
* xzgrep: Made -h an alias for --no-filename. |
78 |
|
79 |
* Include the previously missing debug/translation.bash which can |
80 |
be useful for translators. |
81 |
|
82 |
* Include a build script for Mac OS X. This has been in the Git |
83 |
repository since 2010 but due to a mistake in Makefile.am the |
84 |
script hasn't been included in a release tarball before. |
85 |
|
86 |
|
87 |
5.0.4 (2012-06-22) |
88 |
|
89 |
* liblzma: |
90 |
|
91 |
- Fix lzma_index_init(). It could crash if memory allocation |
92 |
failed. |
93 |
|
94 |
- Fix the possibility of an incorrect LZMA_BUF_ERROR when a BCJ |
95 |
filter is used and the application only provides exactly as |
96 |
much output space as is the uncompressed size of the file. |
97 |
|
98 |
- Fix a bug in doc/examples_old/xz_pipe_decompress.c. It didn't |
99 |
check if the last call to lzma_code() really returned |
100 |
LZMA_STREAM_END, which made the program think that truncated |
101 |
files are valid. |
102 |
|
103 |
- New example programs in doc/examples (old programs are now in |
104 |
doc/examples_old). These have more comments and more detailed |
105 |
error handling. |
106 |
|
107 |
* Fix "xz -lvv foo.xz". It could crash on some corrupted files. |
108 |
|
109 |
* Fix output of "xz --robot -lv" and "xz --robot -lvv" which |
110 |
incorrectly printed the filename also in the "foo (x/x)" format. |
111 |
|
112 |
* Fix exit status of "xzdiff foo.xz bar.xz". |
113 |
|
114 |
* Fix exit status of "xzgrep foo binary_file". |
115 |
|
116 |
* Fix portability to EBCDIC systems. |
117 |
|
118 |
* Fix a configure issue on AIX with the XL C compiler. See INSTALL |
119 |
for details. |
120 |
|
121 |
* Update French, German, Italian, and Polish translations. |
122 |
|
123 |
|
124 |
5.0.3 (2011-05-21) |
125 |
|
126 |
* liblzma fixes: |
127 |
|
128 |
- A memory leak was fixed. |
129 |
|
130 |
- lzma_stream_buffer_encode() no longer creates an empty .xz |
131 |
Block if encoding an empty buffer. Such an empty Block with |
132 |
LZMA2 data would trigger a bug in 5.0.1 and older (see the |
133 |
first bullet point in 5.0.2 notes). When releasing 5.0.2, |
134 |
I thought that no encoder creates this kind of files but |
135 |
I was wrong. |
136 |
|
137 |
- Validate function arguments better in a few functions. Most |
138 |
importantly, specifying an unsupported integrity check to |
139 |
lzma_stream_buffer_encode() no longer creates a corrupt .xz |
140 |
file. Probably no application tries to do that, so this |
141 |
shouldn't be a big problem in practice. |
142 |
|
143 |
- Document that lzma_block_buffer_encode(), |
144 |
lzma_easy_buffer_encode(), lzma_stream_encoder(), and |
145 |
lzma_stream_buffer_encode() may return LZMA_UNSUPPORTED_CHECK. |
146 |
|
147 |
- The return values of the _memusage() functions are now |
148 |
documented better. |
149 |
|
150 |
* Fix command name detection in xzgrep. xzegrep and xzfgrep now |
151 |
correctly use egrep and fgrep instead of grep. |
152 |
|
153 |
* French translation was added. |
154 |
|
155 |
|
156 |
5.0.2 (2011-04-01) |
157 |
|
158 |
* LZMA2 decompressor now correctly accepts LZMA2 streams with no |
159 |
uncompressed data. Previously it considered them corrupt. The |
160 |
bug can affect applications that use raw LZMA2 streams. It is |
161 |
very unlikely to affect .xz files because no compressor creates |
162 |
.xz files with empty LZMA2 streams. (Empty .xz files are a |
163 |
different thing than empty LZMA2 streams.) |
164 |
|
165 |
* "xz --suffix=.foo filename.foo" now refuses to compress the |
166 |
file due to it already having the suffix .foo. It was already |
167 |
documented on the man page, but the code lacked the test. |
168 |
|
169 |
* "xzgrep -l foo bar.xz" works now. |
170 |
|
171 |
* Polish translation was added. |
172 |
|
173 |
|
174 |
5.0.1 (2011-01-29) |
175 |
|
176 |
* xz --force now (de)compresses files that have setuid, setgid, |
177 |
or sticky bit set and files that have multiple hard links. |
178 |
The man page had it documented this way already, but the code |
179 |
had a bug. |
180 |
|
181 |
* gzip and bzip2 support in xzdiff was fixed. |
182 |
|
183 |
* Portability fixes |
184 |
|
185 |
* Minor fix to Czech translation |
186 |
|
187 |
|
188 |
5.0.0 (2010-10-23) |
189 |
|
190 |
Only the most important changes compared to 4.999.9beta are listed |
191 |
here. One change is especially important: |
192 |
|
193 |
* The memory usage limit is now disabled by default. Some scripts |
194 |
written before this change may have used --memory=max on xz command |
195 |
line or in XZ_OPT. THESE USES OF --memory=max SHOULD BE REMOVED |
196 |
NOW, because they interfere with user's ability to set the memory |
197 |
usage limit himself. If user-specified limit causes problems to |
198 |
your script, blame the user. |
199 |
|
200 |
Other significant changes: |
201 |
|
202 |
* Added support for XZ_DEFAULTS environment variable. This variable |
203 |
allows users to set default options for xz, e.g. default memory |
204 |
usage limit or default compression level. Scripts that use xz |
205 |
must never set or unset XZ_DEFAULTS. Scripts should use XZ_OPT |
206 |
instead if they need a way to pass options to xz via an |
207 |
environment variable. |
208 |
|
209 |
* The compression settings associated with the preset levels |
210 |
-0 ... -9 have been changed. --extreme was changed a little too. |
211 |
It is now less likely to make compression worse, but with some |
212 |
files the new --extreme may compress slightly worse than the old |
213 |
--extreme. |
214 |
|
215 |
* If a preset level (-0 ... -9) is specified after a custom filter |
216 |
chain options have been used (e.g. --lzma2), the custom filter |
217 |
chain will be forgotten. Earlier the preset options were |
218 |
completely ignored after custom filter chain options had been |
219 |
seen. |
220 |
|
221 |
* xz will create sparse files when decompressing if the uncompressed |
222 |
data contains long sequences of binary zeros. This is done even |
223 |
when writing to standard output that is connected to a regular |
224 |
file and certain additional conditions are met to make it safe. |
225 |
|
226 |
* Support for "xz --list" was added. Combine with --verbose or |
227 |
--verbose --verbose (-vv) for detailed output. |
228 |
|
229 |
* I had hoped that liblzma API would have been stable after |
230 |
4.999.9beta, but there have been a couple of changes in the |
231 |
advanced features, which don't affect most applications: |
232 |
|
233 |
- Index handling code was revised. If you were using the old |
234 |
API, you will get a compiler error (so it's easy to notice). |
235 |
|
236 |
- A subtle but important change was made to the Block handling |
237 |
API. lzma_block.version has to be initialized even for |
238 |
lzma_block_header_decode(). Code that doesn't do it will work |
239 |
for now, but might break in the future, which makes this API |
240 |
change easy to miss. |
241 |
|
242 |
* The major soname has been bumped to 5.0.0. liblzma API and ABI |
243 |
are now stable, so the need to recompile programs linking against |
244 |
liblzma shouldn't arise soon. |
245 |
|