blob: 58f3b0114672bdab7cd1421d193454be150e7392 [file] [log] [blame]
Stefan Bodewigbdd4bd62015-01-30 08:14:03 +00001 Apache Commons Compress RELEASE NOTES
Sebastian Bazley48882f12010-04-13 21:02:37 +00002
Stefan Bodewig4a154172013-10-13 04:06:16 +00003Apache Commons Compress software defines an API for working with
4compression and archive formats. These include: bzip2, gzip, pack200,
Stefan Bodewigde633062014-10-09 12:00:48 +00005lzma, xz, Snappy, traditional Unix Compress, DEFLATE and ar, cpio,
6jar, tar, zip, dump, 7z, arj.
7
Stefan Bodewigff38bf52016-03-30 15:12:33 +02008Release 1.11
Torsten Curdt68db5fa2016-01-15 15:35:17 +01009------------
10
Stefan Bodewigff38bf52016-03-30 15:12:33 +020011New features:
12o TarArchiveInputStream now supports reading global PAX headers.
13 Issue: COMPRESS-347.
14o The PAX headers for sparse entries written by star are now
15 applied.
16 Issue: COMPRESS-346.
17o GNU sparse files using one of the PAX formats are now
18 detected, but cannot be extracted.
19 Issue: COMPRESS-345.
20o New method SevenZFile.getEntries can be used to list the
21 contents of a 7z archive.
22 Issue: COMPRESS-341.
23o When using Zip64Mode.Always also use ZIP64 extensions inside
24 the central directory.
25 GitHub Pull Request #10 Thanks to Matt Hovey.
26o ZipFile.getRawInputStream() is now part of the public API
27 Issue: COMPRESS-323.
28o Allow byte-for-byte replication of Zip entries.
29 GitHub Pull Request #6. Thanks to Jason van Zyl.
Torsten Curdt68db5fa2016-01-15 15:35:17 +010030o TarArchiveEntry's preserveLeadingSlashes is now a property and used
31 on later calls to setName, too.
32 This behavior is a breaking change.
Stefan Bodewigff38bf52016-03-30 15:12:33 +020033 Issue: COMPRESS-328.
34o Added read-only support for bzip2 compression used inside of
35 ZIP archives.
36 GitHub Pull Request #4. Thanks to Sören Glimm.
37
38Fixed Bugs:
39o ArArchiveInputStream can now read GNU extended names that are
40 terminated with a NUL byte rather than a linefeed.
41 Issue: COMPRESS-344.
42o Native Memory Leak in Sevenz-DeflateDecoder.
43 Issue: COMPRESS-343. Thanks to Rene Preissel.
44o SevenZFile will now only try to drain an entry's content when
45 moving on to the next entry if data is read from the next
46 entry. This should improve performance for applications that
47 try to skip over entries.
48 Issue: COMPRESS-340. Thanks to Dawid Weiss.
49o file names of tar archives using the xstar format are now
50 parsed properly.
51 Issue: COMPRESS-336.
52o checksums of tars that pad the checksum field to the left are
53 now calculated properly.
54 Issue: COMPRESS-335.
55o ArArchiveInputStream failed to read past the first entry when
56 BSD long names have been used.
57 Issue: COMPRESS-334. Thanks to Jeremy Gustie.
58o Added buffering for random access which speeds up 7Z support.
59 Issue: COMPRESS-333. Thanks to Dawid Weiss.
60o The checksum validation of TararchiveEntry is now as strict as
61 the validation of GNU tar, which eliminates a few cases of
62 false positives of ArchiveStreamFactory.
63 This behavior is a breaking change since the check has become
64 more strict but any archive that fails the checksum test now
65 would also fail it when extracted with other tools and must be
66 considered an invalid archive.
67 Issue: COMPRESS-331.
68o SnappyCompressorInputStream and
69 FramedSnappyCompressorInputStream returned 0 at the end of the
70 stream under certain circumstances.
71 Issue: COMPRESS-332.
72o Adjusted unit test to updates in Java8 and later that change
73 the logic of ZipEntry#getTime.
74 Issue: COMPRESS-326.
75o TarArchiveOutputStream will now recognize GNU long name and
76 link entries even if the special entry has a different name
77 than GNU tar uses itself. This seems to be the case for
78 archives created by star.
79 Issue: COMPRESS-324.
80o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
81 fields are read from the central directory.
82 Issue: COMPRESS-321.
Torsten Curdt68db5fa2016-01-15 15:35:17 +010083
Stefan Bodewigec075142015-01-26 05:12:09 +000084Release 1.10
85------------
86
87Release 1.10 moves the former
88org.apache.commons.compress.compressors.z._internal_ package which
89breaks backwards compatibility for code which used the old package.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +000090
91This also changes the superclass of ZCompressorInputStream which makes
92this class binary incompatible with the one of Compress 1.9. Code
93that extends ZCompressorInputStream will need to be recompiled in
94order to work with Compress 1.10.
Stefan Bodewigc100d2e2015-01-30 08:24:54 +000095
Stefan Bodewigec075142015-01-26 05:12:09 +000096New features:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +000097o CompressorStreamFactory can now auto-detect DEFLATE streams
98 with ZLIB header.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +010099 Issue: COMPRESS-316. Thanks to Nick Burch.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000100o CompressorStreamFactory can now auto-detect LZMA streams.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100101 Issue: COMPRESS-313.
Stefan Bodewigec075142015-01-26 05:12:09 +0000102o Added support for parallel compression. This low-level API allows
103 a client to build a zip/jar file by using the class
104 org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
105
106 Zip documentation updated with further notes about parallel features.
107
108 Please note that some aspects of jar creation need to be
109 handled by client code and is not part of commons-compress for this
110 release.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100111 Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000112o Cut overall object instantiation in half by changing file
113 header generation algorithm, for a 10-15 percent performance
114 improvement.
115
116 Also extracted two private methods createLocalFileHeader
117 and createCentralFileHeader in ZipArchiveOutputStream.
118 These may have some interesting additional usages in the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100119 near future. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000120o New methods in ZipArchiveOutputStream and ZipFile allows
121 entries to be copied from one archive to another without
122 having to re-compress them.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100123 Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000124
125Fixed Bugs:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000126o TarArchiveInputStream can now read entries with group or
127 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100128 Issue: COMPRESS-314.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000129o TarArchiveOutputStream can now write entries with group or
130 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100131 Issue: COMPRESS-315.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000132o TarArchiveEntry's constructor with a File and a String arg
133 didn't normalize the name.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100134 Issue: COMPRESS-312.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000135o ZipEncodingHelper no longer reads system properties directly
136 to determine the default charset.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100137 Issue: COMPRESS-308.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000138o BZip2CompressorInputStream#read would return -1 when asked to
139 read 0 bytes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100140 Issue: COMPRESS-309.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000141o ArchiveStreamFactory fails to pass on the encoding when creating
142 some streams.
143 * ArjArchiveInputStream
144 * CpioArchiveInputStream
145 * DumpArchiveInputStream
146 * JarArchiveInputStream
147 * TarArchiveInputStream
148 * JarArchiveOutputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100149 Issue: COMPRESS-306.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000150o Restore immutability/thread-safety to ArchiveStreamFactory.
151 The class is now immutable provided that the method setEntryEncoding
152 is not used. The class is thread-safe.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100153 Issue: COMPRESS-302.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000154o Restore immutability/thread-safety to CompressorStreamFactory.
155 The class is now immutable provided that the method
156 setDecompressConcatenated is not used. The class is thread-safe.
157 Issue: COMPRESS-303.
Stefan Bodewigec075142015-01-26 05:12:09 +0000158o ZipFile logs a warning in its finalizer when its constructor
159 has thrown an exception reading the file - for example if the
160 file doesn't exist.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100161 Issue: COMPRESS-297.
Stefan Bodewigec075142015-01-26 05:12:09 +0000162o Improved error message when tar encounters a groupId that is
163 too big to write without using the STAR or POSIX format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100164 Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000165o SevenZFile now throws the specific PasswordRequiredException
166 when it encounters an encrypted stream but no password has
167 been specified.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100168 Issue: COMPRESS-298.
Stefan Bodewigec075142015-01-26 05:12:09 +0000169
170Changes:
171o Moved the package
172 org.apache.commons.compress.compressors.z._internal_ to
173 org.apache.commons.compress.compressors.lzw and made it part
174 of the API that is officially supported. This will break
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100175 existing code that uses the old package. Thanks to Damjan Jovanovic.
Stefan Bodewigec075142015-01-26 05:12:09 +0000176
177For complete information on Apache Commons Compress, including instructions
178on how to submit bug reports, patches, or suggestions for improvement,
179see the Apache Commons Compress website:
180
181http://commons.apache.org/compress/
182
183Old Release Notes
184=================
185
Stefan Bodewigde633062014-10-09 12:00:48 +0000186Release 1.9
187-----------
188
189New features:
190o Added support for DEFLATE streams without any gzip framing.
191 Issue: COMPRESS-263.
192 Thanks to Matthias Stevens.
193
194Fixed Bugs:
195o When reading 7z files unknown file properties and properties of type
196 kDummy are now ignored.
197 Issue: COMPRESS-287.
198o Expanding 7z archives using LZMA compression could cause an
199 EOFException.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100200 Issue: COMPRESS-286.
Stefan Bodewigde633062014-10-09 12:00:48 +0000201o Long-Name and -link or PAX-header entries in TAR archives always had
202 the current time as last modfication time, creating archives that
203 are different at the byte level each time an archive was built.
204 Issue: COMPRESS-289.
205 Thanks to Bob Robertson.
206
207Changes:
208o Checking for XZ for Java may be expensive. The result will now be
209 cached outside of an OSGi environment. You can use the new
210 XZUtils#setCacheXZAvailability to overrride this default behavior.
211 Issue: COMPRESS-285.
212
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000213Release 1.8.1
Stefan Bodewigde633062014-10-09 12:00:48 +0000214-------------
Sebastian Bazley48882f12010-04-13 21:02:37 +0000215
Stefan Bodewig48d74702013-03-10 17:10:57 +0000216New features:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000217o COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100218 (".Z") streams.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000219
Sebastian Bazley48882f12010-04-13 21:02:37 +0000220Fixed Bugs:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000221o COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100222 non-buffered stream in certain cases.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000223o COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100224 more could be read from the stream.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000225o COMPRESS-276: ArchiveStreams now validate there is a current entry before
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100226 reading or writing entry data.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000227o ArjArchiveInputStream#canReadEntryData tested the current
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100228 entry of the stream rather than its argument.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000229o COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100230 entries.
231o COMPRESS-273: Added a few null checks to improve robustness.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000232o COMPRESS-278: TarArchiveInputStream failed to read archives with empty
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100233 gid/uid fields.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000234o COMPRESS-279: TarArchiveInputStream now again throws an exception when it
235 encounters a truncated archive while reading from the last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100236 entry.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000237o COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100238 IOUtils#skip method. Thanks to BELUGA BEHR.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000239
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000240Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100241o The dependency on org.tukaani:xz is now marked as optional.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000242
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000243Release 1.8
244-----------
245
246New features:
247o GzipCompressorInputStream now provides access to the same
248 metadata that can be provided via GzipParameters when writing
249 a gzip stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100250 Issue: COMPRESS-260.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000251o SevenZOutputFile now supports chaining multiple
252 compression/encryption/filter methods and passing options to
253 the methods.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100254 Issue: COMPRESS-266.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000255o The (compression) method(s) can now be specified per entry in
256 SevenZOutputFile.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100257 Issue: COMPRESS-261.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000258o SevenZArchiveEntry "knows" which method(s) have been used to
259 write it to the archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100260 Issue: COMPRESS-258.
261o The 7z package now supports the delta filter as method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000262o The 7z package now supports BCJ filters for several platforms.
263 You will need a version >= 1.5 of XZ for Java to read archives
264 using BCJ, though.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100265 Issue: COMPRESS-257.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000266
267Fixed Bugs:
268o BZip2CompressorInputStream read fewer bytes than possible from
269 a truncated stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100270 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000271o SevenZFile failed claiming the dictionary was too large when
272 archives used LZMA compression for headers and content and
273 certain non-default dictionary sizes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100274 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000275o CompressorStreamFactory.createCompressorInputStream with
276 explicit compression did not honor decompressConcatenated
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100277 Issue: COMPRESS-259.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000278o TarArchiveInputStream will now read archives created by tar
279 implementations that encode big numbers by not adding a
280 trailing NUL.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100281 Issue: COMPRESS-262.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000282o ZipArchiveInputStream would return NUL bytes for the first 512
283 bytes of a STORED entry if it was the very first entry of the
284 archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100285 Issue: COMPRESS-264.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000286o When writing PAX/POSIX headers for TAR entries with
287 backslashes or certain non-ASCII characters in their name
288 TarArchiveOutputStream could fail.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100289 Issue: COMPRESS-265.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000290o ArchiveStreamFactory now throws a StreamingNotSupported - a
291 new subclass of ArchiveException - if it is asked to read from
292 or write to a stream and Commons Compress doesn't support
293 streaming for the format. This currently only applies to the
294 7z format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100295 Issue: COMPRESS-267.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000296
297Release 1.7
298-----------
299
300New features:
301o Read-Only support for Snappy compression.
302 Issue: COMPRESS-147. Thanks to BELUGA BEHR.
303o Read-Only support for .Z compressed files.
304 Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
305o ZipFile and ZipArchiveInputStream now support reading entries
306 compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
307o GzipCompressorOutputStream now supports setting the compression
308 level and the header metadata (filename, comment, modification time,
309 operating system and extra flags)
310 Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
311o ZipFile and ZipArchiveInputStream now support reading entries
312 compressed using the IMPLODE method.
313 Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
314o ZipFile and the 7z file classes now implement Closeable and can be
315 used in try-with-resources constructs.
316
317Fixed Bugs:
318o SevenZOutputFile#closeArchiveEntry throws an exception when using
319 LZMA2 compression on Java8. Issue: COMPRESS-241.
320o 7z reading of big 64bit values could be wrong.
321 Issue: COMPRESS-244. Thanks to Nico Kruber.
322o TarArchiveInputStream could fail to read an archive completely.
323 Issue: COMPRESS-245.
324o The time-setters in X5455_ExtendedTimestamp now set the
325 corresponding flags explicitly - i.e. they set the bit if the valus
326 is not-null and reset it otherwise. This may cause
327 incompatibilities if you use setFlags to unset a bit and later set
328 the time to a non-null value - the flag will now be set.
329 Issue: COMPRESS-242.
330o SevenZOutputFile would create invalid archives if more than six
331 empty files or directories were included. Issue: COMPRESS-252.
332
333Release 1.6
334-----------
335
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100336Version 1.6 introduces changes to the internal API of the tar package that
337break backwards compatibility in the following rare cases. This version
338removes the package private TarBuffer class along with the protected "buffer"
339members in TarArchiveInputStream and TarArchiveOutputStream. This change will
340only affect you if you have created a subclass of one of the stream classes
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000341and accessed the buffer member or directly used the TarBuffer class.
342
343Changes in this version include:
344
345New features:
346o Added support for 7z archives. Most compression algorithms
347 can be read and written, LZMA and encryption are only
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100348 supported when reading. Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000349o Added read-only support for ARJ archives that don't use
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100350 compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000351o DumpArchiveInputStream now supports an encoding parameter that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100352 can be used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000353o The CPIO streams now support an encoding parameter that can be
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100354 used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000355o Read-only support for LZMA standalone compression has been added.
356 Issue: COMPRESS-111.
357
358Fixed Bugs:
359o TarBuffer.tryToConsumeSecondEOFRecord could throw a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100360 NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000361o Parsing of zip64 extra fields has become more lenient in order
362 to be able to read archives created by DotNetZip and maybe
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100363 other archivers as well. Issue: COMPRESS-228.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000364o TAR will now properly read the names of symbolic links with
365 long names that use the GNU variant to specify the long file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100366 name. Issue: COMPRESS-229. Thanks to Christoph Gysin.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000367o ZipFile#getInputStream could return null if the archive
368 contained duplicate entries.
369 The class now also provides two new methods to obtain all
370 entries of a given name rather than just the first one.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100371 Issue: COMPRESS-227.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000372o CpioArchiveInputStream failed to read archives created by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100373 Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000374o TarArchiveOutputStream now properly handles link names that
375 are too long to fit into a traditional TAR header. Issue:
376 COMPRESS-237. Thanks to Emmanuel Bourg.
377o The auto-detecting create*InputStream methods of Archive and
378 CompressorStreamFactory could fail to detect the format of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100379 blocking input streams. Issue: COMPRESS-239.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000380
381Changes:
382o Readabilty patch to TarArchiveInputStream. Issue:
383 COMPRESS-232. Thanks to BELUGA BEHR.
384o Performance improvements to TarArchiveInputStream, in
385 particular to the skip method. Issue: COMPRESS-234. Thanks to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100386 BELUGA BEHR.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000387
388Release 1.5
389-----------
390
391New features:
392
393o CompressorStreamFactory has an option to create decompressing
394 streams that decompress the full input for formats that support
395 multiple concatenated streams.
396 Issue: COMPRESS-220.
397
398Fixed Bugs:
399
400o Typo in CompressorStreamFactory Javadoc
401 Issue: COMPRESS-218.
402 Thanks to Gili.
403o ArchiveStreamFactory's tar stream detection created false positives
404 for AIFF files.
405 Issue: COMPRESS-191.
406 Thanks to Jukka Zitting.
407o XZ for Java didn't provide an OSGi bundle. Compress' dependency on
408 it has now been marked optional so Compress itself can still be used
409 in an OSGi context.
410 Issue: COMPRESS-199.
411 Thanks to Jukka Zitting.
412o When specifying the encoding explicitly TarArchiveOutputStream would
413 write unreadable names in GNU mode or even cause errors in POSIX
414 mode for file names longer than 66 characters.
415 Issue: COMPRESS-200.
416 Thanks to Christian Schlichtherle.
417o Writing TAR PAX headers failed if the generated entry name ended
418 with a "/".
419 Issue: COMPRESS-203.
420o ZipArchiveInputStream sometimes failed to provide input to the
421 Inflater when it needed it, leading to reads returning 0.
422 Issue: COMPRESS-189.
423 Thanks to Daniel Lowe.
424o TarArchiveInputStream ignored the encoding for GNU long name
425 entries.
426 Issue: COMPRESS-212.
427o TarArchiveInputStream could leave the second EOF record inside the
428 stream it had just finished reading.
429 Issue: COMPRESS-206.
430 Thanks to Peter De Maeyer.
431o DumpArchiveInputStream no longer implicitly closes the original
432 input stream when it reaches the end of the archive.
433o ZipArchiveInputStream now consumes the remainder of the archive when
434 getNextZipEntry returns null.
435o Unit tests could fail if the source tree was checked out to a
436 directory tree containign spaces.
437 Issue: COMPRESS-205.
438 Thanks to Daniel Lowe.
439o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
440 entries from ZipArchiveInputStream.
441 Issue: COMPRESS-219.
442o CompressorStreamFactory can now be used without XZ for Java being
443 available.
444 Issue: COMPRESS-221.
445
446Changes:
447
448o Improved exception message if a zip archive cannot be read because
449 of an unsupported compression method.
450 Issue: COMPRESS-188.
451 Thanks to Harald Kuhn.
452o ArchiveStreamFactory has a setting for file name encoding that sets
453 up encoding for ZIP and TAR streams.
454 Issue: COMPRESS-192.
455 Thanks to Jukka Zitting.
456o TarArchiveEntry now has a method to verify its checksum.
457 Issue: COMPRESS-191.
458 Thanks to Jukka Zitting.
459o Split/spanned ZIP archives are now properly detected by
460 ArchiveStreamFactory but will cause an
461 UnsupportedZipFeatureException when read.
462o ZipArchiveInputStream now reads archives that start with a "PK00"
463 signature. Archives with this signatures are created when the
464 archiver was willing to split the archive but in the end only needed
465 a single segment - so didn't split anything.
466 Issue: COMPRESS-208.
467o TarArchiveEntry has a new constructor that allows setting linkFlag
468 and preserveLeadingSlashes at the same time.
469 Issue: COMPRESS-201.
470o ChangeSetPerformer has a new perform overload that uses a ZipFile
471 instance as input.
472 Issue: COMPRESS-159.
473o Garbage collection pressure has been reduced by reusing temporary
474 byte arrays in classes.
475 Issue: COMPRESS-172.
476 Thanks to Thomas Mair.
477o Can now handle zip extra field 0x5455 - Extended Timestamp.
478 Issue: COMPRESS-210.
479 Thanks to Julius Davies.
480o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
481 Issue: COMPRESS-211.
482 Thanks to Julius Davies.
483o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
484 Issue: COMPRESS-213.
485 Thanks to Julius Davies.
486o better support for unix symlinks in ZipFile entries.
487 Issue: COMPRESS-214.
488 Thanks to Julius Davies.
489o ZipFile's initialization has been improved for non-Zip64 archives.
490 Issue: COMPRESS-215.
491 Thanks to Robin Power.
492o Updated XZ for Java dependency to 1.2 as this version provides
493 proper OSGi manifest attributes.
494
495Release 1.4.1
496-------------
497
498This is a security bugfix release, see
499http://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
500
501Fixed Bugs:
502
503o Ported libbzip2's fallback sort algorithm to
504 BZip2CompressorOutputStream to speed up compression in certain
505 edge cases.
506
507Release 1.4
508-----------
509
510New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100511o COMPRESS-156: Support for the XZ format has been added.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000512
513Fixed Bugs:
514o COMPRESS-183: The tar package now allows the encoding of file names to be
515 specified and can optionally use PAX extension headers to
516 write non-ASCII file names.
517 The stream classes now write (or expect to read) archives that
518 use the platform's native encoding for file names. Apache
519 Commons Compress 1.3 used to strip everything but the lower
520 eight bits of each character which effectively only worked for
521 ASCII and ISO-8859-1 file names.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100522 This new default behavior is a breaking change.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000523o COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100524 contained non-ASCII characters.
525o COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException
526o COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
527o COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000528o COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100529 short text files were TAR archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000530o COMPRESS-164: ZipFile didn't work properly for archives using unicode extra
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100531 fields rather than UTF-8 filenames and the EFS-Flag.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000532o COMPRESS-169: For corrupt archives ZipFile would throw a RuntimeException in
533 some cases and an IOException in others. It will now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100534 consistently throw an IOException.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000535
536Changes:
537o COMPRESS-182: The tar package can now write archives that use star/GNU/BSD
538 extensions or use the POSIX/PAX variant to store numeric
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100539 values that don't fit into the traditional header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000540o COMPRESS-181: Added a workaround for a Bug some tar implementations that add
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100541 a NUL byte as first byte in numeric header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000542o COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100543 as path separators in Unicode Extra Fields.
544o COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000545o COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100546 concatenated .bz2 files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000547o COMPRESS-154: GZipCompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100548 concatenated .gz files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000549o COMPRESS-16: The tar package can now read archives that use star/GNU/BSD
550 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100551 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000552o COMPRESS-165: The tar package can now write archives that use star/GNU/BSD
553 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100554 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000555o COMPRESS-166: The tar package can now use the POSIX/PAX variant for writing
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100556 entries with names longer than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000557
558Release 1.3
559-----------
560
561Commons Compress 1.3 is the first version to require Java5 at runtime.
562
563Changes in this version include:
564
565New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100566o Support for the Pack200 format has been added. Issue: COMPRESS-142.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000567o Read-only support for the format used by the Unix dump(8) tool
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100568 has been added. Issue: COMPRESS-132.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000569
570Fixed Bugs:
571o BZip2CompressorInputStream's getBytesRead method always
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100572 returned 0.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000573o ZipArchiveInputStream and ZipArchiveOutputStream could leak
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100574 resources on some JDKs. Issue: COMPRESS-152.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000575o TarArchiveOutputStream's getBytesWritten method didn't count
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100576 correctly. Issue: COMPRESS-160.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000577
578Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100579o The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000580o The AR package now supports the BSD dialect of storing file
581 names longer than 16 chars (both reading and writing).
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100582 Issue: COMPRESS-144.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000583
584Release 1.2
585-----------
586
587New features:
588o COMPRESS-123: ZipArchiveEntry has a new method getRawName that provides the
589 original bytes that made up the name. This may allow user
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100590 code to detect the encoding.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000591o COMPRESS-122: TarArchiveEntry provides access to the flags that determine
592 whether it is an archived symbolic link, pipe or other
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100593 "uncommon" file system object.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000594
595Fixed Bugs:
596o COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100597 message for entries between 2 GByte and 4 GByte in size.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000598o COMPRESS-145: TarArchiveInputStream now detects sparse entries using the
599 oldgnu format and properly reports it cannot extract their
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100600 contents.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000601o COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100602 implementation, the code has been made more defensive.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000603o COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100604 userId or groupId. Thanks to Trejkaz.
605o COMPRESS-139: ZipFile may leak resources on some JDKs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000606o COMPRESS-125: BZip2CompressorInputStream throws IOException if
607 underlying stream returns available() == 0.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100608 Removed the check.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000609o COMPRESS-127: Calling close() on inputStream returned by
610 CompressorStreamFactory.createCompressorInputStream()
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100611 does not close the underlying input stream.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000612o COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100613 data to the stream
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000614
615Changes:
616o ZipFile now implements finalize which closes the underlying
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100617 file.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000618o COMPRESS-117: Certain tar files not recognised by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100619 ArchiveStreamFactory.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000620
621Release 1.1
622-----------
623
624New features:
625o COMPRESS-108: Command-line interface to list archive contents.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100626 Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000627o COMPRESS-109: Tar implementation does not support Pax headers
628 Added support for reading pax headers.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100629 Note: does not support global pax headers
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000630o COMPRESS-103: ZipArchiveInputStream can optionally extract data that used
631 the STORED compression method and a data descriptor.
632 Doing so in a stream is not safe in general, so you have to
633 explicitly enable the feature. By default the stream will
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100634 throw an exception if it encounters such an entry.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000635o COMPRESS-98: The ZIP classes will throw specialized exceptions if any
636 attempt is made to read or write data that uses zip features
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100637 not supported (yet).
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000638o COMPRESS-99: ZipFile#getEntries returns entries in a predictable order -
639 the order they appear inside the central directory.
640 A new method getEntriesInPhysicalOrder returns entries in
641 order of the entry data, i.e. the order ZipArchiveInputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100642 would see.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000643o The Archive*Stream and ZipFile classes now have
644 can(Read|Write)EntryData methods that can be used to check
645 whether a given entry's data can be read/written.
646 The method currently returns false for ZIP archives if an
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100647 entry uses an unsupported compression method or encryption.
648o COMPRESS-89: The ZIP classes now detect encrypted entries.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000649o COMPRESS-97: Added autodetection of compression format to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100650 CompressorStreamFactory.
651o COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000652o A new constructor of TarArchiveEntry can create entries with
653 names that start with slashes - the default is to strip
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100654 leading slashes in order to create relative path names.
655o ArchiveEntry now has a getLastModifiedDate method.
656o COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000657
658Fixed Bugs:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100659o COMPRESS-72: Move acknowledgements from NOTICE to README
660o COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
661o COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127
662o COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000663o COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100664 than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000665o COMPRESS-100: ZipArchiveInputStream will throw an exception if it detects an
666 entry that uses a data descriptor for a STORED entry since it
667 cannot reliably find the end of data for this "compression"
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100668 method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000669o COMPRESS-101: ZipArchiveInputStream should now properly read archives that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100670 use data descriptors but without the "unofficial" signature.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000671o COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100672 read properly.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000673o ArchiveInputStream has a new method getBytesRead that should
674 be preferred over getCount since the later may truncate the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100675 number of bytes read for big archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000676o COMPRESS-85: The cpio archives created by CpioArchiveOutputStream couldn't
677 be read by many existing native implementations because the
678 archives contained multiple entries with the same inode/device
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100679 combinations and weren't padded to a blocksize of 512 bytes.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000680o COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100681 more lenient when parsing extra fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000682o COMPRESS-82: cpio is terribly slow.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100683 Documented that buffered streams are needed for performance
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000684o Improved exception message if the extra field data in ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100685 archives cannot be parsed.
686o COMPRESS-17: Tar format unspecified - current support documented.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000687o COMPRESS-94: ZipArchiveEntry's equals method was broken for entries created
688 with the String-arg constructor. This lead to broken ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100689 archives if two different entries had the same hash code. Thanks to Anon Devs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000690o COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100691 the archive was truncated. Thanks to Antoni Mylka.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000692o COMPRESS-86: Tar archive entries holding the file name for names longer
693 than 100 characters in GNU longfile mode didn't properly
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100694 specify they'd be using the "oldgnu" extension.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000695o COMPRESS-83: Delegate all read and write methods in GZip stream in order to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100696 speed up operations.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000697o The ar and cpio streams now properly read and write last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100698 modified times.
699o COMPRESS-81: TarOutputStream can leave garbage at the end of the archive
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000700
701Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100702o COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//)
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000703o COMPRESS-105: Document that the name of an ZipArchiveEntry determines whether
704 an entry is considered a directory or not.
705 If you don't use the constructor with the File argument the entry's
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100706 name must end in a "/" in order for the entry to be known as a directory.
707o COMPRESS-79: Move DOS/Java time conversions into Zip utility class.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000708o COMPRESS-75: ZipArchiveInputStream does not show location in file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100709 where a problem occurred.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000710