blob: fe72d1b866d3dd30b36e54578f5bf56a83e4490c [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 Bodewigdd7c7702017-05-11 21:03:58 +02005lzma, xz, Snappy, traditional Unix Compress, DEFLATE, LZ4, Brotli and ar, cpio,
Stefan Bodewigde633062014-10-09 12:00:48 +00006jar, tar, zip, dump, 7z, arj.
7
Stefan Bodewigc348be12017-10-09 18:18:41 +02008Release 1.15
9------------
10
11New features:
12o Added magic MANIFEST entry Automatic-Module-Name so the module
13 name will be org.apache.commons.compress when the jar is used
14 as an automatic module in Java9.
15 Issue: COMPRESS-397.
16o Added a new utility class FixedLengthBlockOutputStream that
17 can be used to ensure writing always happens in blocks of a
18 given size.
19 Issue: COMPRESS-405. Thanks to Simon Spero.
20o It is now possible to specify/read custom PAX headers when
21 writing/reading tar archives.
22 Issue: COMPRESS-400. Thanks to Simon Spero.
23
24Fixed Bugs:
25o Make sure "version needed to extract" in local file header and
26 central directory of a ZIP archive agree with each other.
27 Also ensure the version is set to 2.0 if DEFLATE is used.
28 Issue: COMPRESS-394.
29o Don't use a data descriptor in ZIP archives when copying a raw
30 entry that already knows its size and CRC information.
31 Issue: COMPRESS-395.
32o Travis build redundantly repeats compilation and tests redundantly
33 GitHub Pull Request #43. Thanks to Simon Spero.
34 Issue: COMPRESS-413
35o The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
36 Java.
37 Issue: COMPRESS-396.
38o BUILDING.md now passes the RAT check.
39 Issue: COMPRESS-406. Thanks to Simon Spero.
40o Made sure ChecksumCalculatingInputStream receives valid
41 checksum and input stream instances via the constructor.
42 Issue: COMPRESS-412. Thanks to Michael Hausegger.
43o TarArchiveOutputStream now verifies the block and record sizes
44 specified at construction time are compatible with the tar
45 specification. In particular 512 is the only record size
46 accepted and the block size must be a multiple of 512.
47 Issue: COMPRESS-407. Thanks to Simon Spero.
48o Fixed class names of CpioArchiveEntry and
49 CpioArchiveInputStream in various Javadocs.
50 Issue: COMPRESS-415.
51o The code of the extended timestamp zip extra field incorrectly
52 assumed the time was stored as unsigned 32-bit int and thus
53 created incorrect results for years after 2037.
54 Issue: COMPRESS-416. Thanks to Simon Spero.
55o Removed ZipEncoding code that became obsolete when we started
56 to require Java 5 as baseline long ago.
57 Issue: COMPRESS-410. Thanks to Simon Spero.
58o The tar package will no longer try to parse the major and
59 minor device numbers unless the entry represents a character
60 or block special file.
61 Issue: COMPRESS-417.
62o When reading tar headers with name fields containing embedded
63 NULs, the name will now be terminated at the first NUL byte.
64 Issue: COMPRESS-421. Thanks to Roel Spilker.
65o Simplified TarArchiveOutputStream by replacing the internal
66 buffering with new class FixedLengthBlockOutputStream.
67 Issue: COMPRESS-409.
68
Stefan Bodewigdd7c7702017-05-11 21:03:58 +020069Release 1.14
70------------
71
72New features:
73o Added write support for Snappy.
74 Issue: COMPRESS-246.
75o Added support for LZ4 (block and frame format).
76 Issue: COMPRESS-271.
77o Add static detect(InputStream in) to CompressorStreamFactory
78 and ArchiveStreamFactory
79 Issue: COMPRESS-385.
80o Added a way to limit amount of memory ZCompressorStream may
81 use.
82 Issue: COMPRESS-382. Thanks to Tim Allison.
83o Added a way to limit amount of memory ZCompressorStream may
84 use.
85 Issue: COMPRESS-386. Thanks to Tim Allison.
86o Added a way to limit amount of memory LZMACompressorStream and
87 XZCompressorInputStream may use.
88 Issue: COMPRESS-382. Thanks to Tim Allison.
89o Add Brotli decoder based on the Google Brotli library.
90 Issue: COMPRESS-392. Thanks to Philippe Mouawad.
91o ZipEntry now exposes its data offset.
92 Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky.
93o Using ZipArchiveEntry's setAlignment it is now possible to
94 ensure the data offset of an entry starts at a file position
95 that at word or page boundaries.
96 A new extra field has been added for this purpose.
97 Issue: COMPRESS-391. Thanks to Zbynek Vyskovsky.
98
99Fixed Bugs:
100o SnappyCompressorInputStream slides the window too early
101 leading to ArrayIndexOutOfBoundsExceptions for some streams.
102 Issue: COMPRESS-378.
103o ZipArchiveEntry#isUnixSymlink now only returns true if the
104 corresponding link flag is the only file-type flag set.
105 Issue: COMPRESS-379. Thanks to Guillaume Boué.
106o Fixed an integer overflow in CPIO's CRC calculation.
107 Pull Request #17. Thanks to Daniel Collin.
108o Make unit tests work on Windows paths with spaces in their names.
109 Issue: COMPRESS-387.
110o Internal location pointer in ZipFile could get incremented
111 even if nothing had been read.
112 Issue: COMPRESS-389.
113o LZMACompressorOutputStream#flush would throw an exception
114 rather than be the NOP it promised to be.
115 Issue: COMPRESS-393.
116
117Changes:
118o The blocksize for FramedSnappyCompressorInputStream can now be
119 configured as some IWA files seem to be using blocks larger
120 than the default 32k.
121 Issue: COMPRESS-358.
122o BZip2CompressorInputstream now uses BitInputStream internally.
123 Pull Request #13. Thanks to Thomas Meyer.
124o Improved performance for concurrent reads from ZipFile when
125 reading from a file.
126 Issue: COMPRESS-388. Thanks to Zbynek Vyskovsky.
127
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +0100128Release 1.13
129------------
130
Stefan Bodewig45438472016-12-25 13:16:42 +0100131Commons Compress 1.13 is the first version to require Java 7 at
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +0100132runtime.
133
134Changes in this version include:
135
136New features:
137o SevenZFile, SevenZOutputFile, ZipFile and
138 ZipArchiveOutputStream can now work on non-file resources if
139 they can be accessed via SeekableByteChannel.
140 Issue: COMPRESS-327.
141o Allow compressor extensions through a standard JRE ServiceLoader.
142 Issue: COMPRESS-368.
143o Allow archive extensions through a standard JRE ServiceLoader.
144 Issue: COMPRESS-369.
145o Add write support for the legacy LZMA format, this requires XZ
146 for Java 1.6.
147 Issue: COMPRESS-373.
148o Add write support for the legacy LZMA stream to 7z, this
149 requires XZ for Java 1.6.
150 Issue: COMPRESS-374.
151o Allow the clients of ParallelScatterZipCreator to provide
152 ZipArchiveEntryRequestSupplier.
153 Issue: COMPRESS-375. Thanks to Plamen Totev.
154o Add a version-independent link to the API docs of the latest
155 release.
156 Issue: COMPRESS-372.
157
158Fixed Bugs:
159o BitInputStream could return bad results when overflowing
160 internally - if two consecutive reads tried to read more than
161 64 bits.
162 Issue: COMPRESS-363.
163o ZipArchiveInputStream.closeEntry does not properly advance to
164 next entry if there are junk bytes at end of data section.
165 Issue: COMPRESS-364. Thanks to Mike Mole.
166o ZipArchiveInputStream now throws an Exception if it encounters
167 a broken ZIP archive rather than signaling end-of-archive.
168 Issue: COMPRESS-367. Thanks to Mike Mole.
169o ScatterZipOutputStream didn't close the StreamCompressor
170 causing a potential resource leak.
171 Issue: COMPRESS-377.
172
173Changes:
174o Update Java requirement from 6 to 7.
175 Issue: COMPRESS-360.
176o Clarified which TarArchiveEntry methods are useless for
177 entries read from an archive.
178 Issue: COMPRESS-366.
179
Stefan Bodewig3623ee72016-06-18 17:25:37 +0200180Release 1.12
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200181------------
182
Stefan Bodewig9a677fb2016-06-21 21:27:57 +0200183Commons Compress 1.12 is the first version to require Java 6 at
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200184runtime.
185
186Release 1.12 changes the behavior of BZip2CompressorOutputStream's
187finalize method so that it no longer invokes finish. This is going to
188break code that relied on the finalizer to clean up an unfinished
189stream. The code will need to be changed to call finish or close
190itself. Note that a finalizer is not guaranteed to run, so the feature
191was not 100% effective in any case.
192
193New features:
194
195o FramedSnappyCompressorInputStream now supports the dialect of
196 Snappy used by the IWA files contained within the zip archives
197 used in Apple's iWork 13 files.
198 Issue: COMPRESS-352.
199
200Fixed Bugs:
201
202o SevenZFile.read() throws an IllegalStateException for empty entries.
203 Issue: COMPRESS-348.
204o TarArchiveInputStream failed to parse PAX headers that included
205 blank lines.
206 Issue: COMPRESS-355. Thanks to Jeremy Gustie.
207o TarArchiveInputStream failed to parse PAX headers whose tar entry
208 name ended with a slash.
209 Issue: COMPRESS-356. Thanks to Jeremy Gustie.
210
211Changes:
212o Update requirement from Java 5 to 6.
213 Issue: COMPRESS-349.
214o TarArchiveEntry wastefully allocates empty arrays.
215 Issue: COMPRESS-350.
216o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
217 refer to IOEx, not NPE.
218 Issue: COMPRESS-353.
219o PureJavaCrc32C in the snappy package is now final so it is now safe
220 to call a virtual method inside the constructor.
221 Issue: COMPRESS-354.
222
223o ZipArchiveInputStream and CpioArchiveInputStream could throw
224 exceptions who's messages contained potentially corrupt entry names
225 read from a broken archive. They will now sanitize the names by
226 replacing unprintable characters and restricting the length to 255
227 characters.
228 Issue: COMPRESS-351.
229o BZip2CompressorOutputStream no longer tries to finish the output
230 stream in finalize. This is a breaking change for code that relied
231 on the finalizer.
232 Issue: COMPRESS-357.
233
234
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200235Release 1.11
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100236------------
237
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200238New features:
239o TarArchiveInputStream now supports reading global PAX headers.
240 Issue: COMPRESS-347.
241o The PAX headers for sparse entries written by star are now
242 applied.
243 Issue: COMPRESS-346.
244o GNU sparse files using one of the PAX formats are now
245 detected, but cannot be extracted.
246 Issue: COMPRESS-345.
247o New method SevenZFile.getEntries can be used to list the
248 contents of a 7z archive.
249 Issue: COMPRESS-341.
250o When using Zip64Mode.Always also use ZIP64 extensions inside
251 the central directory.
252 GitHub Pull Request #10 Thanks to Matt Hovey.
253o ZipFile.getRawInputStream() is now part of the public API
254 Issue: COMPRESS-323.
255o Allow byte-for-byte replication of Zip entries.
256 GitHub Pull Request #6. Thanks to Jason van Zyl.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100257o TarArchiveEntry's preserveLeadingSlashes is now a property and used
258 on later calls to setName, too.
259 This behavior is a breaking change.
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200260 Issue: COMPRESS-328.
261o Added read-only support for bzip2 compression used inside of
262 ZIP archives.
263 GitHub Pull Request #4. Thanks to Sören Glimm.
264
265Fixed Bugs:
266o ArArchiveInputStream can now read GNU extended names that are
267 terminated with a NUL byte rather than a linefeed.
268 Issue: COMPRESS-344.
269o Native Memory Leak in Sevenz-DeflateDecoder.
270 Issue: COMPRESS-343. Thanks to Rene Preissel.
271o SevenZFile will now only try to drain an entry's content when
272 moving on to the next entry if data is read from the next
273 entry. This should improve performance for applications that
274 try to skip over entries.
275 Issue: COMPRESS-340. Thanks to Dawid Weiss.
276o file names of tar archives using the xstar format are now
277 parsed properly.
278 Issue: COMPRESS-336.
279o checksums of tars that pad the checksum field to the left are
280 now calculated properly.
281 Issue: COMPRESS-335.
282o ArArchiveInputStream failed to read past the first entry when
283 BSD long names have been used.
284 Issue: COMPRESS-334. Thanks to Jeremy Gustie.
285o Added buffering for random access which speeds up 7Z support.
286 Issue: COMPRESS-333. Thanks to Dawid Weiss.
287o The checksum validation of TararchiveEntry is now as strict as
288 the validation of GNU tar, which eliminates a few cases of
289 false positives of ArchiveStreamFactory.
290 This behavior is a breaking change since the check has become
291 more strict but any archive that fails the checksum test now
292 would also fail it when extracted with other tools and must be
293 considered an invalid archive.
294 Issue: COMPRESS-331.
295o SnappyCompressorInputStream and
296 FramedSnappyCompressorInputStream returned 0 at the end of the
297 stream under certain circumstances.
298 Issue: COMPRESS-332.
299o Adjusted unit test to updates in Java8 and later that change
300 the logic of ZipEntry#getTime.
301 Issue: COMPRESS-326.
302o TarArchiveOutputStream will now recognize GNU long name and
303 link entries even if the special entry has a different name
304 than GNU tar uses itself. This seems to be the case for
305 archives created by star.
306 Issue: COMPRESS-324.
307o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
308 fields are read from the central directory.
309 Issue: COMPRESS-321.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100310
Stefan Bodewigec075142015-01-26 05:12:09 +0000311Release 1.10
312------------
313
314Release 1.10 moves the former
315org.apache.commons.compress.compressors.z._internal_ package which
316breaks backwards compatibility for code which used the old package.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000317
318This also changes the superclass of ZCompressorInputStream which makes
319this class binary incompatible with the one of Compress 1.9. Code
320that extends ZCompressorInputStream will need to be recompiled in
321order to work with Compress 1.10.
Stefan Bodewigc100d2e2015-01-30 08:24:54 +0000322
Stefan Bodewigec075142015-01-26 05:12:09 +0000323New features:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000324o CompressorStreamFactory can now auto-detect DEFLATE streams
325 with ZLIB header.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100326 Issue: COMPRESS-316. Thanks to Nick Burch.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000327o CompressorStreamFactory can now auto-detect LZMA streams.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100328 Issue: COMPRESS-313.
Stefan Bodewigec075142015-01-26 05:12:09 +0000329o Added support for parallel compression. This low-level API allows
330 a client to build a zip/jar file by using the class
331 org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
332
333 Zip documentation updated with further notes about parallel features.
334
335 Please note that some aspects of jar creation need to be
336 handled by client code and is not part of commons-compress for this
337 release.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100338 Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000339o Cut overall object instantiation in half by changing file
340 header generation algorithm, for a 10-15 percent performance
341 improvement.
342
343 Also extracted two private methods createLocalFileHeader
344 and createCentralFileHeader in ZipArchiveOutputStream.
345 These may have some interesting additional usages in the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100346 near future. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000347o New methods in ZipArchiveOutputStream and ZipFile allows
348 entries to be copied from one archive to another without
349 having to re-compress them.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100350 Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000351
352Fixed Bugs:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000353o TarArchiveInputStream can now read entries with group or
354 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100355 Issue: COMPRESS-314.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000356o TarArchiveOutputStream can now write entries with group or
357 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100358 Issue: COMPRESS-315.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000359o TarArchiveEntry's constructor with a File and a String arg
360 didn't normalize the name.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100361 Issue: COMPRESS-312.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000362o ZipEncodingHelper no longer reads system properties directly
363 to determine the default charset.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100364 Issue: COMPRESS-308.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000365o BZip2CompressorInputStream#read would return -1 when asked to
366 read 0 bytes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100367 Issue: COMPRESS-309.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000368o ArchiveStreamFactory fails to pass on the encoding when creating
369 some streams.
370 * ArjArchiveInputStream
371 * CpioArchiveInputStream
372 * DumpArchiveInputStream
373 * JarArchiveInputStream
374 * TarArchiveInputStream
375 * JarArchiveOutputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100376 Issue: COMPRESS-306.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000377o Restore immutability/thread-safety to ArchiveStreamFactory.
378 The class is now immutable provided that the method setEntryEncoding
379 is not used. The class is thread-safe.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100380 Issue: COMPRESS-302.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000381o Restore immutability/thread-safety to CompressorStreamFactory.
382 The class is now immutable provided that the method
383 setDecompressConcatenated is not used. The class is thread-safe.
384 Issue: COMPRESS-303.
Stefan Bodewigec075142015-01-26 05:12:09 +0000385o ZipFile logs a warning in its finalizer when its constructor
386 has thrown an exception reading the file - for example if the
387 file doesn't exist.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100388 Issue: COMPRESS-297.
Stefan Bodewigec075142015-01-26 05:12:09 +0000389o Improved error message when tar encounters a groupId that is
390 too big to write without using the STAR or POSIX format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100391 Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000392o SevenZFile now throws the specific PasswordRequiredException
393 when it encounters an encrypted stream but no password has
394 been specified.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100395 Issue: COMPRESS-298.
Stefan Bodewigec075142015-01-26 05:12:09 +0000396
397Changes:
398o Moved the package
399 org.apache.commons.compress.compressors.z._internal_ to
400 org.apache.commons.compress.compressors.lzw and made it part
401 of the API that is officially supported. This will break
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100402 existing code that uses the old package. Thanks to Damjan Jovanovic.
Stefan Bodewigec075142015-01-26 05:12:09 +0000403
404For complete information on Apache Commons Compress, including instructions
405on how to submit bug reports, patches, or suggestions for improvement,
406see the Apache Commons Compress website:
407
408http://commons.apache.org/compress/
409
410Old Release Notes
411=================
412
Stefan Bodewigde633062014-10-09 12:00:48 +0000413Release 1.9
414-----------
415
416New features:
417o Added support for DEFLATE streams without any gzip framing.
418 Issue: COMPRESS-263.
419 Thanks to Matthias Stevens.
420
421Fixed Bugs:
422o When reading 7z files unknown file properties and properties of type
423 kDummy are now ignored.
424 Issue: COMPRESS-287.
425o Expanding 7z archives using LZMA compression could cause an
426 EOFException.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100427 Issue: COMPRESS-286.
Stefan Bodewigde633062014-10-09 12:00:48 +0000428o Long-Name and -link or PAX-header entries in TAR archives always had
429 the current time as last modfication time, creating archives that
430 are different at the byte level each time an archive was built.
431 Issue: COMPRESS-289.
432 Thanks to Bob Robertson.
433
434Changes:
435o Checking for XZ for Java may be expensive. The result will now be
436 cached outside of an OSGi environment. You can use the new
437 XZUtils#setCacheXZAvailability to overrride this default behavior.
438 Issue: COMPRESS-285.
439
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000440Release 1.8.1
Stefan Bodewigde633062014-10-09 12:00:48 +0000441-------------
Sebastian Bazley48882f12010-04-13 21:02:37 +0000442
Stefan Bodewig48d74702013-03-10 17:10:57 +0000443New features:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000444o COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100445 (".Z") streams.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000446
Sebastian Bazley48882f12010-04-13 21:02:37 +0000447Fixed Bugs:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000448o COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100449 non-buffered stream in certain cases.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000450o COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100451 more could be read from the stream.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000452o COMPRESS-276: ArchiveStreams now validate there is a current entry before
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100453 reading or writing entry data.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000454o ArjArchiveInputStream#canReadEntryData tested the current
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100455 entry of the stream rather than its argument.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000456o COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100457 entries.
458o COMPRESS-273: Added a few null checks to improve robustness.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000459o COMPRESS-278: TarArchiveInputStream failed to read archives with empty
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100460 gid/uid fields.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000461o COMPRESS-279: TarArchiveInputStream now again throws an exception when it
462 encounters a truncated archive while reading from the last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100463 entry.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000464o COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100465 IOUtils#skip method. Thanks to BELUGA BEHR.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000466
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000467Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100468o The dependency on org.tukaani:xz is now marked as optional.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000469
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000470Release 1.8
471-----------
472
473New features:
474o GzipCompressorInputStream now provides access to the same
475 metadata that can be provided via GzipParameters when writing
476 a gzip stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100477 Issue: COMPRESS-260.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000478o SevenZOutputFile now supports chaining multiple
479 compression/encryption/filter methods and passing options to
480 the methods.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100481 Issue: COMPRESS-266.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000482o The (compression) method(s) can now be specified per entry in
483 SevenZOutputFile.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100484 Issue: COMPRESS-261.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000485o SevenZArchiveEntry "knows" which method(s) have been used to
486 write it to the archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100487 Issue: COMPRESS-258.
488o The 7z package now supports the delta filter as method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000489o The 7z package now supports BCJ filters for several platforms.
490 You will need a version >= 1.5 of XZ for Java to read archives
491 using BCJ, though.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100492 Issue: COMPRESS-257.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000493
494Fixed Bugs:
495o BZip2CompressorInputStream read fewer bytes than possible from
496 a truncated stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100497 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000498o SevenZFile failed claiming the dictionary was too large when
499 archives used LZMA compression for headers and content and
500 certain non-default dictionary sizes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100501 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000502o CompressorStreamFactory.createCompressorInputStream with
503 explicit compression did not honor decompressConcatenated
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100504 Issue: COMPRESS-259.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000505o TarArchiveInputStream will now read archives created by tar
506 implementations that encode big numbers by not adding a
507 trailing NUL.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100508 Issue: COMPRESS-262.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000509o ZipArchiveInputStream would return NUL bytes for the first 512
510 bytes of a STORED entry if it was the very first entry of the
511 archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100512 Issue: COMPRESS-264.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000513o When writing PAX/POSIX headers for TAR entries with
514 backslashes or certain non-ASCII characters in their name
515 TarArchiveOutputStream could fail.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100516 Issue: COMPRESS-265.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000517o ArchiveStreamFactory now throws a StreamingNotSupported - a
518 new subclass of ArchiveException - if it is asked to read from
519 or write to a stream and Commons Compress doesn't support
520 streaming for the format. This currently only applies to the
521 7z format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100522 Issue: COMPRESS-267.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000523
524Release 1.7
525-----------
526
527New features:
528o Read-Only support for Snappy compression.
529 Issue: COMPRESS-147. Thanks to BELUGA BEHR.
530o Read-Only support for .Z compressed files.
531 Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
532o ZipFile and ZipArchiveInputStream now support reading entries
533 compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
534o GzipCompressorOutputStream now supports setting the compression
535 level and the header metadata (filename, comment, modification time,
536 operating system and extra flags)
537 Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
538o ZipFile and ZipArchiveInputStream now support reading entries
539 compressed using the IMPLODE method.
540 Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
541o ZipFile and the 7z file classes now implement Closeable and can be
542 used in try-with-resources constructs.
543
544Fixed Bugs:
545o SevenZOutputFile#closeArchiveEntry throws an exception when using
546 LZMA2 compression on Java8. Issue: COMPRESS-241.
547o 7z reading of big 64bit values could be wrong.
548 Issue: COMPRESS-244. Thanks to Nico Kruber.
549o TarArchiveInputStream could fail to read an archive completely.
550 Issue: COMPRESS-245.
551o The time-setters in X5455_ExtendedTimestamp now set the
552 corresponding flags explicitly - i.e. they set the bit if the valus
553 is not-null and reset it otherwise. This may cause
554 incompatibilities if you use setFlags to unset a bit and later set
555 the time to a non-null value - the flag will now be set.
556 Issue: COMPRESS-242.
557o SevenZOutputFile would create invalid archives if more than six
558 empty files or directories were included. Issue: COMPRESS-252.
559
560Release 1.6
561-----------
562
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100563Version 1.6 introduces changes to the internal API of the tar package that
564break backwards compatibility in the following rare cases. This version
565removes the package private TarBuffer class along with the protected "buffer"
566members in TarArchiveInputStream and TarArchiveOutputStream. This change will
567only affect you if you have created a subclass of one of the stream classes
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000568and accessed the buffer member or directly used the TarBuffer class.
569
570Changes in this version include:
571
572New features:
573o Added support for 7z archives. Most compression algorithms
574 can be read and written, LZMA and encryption are only
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100575 supported when reading. Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000576o Added read-only support for ARJ archives that don't use
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100577 compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000578o DumpArchiveInputStream now supports an encoding parameter that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100579 can be used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000580o The CPIO streams now support an encoding parameter that can be
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100581 used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000582o Read-only support for LZMA standalone compression has been added.
583 Issue: COMPRESS-111.
584
585Fixed Bugs:
586o TarBuffer.tryToConsumeSecondEOFRecord could throw a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100587 NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000588o Parsing of zip64 extra fields has become more lenient in order
589 to be able to read archives created by DotNetZip and maybe
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100590 other archivers as well. Issue: COMPRESS-228.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000591o TAR will now properly read the names of symbolic links with
592 long names that use the GNU variant to specify the long file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100593 name. Issue: COMPRESS-229. Thanks to Christoph Gysin.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000594o ZipFile#getInputStream could return null if the archive
595 contained duplicate entries.
596 The class now also provides two new methods to obtain all
597 entries of a given name rather than just the first one.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100598 Issue: COMPRESS-227.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000599o CpioArchiveInputStream failed to read archives created by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100600 Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000601o TarArchiveOutputStream now properly handles link names that
602 are too long to fit into a traditional TAR header. Issue:
603 COMPRESS-237. Thanks to Emmanuel Bourg.
604o The auto-detecting create*InputStream methods of Archive and
605 CompressorStreamFactory could fail to detect the format of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100606 blocking input streams. Issue: COMPRESS-239.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000607
608Changes:
609o Readabilty patch to TarArchiveInputStream. Issue:
610 COMPRESS-232. Thanks to BELUGA BEHR.
611o Performance improvements to TarArchiveInputStream, in
612 particular to the skip method. Issue: COMPRESS-234. Thanks to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100613 BELUGA BEHR.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000614
615Release 1.5
616-----------
617
618New features:
619
620o CompressorStreamFactory has an option to create decompressing
621 streams that decompress the full input for formats that support
622 multiple concatenated streams.
623 Issue: COMPRESS-220.
624
625Fixed Bugs:
626
627o Typo in CompressorStreamFactory Javadoc
628 Issue: COMPRESS-218.
629 Thanks to Gili.
630o ArchiveStreamFactory's tar stream detection created false positives
631 for AIFF files.
632 Issue: COMPRESS-191.
633 Thanks to Jukka Zitting.
634o XZ for Java didn't provide an OSGi bundle. Compress' dependency on
635 it has now been marked optional so Compress itself can still be used
636 in an OSGi context.
637 Issue: COMPRESS-199.
638 Thanks to Jukka Zitting.
639o When specifying the encoding explicitly TarArchiveOutputStream would
640 write unreadable names in GNU mode or even cause errors in POSIX
641 mode for file names longer than 66 characters.
642 Issue: COMPRESS-200.
643 Thanks to Christian Schlichtherle.
644o Writing TAR PAX headers failed if the generated entry name ended
645 with a "/".
646 Issue: COMPRESS-203.
647o ZipArchiveInputStream sometimes failed to provide input to the
648 Inflater when it needed it, leading to reads returning 0.
649 Issue: COMPRESS-189.
650 Thanks to Daniel Lowe.
651o TarArchiveInputStream ignored the encoding for GNU long name
652 entries.
653 Issue: COMPRESS-212.
654o TarArchiveInputStream could leave the second EOF record inside the
655 stream it had just finished reading.
656 Issue: COMPRESS-206.
657 Thanks to Peter De Maeyer.
658o DumpArchiveInputStream no longer implicitly closes the original
659 input stream when it reaches the end of the archive.
660o ZipArchiveInputStream now consumes the remainder of the archive when
661 getNextZipEntry returns null.
662o Unit tests could fail if the source tree was checked out to a
663 directory tree containign spaces.
664 Issue: COMPRESS-205.
665 Thanks to Daniel Lowe.
666o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
667 entries from ZipArchiveInputStream.
668 Issue: COMPRESS-219.
669o CompressorStreamFactory can now be used without XZ for Java being
670 available.
671 Issue: COMPRESS-221.
672
673Changes:
674
675o Improved exception message if a zip archive cannot be read because
676 of an unsupported compression method.
677 Issue: COMPRESS-188.
678 Thanks to Harald Kuhn.
679o ArchiveStreamFactory has a setting for file name encoding that sets
680 up encoding for ZIP and TAR streams.
681 Issue: COMPRESS-192.
682 Thanks to Jukka Zitting.
683o TarArchiveEntry now has a method to verify its checksum.
684 Issue: COMPRESS-191.
685 Thanks to Jukka Zitting.
686o Split/spanned ZIP archives are now properly detected by
687 ArchiveStreamFactory but will cause an
688 UnsupportedZipFeatureException when read.
689o ZipArchiveInputStream now reads archives that start with a "PK00"
690 signature. Archives with this signatures are created when the
691 archiver was willing to split the archive but in the end only needed
692 a single segment - so didn't split anything.
693 Issue: COMPRESS-208.
694o TarArchiveEntry has a new constructor that allows setting linkFlag
695 and preserveLeadingSlashes at the same time.
696 Issue: COMPRESS-201.
697o ChangeSetPerformer has a new perform overload that uses a ZipFile
698 instance as input.
699 Issue: COMPRESS-159.
700o Garbage collection pressure has been reduced by reusing temporary
701 byte arrays in classes.
702 Issue: COMPRESS-172.
703 Thanks to Thomas Mair.
704o Can now handle zip extra field 0x5455 - Extended Timestamp.
705 Issue: COMPRESS-210.
706 Thanks to Julius Davies.
707o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
708 Issue: COMPRESS-211.
709 Thanks to Julius Davies.
710o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
711 Issue: COMPRESS-213.
712 Thanks to Julius Davies.
713o better support for unix symlinks in ZipFile entries.
714 Issue: COMPRESS-214.
715 Thanks to Julius Davies.
716o ZipFile's initialization has been improved for non-Zip64 archives.
717 Issue: COMPRESS-215.
718 Thanks to Robin Power.
719o Updated XZ for Java dependency to 1.2 as this version provides
720 proper OSGi manifest attributes.
721
722Release 1.4.1
723-------------
724
725This is a security bugfix release, see
726http://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
727
728Fixed Bugs:
729
730o Ported libbzip2's fallback sort algorithm to
731 BZip2CompressorOutputStream to speed up compression in certain
732 edge cases.
733
734Release 1.4
735-----------
736
737New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100738o COMPRESS-156: Support for the XZ format has been added.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000739
740Fixed Bugs:
741o COMPRESS-183: The tar package now allows the encoding of file names to be
742 specified and can optionally use PAX extension headers to
743 write non-ASCII file names.
744 The stream classes now write (or expect to read) archives that
745 use the platform's native encoding for file names. Apache
746 Commons Compress 1.3 used to strip everything but the lower
747 eight bits of each character which effectively only worked for
748 ASCII and ISO-8859-1 file names.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100749 This new default behavior is a breaking change.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000750o COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100751 contained non-ASCII characters.
752o COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException
753o COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
754o COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000755o COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100756 short text files were TAR archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000757o COMPRESS-164: ZipFile didn't work properly for archives using unicode extra
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100758 fields rather than UTF-8 filenames and the EFS-Flag.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000759o COMPRESS-169: For corrupt archives ZipFile would throw a RuntimeException in
760 some cases and an IOException in others. It will now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100761 consistently throw an IOException.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000762
763Changes:
764o COMPRESS-182: The tar package can now write archives that use star/GNU/BSD
765 extensions or use the POSIX/PAX variant to store numeric
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100766 values that don't fit into the traditional header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000767o COMPRESS-181: Added a workaround for a Bug some tar implementations that add
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100768 a NUL byte as first byte in numeric header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000769o COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100770 as path separators in Unicode Extra Fields.
771o COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000772o COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100773 concatenated .bz2 files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000774o COMPRESS-154: GZipCompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100775 concatenated .gz files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000776o COMPRESS-16: The tar package can now read archives that use star/GNU/BSD
777 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100778 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000779o COMPRESS-165: The tar package can now write archives that use star/GNU/BSD
780 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100781 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000782o COMPRESS-166: The tar package can now use the POSIX/PAX variant for writing
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100783 entries with names longer than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000784
785Release 1.3
786-----------
787
788Commons Compress 1.3 is the first version to require Java5 at runtime.
789
790Changes in this version include:
791
792New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100793o Support for the Pack200 format has been added. Issue: COMPRESS-142.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000794o Read-only support for the format used by the Unix dump(8) tool
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100795 has been added. Issue: COMPRESS-132.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000796
797Fixed Bugs:
798o BZip2CompressorInputStream's getBytesRead method always
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100799 returned 0.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000800o ZipArchiveInputStream and ZipArchiveOutputStream could leak
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100801 resources on some JDKs. Issue: COMPRESS-152.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000802o TarArchiveOutputStream's getBytesWritten method didn't count
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100803 correctly. Issue: COMPRESS-160.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000804
805Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100806o The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000807o The AR package now supports the BSD dialect of storing file
808 names longer than 16 chars (both reading and writing).
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100809 Issue: COMPRESS-144.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000810
811Release 1.2
812-----------
813
814New features:
815o COMPRESS-123: ZipArchiveEntry has a new method getRawName that provides the
816 original bytes that made up the name. This may allow user
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100817 code to detect the encoding.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000818o COMPRESS-122: TarArchiveEntry provides access to the flags that determine
819 whether it is an archived symbolic link, pipe or other
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100820 "uncommon" file system object.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000821
822Fixed Bugs:
823o COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100824 message for entries between 2 GByte and 4 GByte in size.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000825o COMPRESS-145: TarArchiveInputStream now detects sparse entries using the
826 oldgnu format and properly reports it cannot extract their
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100827 contents.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000828o COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100829 implementation, the code has been made more defensive.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000830o COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100831 userId or groupId. Thanks to Trejkaz.
832o COMPRESS-139: ZipFile may leak resources on some JDKs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000833o COMPRESS-125: BZip2CompressorInputStream throws IOException if
834 underlying stream returns available() == 0.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100835 Removed the check.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000836o COMPRESS-127: Calling close() on inputStream returned by
837 CompressorStreamFactory.createCompressorInputStream()
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100838 does not close the underlying input stream.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000839o COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100840 data to the stream
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000841
842Changes:
843o ZipFile now implements finalize which closes the underlying
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100844 file.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000845o COMPRESS-117: Certain tar files not recognised by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100846 ArchiveStreamFactory.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000847
848Release 1.1
849-----------
850
851New features:
852o COMPRESS-108: Command-line interface to list archive contents.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100853 Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000854o COMPRESS-109: Tar implementation does not support Pax headers
855 Added support for reading pax headers.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100856 Note: does not support global pax headers
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000857o COMPRESS-103: ZipArchiveInputStream can optionally extract data that used
858 the STORED compression method and a data descriptor.
859 Doing so in a stream is not safe in general, so you have to
860 explicitly enable the feature. By default the stream will
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100861 throw an exception if it encounters such an entry.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000862o COMPRESS-98: The ZIP classes will throw specialized exceptions if any
863 attempt is made to read or write data that uses zip features
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100864 not supported (yet).
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000865o COMPRESS-99: ZipFile#getEntries returns entries in a predictable order -
866 the order they appear inside the central directory.
867 A new method getEntriesInPhysicalOrder returns entries in
868 order of the entry data, i.e. the order ZipArchiveInputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100869 would see.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000870o The Archive*Stream and ZipFile classes now have
871 can(Read|Write)EntryData methods that can be used to check
872 whether a given entry's data can be read/written.
873 The method currently returns false for ZIP archives if an
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100874 entry uses an unsupported compression method or encryption.
875o COMPRESS-89: The ZIP classes now detect encrypted entries.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000876o COMPRESS-97: Added autodetection of compression format to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100877 CompressorStreamFactory.
878o COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000879o A new constructor of TarArchiveEntry can create entries with
880 names that start with slashes - the default is to strip
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100881 leading slashes in order to create relative path names.
882o ArchiveEntry now has a getLastModifiedDate method.
883o COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000884
885Fixed Bugs:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100886o COMPRESS-72: Move acknowledgements from NOTICE to README
887o COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
888o COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127
889o COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000890o COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100891 than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000892o COMPRESS-100: ZipArchiveInputStream will throw an exception if it detects an
893 entry that uses a data descriptor for a STORED entry since it
894 cannot reliably find the end of data for this "compression"
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100895 method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000896o COMPRESS-101: ZipArchiveInputStream should now properly read archives that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100897 use data descriptors but without the "unofficial" signature.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000898o COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100899 read properly.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000900o ArchiveInputStream has a new method getBytesRead that should
901 be preferred over getCount since the later may truncate the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100902 number of bytes read for big archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000903o COMPRESS-85: The cpio archives created by CpioArchiveOutputStream couldn't
904 be read by many existing native implementations because the
905 archives contained multiple entries with the same inode/device
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100906 combinations and weren't padded to a blocksize of 512 bytes.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000907o COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100908 more lenient when parsing extra fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000909o COMPRESS-82: cpio is terribly slow.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100910 Documented that buffered streams are needed for performance
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000911o Improved exception message if the extra field data in ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100912 archives cannot be parsed.
913o COMPRESS-17: Tar format unspecified - current support documented.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000914o COMPRESS-94: ZipArchiveEntry's equals method was broken for entries created
915 with the String-arg constructor. This lead to broken ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100916 archives if two different entries had the same hash code. Thanks to Anon Devs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000917o COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100918 the archive was truncated. Thanks to Antoni Mylka.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000919o COMPRESS-86: Tar archive entries holding the file name for names longer
920 than 100 characters in GNU longfile mode didn't properly
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100921 specify they'd be using the "oldgnu" extension.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000922o COMPRESS-83: Delegate all read and write methods in GZip stream in order to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100923 speed up operations.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000924o The ar and cpio streams now properly read and write last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100925 modified times.
926o COMPRESS-81: TarOutputStream can leave garbage at the end of the archive
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000927
928Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100929o COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//)
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000930o COMPRESS-105: Document that the name of an ZipArchiveEntry determines whether
931 an entry is considered a directory or not.
932 If you don't use the constructor with the File argument the entry's
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100933 name must end in a "/" in order for the entry to be known as a directory.
934o COMPRESS-79: Move DOS/Java time conversions into Zip utility class.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000935o COMPRESS-75: ZipArchiveInputStream does not show location in file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100936 where a problem occurred.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000937