blob: af8a00f2278441ef5eb82e6abe479d68ff6b4a27 [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 Bodewig2e44bbe2018-02-02 18:27:50 +01005lzma, xz, Snappy, traditional Unix Compress, DEFLATE, DEFLATE64, LZ4,
6Brotli, Zstandard and ar, cpio, jar, tar, zip, dump, 7z, arj.
7
Stefan Bodewigb9701d52018-05-30 18:47:50 +02008Release 1.17
9------------
10
11New features:
12o Added a unit test that is supposed to fail if we break the
13 OSGi manifest entries again.
14 Issue: COMPRESS-443.
15o Add a new SkipShieldingInputStream class that can be used wit
16 streams that throw an IOException whne skip is invoked.
17 Issue: COMPRESS-449.
18o New constructors have been added to SevenZFile that accept
19 char[]s rather than byte[]s in order to avoid a common error
20 of using the wrong encoding when creating the byte[]. This
21 change may break source compatibility for client code that
22 uses one of the constructors expecting a password and passes
23 in null as password. We recommend to change the code to use a
24 constructor without password argument.
25 Issue: COMPRESS-452.
26
27Fixed Bugs:
28o Removed the objenesis dependency from the pom as it is not
29 needed at all.
30o Fixed resource leak in ParallelScatterZipCreator#writeTo.
31 Issue: COMPRESS-446.
32o Certain errors when parsing ZIP extra fields in corrupt
33 archives are now turned into ZipException, they used to
34 manifest as ArrayIndexOutOfBoundsException before.
35 Issue: COMPRESS-447.
36o IOUtils.copy now verifies the buffer size is bigger than 0.
37 Issue: COMPRESS-451.
38o ZipArchiveInputStream failed to read some files with stored
39 entries using a data descriptor.
40 Issue: COMPRESS-454.
41
42Changes:
43o Fixed some code examples.
44 Github Pull Request #63.
45 Thanks to Marchenko Sergey.
46o The streams returned by ZipFile and most other decompressing
47 streams now provide information about the number of compressed
48 and uncompressed bytes read so far. This may be used to detect
49 a ZipBomb if the compression ratio exceeds a certain
50 threshold, for example.
51 For SevenZFile a new method returns the statistics for the
52 current entry.
53 Issue: COMPRESS-445.
54 Thanks to Andreas Beeker.
55o Added a workaround for a bug in AdoptOpenJDK for S/390 to
56 BZip2CompressorInputStream.
57 Issue: COMPRESS-453.
58
Stefan Bodewigb5204112018-02-07 07:32:46 +010059Release 1.16.1
60--------------
61
Stefan Bodewig67c2f682018-02-10 09:44:34 +010062Fixed Bug:
Stefan Bodewigb5204112018-02-07 07:32:46 +010063o Fixed the OSGi manifest entry for imports that has been broken
64 in 1.16.
65 Issue: COMPRESS-442.
66
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010067Release 1.16
68------------
69
70New features:
71o Add read-only support for Zstandard compression based on the
72 Zstd-jni project.
Stefan Bodewig2683e562018-05-30 18:47:59 +020073 Issue: COMPRESS-423. Thanks to Andre F de Miranda.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010074o Added auto-detection for Zstandard compressed streams.
Stefan Bodewig2683e562018-05-30 18:47:59 +020075 Issue: COMPRESS-425.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010076o Added write-support for Zstandard compression.
Stefan Bodewig2683e562018-05-30 18:47:59 +020077 Issue: COMPRESS-426.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010078o Added read-only DEFLATE64 support to ZIP archives and as
79 stand-alone CompressorInputStream.
Stefan Bodewig2683e562018-05-30 18:47:59 +020080 Issue: COMPRESS-380. Thanks to Christian Marquez Grabia.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010081o Added read-only DEFLATE64 support to 7z archives.
Stefan Bodewig2683e562018-05-30 18:47:59 +020082 Issue: COMPRESS-437.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010083
84Fixed Bugs:
85o Synchronized iteration over a synchronizedList in
86 ParallelScatterZipCreator.
Stefan Bodewig2683e562018-05-30 18:47:59 +020087 Issue: COMPRESS-430. Thanks to Bruno P. Kinoshita.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010088o ZipFile could get stuck in an infinite loop when parsing ZIP
89 archives with certain strong encryption headers.
Stefan Bodewig2683e562018-05-30 18:47:59 +020090 Issue: COMPRESS-432.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010091o Added improved checks to detect corrupted bzip2 streams and
92 throw the expected IOException rather than obscure
93 RuntimeExceptions.
Stefan Bodewig2683e562018-05-30 18:47:59 +020094 Issue: COMPRESS-424.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010095
96Changes:
97o Replaces instanceof checks with a type marker in LZ77 support code.
Stefan Bodewig2683e562018-05-30 18:47:59 +020098 Issue: COMPRESS-435. Thanks to BELUGA BEHR.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010099o Updated XZ for Java dependency to 1.8 in order to pick up bug fix
Stefan Bodewig2683e562018-05-30 18:47:59 +0200100 to LZMA2InputStream's available method.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +0100101o ZipArchiveEntry now exposes how the name or comment have been
102 determined when the entry was read.
Stefan Bodewig2683e562018-05-30 18:47:59 +0200103 Issue: COMPRESS-429. Thanks to Damiano Albani.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +0100104o ZipFile.getInputStream will now always buffer the stream
105 internally in order to improve read performance.
Stefan Bodewig2683e562018-05-30 18:47:59 +0200106 Issue: COMPRESS-438.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +0100107o Speed improvement for DEFLATE64 decompression.
Stefan Bodewig2683e562018-05-30 18:47:59 +0200108 Issue: COMPRESS-440. Thanks to Dawid Weiss.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +0100109o Added a few extra sanity checks for the rarer compression
110 methods used in ZIP archives.
Stefan Bodewig2683e562018-05-30 18:47:59 +0200111 Issue: COMPRESS-436.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +0100112o Simplified the special handling for the dummy byte required by
113 zlib when using java.util.zip.Inflater.
Stefan Bodewig2683e562018-05-30 18:47:59 +0200114 Issue: COMPRESS-441.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +0100115o Various code cleanups.
Stefan Bodewig2683e562018-05-30 18:47:59 +0200116 Github Pull Request #61. Thanks to Shahab Kondri.
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +0100117o TarArchiveEntry's preserveLeadingSlashes constructor argument
118 has been renamed and can now also be used to preserve the
Stefan Bodewig2683e562018-05-30 18:47:59 +0200119 drive letter on Windows.
Stefan Bodewigde633062014-10-09 12:00:48 +0000120
Stefan Bodewigc348be12017-10-09 18:18:41 +0200121Release 1.15
122------------
123
124New features:
125o Added magic MANIFEST entry Automatic-Module-Name so the module
126 name will be org.apache.commons.compress when the jar is used
127 as an automatic module in Java9.
128 Issue: COMPRESS-397.
129o Added a new utility class FixedLengthBlockOutputStream that
130 can be used to ensure writing always happens in blocks of a
131 given size.
132 Issue: COMPRESS-405. Thanks to Simon Spero.
133o It is now possible to specify/read custom PAX headers when
134 writing/reading tar archives.
135 Issue: COMPRESS-400. Thanks to Simon Spero.
136
137Fixed Bugs:
138o Make sure "version needed to extract" in local file header and
139 central directory of a ZIP archive agree with each other.
140 Also ensure the version is set to 2.0 if DEFLATE is used.
141 Issue: COMPRESS-394.
142o Don't use a data descriptor in ZIP archives when copying a raw
143 entry that already knows its size and CRC information.
144 Issue: COMPRESS-395.
145o Travis build redundantly repeats compilation and tests redundantly
146 GitHub Pull Request #43. Thanks to Simon Spero.
147 Issue: COMPRESS-413
148o The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
149 Java.
150 Issue: COMPRESS-396.
151o BUILDING.md now passes the RAT check.
152 Issue: COMPRESS-406. Thanks to Simon Spero.
153o Made sure ChecksumCalculatingInputStream receives valid
154 checksum and input stream instances via the constructor.
155 Issue: COMPRESS-412. Thanks to Michael Hausegger.
156o TarArchiveOutputStream now verifies the block and record sizes
157 specified at construction time are compatible with the tar
158 specification. In particular 512 is the only record size
159 accepted and the block size must be a multiple of 512.
160 Issue: COMPRESS-407. Thanks to Simon Spero.
161o Fixed class names of CpioArchiveEntry and
162 CpioArchiveInputStream in various Javadocs.
163 Issue: COMPRESS-415.
164o The code of the extended timestamp zip extra field incorrectly
165 assumed the time was stored as unsigned 32-bit int and thus
166 created incorrect results for years after 2037.
167 Issue: COMPRESS-416. Thanks to Simon Spero.
168o Removed ZipEncoding code that became obsolete when we started
169 to require Java 5 as baseline long ago.
170 Issue: COMPRESS-410. Thanks to Simon Spero.
171o The tar package will no longer try to parse the major and
172 minor device numbers unless the entry represents a character
173 or block special file.
174 Issue: COMPRESS-417.
175o When reading tar headers with name fields containing embedded
176 NULs, the name will now be terminated at the first NUL byte.
177 Issue: COMPRESS-421. Thanks to Roel Spilker.
178o Simplified TarArchiveOutputStream by replacing the internal
179 buffering with new class FixedLengthBlockOutputStream.
180 Issue: COMPRESS-409.
181
Stefan Bodewigdd7c7702017-05-11 21:03:58 +0200182Release 1.14
183------------
184
185New features:
186o Added write support for Snappy.
187 Issue: COMPRESS-246.
188o Added support for LZ4 (block and frame format).
189 Issue: COMPRESS-271.
190o Add static detect(InputStream in) to CompressorStreamFactory
191 and ArchiveStreamFactory
192 Issue: COMPRESS-385.
193o Added a way to limit amount of memory ZCompressorStream may
194 use.
195 Issue: COMPRESS-382. Thanks to Tim Allison.
196o Added a way to limit amount of memory ZCompressorStream may
197 use.
198 Issue: COMPRESS-386. Thanks to Tim Allison.
199o Added a way to limit amount of memory LZMACompressorStream and
200 XZCompressorInputStream may use.
201 Issue: COMPRESS-382. Thanks to Tim Allison.
202o Add Brotli decoder based on the Google Brotli library.
203 Issue: COMPRESS-392. Thanks to Philippe Mouawad.
204o ZipEntry now exposes its data offset.
205 Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky.
206o Using ZipArchiveEntry's setAlignment it is now possible to
207 ensure the data offset of an entry starts at a file position
208 that at word or page boundaries.
209 A new extra field has been added for this purpose.
210 Issue: COMPRESS-391. Thanks to Zbynek Vyskovsky.
211
212Fixed Bugs:
213o SnappyCompressorInputStream slides the window too early
214 leading to ArrayIndexOutOfBoundsExceptions for some streams.
215 Issue: COMPRESS-378.
216o ZipArchiveEntry#isUnixSymlink now only returns true if the
217 corresponding link flag is the only file-type flag set.
218 Issue: COMPRESS-379. Thanks to Guillaume Boué.
219o Fixed an integer overflow in CPIO's CRC calculation.
220 Pull Request #17. Thanks to Daniel Collin.
221o Make unit tests work on Windows paths with spaces in their names.
222 Issue: COMPRESS-387.
223o Internal location pointer in ZipFile could get incremented
224 even if nothing had been read.
225 Issue: COMPRESS-389.
226o LZMACompressorOutputStream#flush would throw an exception
227 rather than be the NOP it promised to be.
228 Issue: COMPRESS-393.
229
230Changes:
231o The blocksize for FramedSnappyCompressorInputStream can now be
232 configured as some IWA files seem to be using blocks larger
233 than the default 32k.
234 Issue: COMPRESS-358.
235o BZip2CompressorInputstream now uses BitInputStream internally.
236 Pull Request #13. Thanks to Thomas Meyer.
237o Improved performance for concurrent reads from ZipFile when
238 reading from a file.
239 Issue: COMPRESS-388. Thanks to Zbynek Vyskovsky.
240
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +0100241Release 1.13
242------------
243
Stefan Bodewig45438472016-12-25 13:16:42 +0100244Commons Compress 1.13 is the first version to require Java 7 at
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +0100245runtime.
246
247Changes in this version include:
248
249New features:
250o SevenZFile, SevenZOutputFile, ZipFile and
251 ZipArchiveOutputStream can now work on non-file resources if
252 they can be accessed via SeekableByteChannel.
253 Issue: COMPRESS-327.
254o Allow compressor extensions through a standard JRE ServiceLoader.
255 Issue: COMPRESS-368.
256o Allow archive extensions through a standard JRE ServiceLoader.
257 Issue: COMPRESS-369.
258o Add write support for the legacy LZMA format, this requires XZ
259 for Java 1.6.
260 Issue: COMPRESS-373.
261o Add write support for the legacy LZMA stream to 7z, this
262 requires XZ for Java 1.6.
263 Issue: COMPRESS-374.
264o Allow the clients of ParallelScatterZipCreator to provide
265 ZipArchiveEntryRequestSupplier.
266 Issue: COMPRESS-375. Thanks to Plamen Totev.
267o Add a version-independent link to the API docs of the latest
268 release.
269 Issue: COMPRESS-372.
270
271Fixed Bugs:
272o BitInputStream could return bad results when overflowing
273 internally - if two consecutive reads tried to read more than
274 64 bits.
275 Issue: COMPRESS-363.
276o ZipArchiveInputStream.closeEntry does not properly advance to
277 next entry if there are junk bytes at end of data section.
278 Issue: COMPRESS-364. Thanks to Mike Mole.
279o ZipArchiveInputStream now throws an Exception if it encounters
280 a broken ZIP archive rather than signaling end-of-archive.
281 Issue: COMPRESS-367. Thanks to Mike Mole.
282o ScatterZipOutputStream didn't close the StreamCompressor
283 causing a potential resource leak.
284 Issue: COMPRESS-377.
285
286Changes:
287o Update Java requirement from 6 to 7.
288 Issue: COMPRESS-360.
289o Clarified which TarArchiveEntry methods are useless for
290 entries read from an archive.
291 Issue: COMPRESS-366.
292
Stefan Bodewig3623ee72016-06-18 17:25:37 +0200293Release 1.12
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200294------------
295
Stefan Bodewig9a677fb2016-06-21 21:27:57 +0200296Commons Compress 1.12 is the first version to require Java 6 at
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200297runtime.
298
299Release 1.12 changes the behavior of BZip2CompressorOutputStream's
300finalize method so that it no longer invokes finish. This is going to
301break code that relied on the finalizer to clean up an unfinished
302stream. The code will need to be changed to call finish or close
303itself. Note that a finalizer is not guaranteed to run, so the feature
304was not 100% effective in any case.
305
306New features:
307
308o FramedSnappyCompressorInputStream now supports the dialect of
309 Snappy used by the IWA files contained within the zip archives
310 used in Apple's iWork 13 files.
311 Issue: COMPRESS-352.
312
313Fixed Bugs:
314
315o SevenZFile.read() throws an IllegalStateException for empty entries.
316 Issue: COMPRESS-348.
317o TarArchiveInputStream failed to parse PAX headers that included
318 blank lines.
319 Issue: COMPRESS-355. Thanks to Jeremy Gustie.
320o TarArchiveInputStream failed to parse PAX headers whose tar entry
321 name ended with a slash.
322 Issue: COMPRESS-356. Thanks to Jeremy Gustie.
323
324Changes:
325o Update requirement from Java 5 to 6.
Stefan Bodewig2683e562018-05-30 18:47:59 +0200326 Issue: COMPRESS-349.
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200327o TarArchiveEntry wastefully allocates empty arrays.
Stefan Bodewig2683e562018-05-30 18:47:59 +0200328 Issue: COMPRESS-350.
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200329o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
330 refer to IOEx, not NPE.
331 Issue: COMPRESS-353.
332o PureJavaCrc32C in the snappy package is now final so it is now safe
333 to call a virtual method inside the constructor.
334 Issue: COMPRESS-354.
335
336o ZipArchiveInputStream and CpioArchiveInputStream could throw
337 exceptions who's messages contained potentially corrupt entry names
338 read from a broken archive. They will now sanitize the names by
339 replacing unprintable characters and restricting the length to 255
340 characters.
341 Issue: COMPRESS-351.
342o BZip2CompressorOutputStream no longer tries to finish the output
343 stream in finalize. This is a breaking change for code that relied
344 on the finalizer.
345 Issue: COMPRESS-357.
346
347
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200348Release 1.11
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100349------------
350
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200351New features:
352o TarArchiveInputStream now supports reading global PAX headers.
353 Issue: COMPRESS-347.
354o The PAX headers for sparse entries written by star are now
355 applied.
356 Issue: COMPRESS-346.
357o GNU sparse files using one of the PAX formats are now
358 detected, but cannot be extracted.
359 Issue: COMPRESS-345.
360o New method SevenZFile.getEntries can be used to list the
361 contents of a 7z archive.
362 Issue: COMPRESS-341.
363o When using Zip64Mode.Always also use ZIP64 extensions inside
364 the central directory.
365 GitHub Pull Request #10 Thanks to Matt Hovey.
366o ZipFile.getRawInputStream() is now part of the public API
367 Issue: COMPRESS-323.
368o Allow byte-for-byte replication of Zip entries.
369 GitHub Pull Request #6. Thanks to Jason van Zyl.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100370o TarArchiveEntry's preserveLeadingSlashes is now a property and used
371 on later calls to setName, too.
372 This behavior is a breaking change.
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200373 Issue: COMPRESS-328.
374o Added read-only support for bzip2 compression used inside of
375 ZIP archives.
376 GitHub Pull Request #4. Thanks to Sören Glimm.
377
378Fixed Bugs:
379o ArArchiveInputStream can now read GNU extended names that are
380 terminated with a NUL byte rather than a linefeed.
381 Issue: COMPRESS-344.
382o Native Memory Leak in Sevenz-DeflateDecoder.
383 Issue: COMPRESS-343. Thanks to Rene Preissel.
384o SevenZFile will now only try to drain an entry's content when
385 moving on to the next entry if data is read from the next
386 entry. This should improve performance for applications that
387 try to skip over entries.
388 Issue: COMPRESS-340. Thanks to Dawid Weiss.
389o file names of tar archives using the xstar format are now
390 parsed properly.
391 Issue: COMPRESS-336.
392o checksums of tars that pad the checksum field to the left are
393 now calculated properly.
394 Issue: COMPRESS-335.
395o ArArchiveInputStream failed to read past the first entry when
396 BSD long names have been used.
397 Issue: COMPRESS-334. Thanks to Jeremy Gustie.
398o Added buffering for random access which speeds up 7Z support.
399 Issue: COMPRESS-333. Thanks to Dawid Weiss.
400o The checksum validation of TararchiveEntry is now as strict as
401 the validation of GNU tar, which eliminates a few cases of
402 false positives of ArchiveStreamFactory.
403 This behavior is a breaking change since the check has become
404 more strict but any archive that fails the checksum test now
405 would also fail it when extracted with other tools and must be
406 considered an invalid archive.
407 Issue: COMPRESS-331.
408o SnappyCompressorInputStream and
409 FramedSnappyCompressorInputStream returned 0 at the end of the
410 stream under certain circumstances.
411 Issue: COMPRESS-332.
412o Adjusted unit test to updates in Java8 and later that change
413 the logic of ZipEntry#getTime.
414 Issue: COMPRESS-326.
415o TarArchiveOutputStream will now recognize GNU long name and
416 link entries even if the special entry has a different name
417 than GNU tar uses itself. This seems to be the case for
418 archives created by star.
419 Issue: COMPRESS-324.
420o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
421 fields are read from the central directory.
422 Issue: COMPRESS-321.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100423
Stefan Bodewigec075142015-01-26 05:12:09 +0000424Release 1.10
425------------
426
427Release 1.10 moves the former
428org.apache.commons.compress.compressors.z._internal_ package which
429breaks backwards compatibility for code which used the old package.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000430
431This also changes the superclass of ZCompressorInputStream which makes
432this class binary incompatible with the one of Compress 1.9. Code
433that extends ZCompressorInputStream will need to be recompiled in
434order to work with Compress 1.10.
Stefan Bodewigc100d2e2015-01-30 08:24:54 +0000435
Stefan Bodewigec075142015-01-26 05:12:09 +0000436New features:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000437o CompressorStreamFactory can now auto-detect DEFLATE streams
438 with ZLIB header.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100439 Issue: COMPRESS-316. Thanks to Nick Burch.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000440o CompressorStreamFactory can now auto-detect LZMA streams.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100441 Issue: COMPRESS-313.
Stefan Bodewigec075142015-01-26 05:12:09 +0000442o Added support for parallel compression. This low-level API allows
443 a client to build a zip/jar file by using the class
444 org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
445
446 Zip documentation updated with further notes about parallel features.
447
448 Please note that some aspects of jar creation need to be
449 handled by client code and is not part of commons-compress for this
450 release.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100451 Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000452o Cut overall object instantiation in half by changing file
453 header generation algorithm, for a 10-15 percent performance
454 improvement.
455
456 Also extracted two private methods createLocalFileHeader
457 and createCentralFileHeader in ZipArchiveOutputStream.
458 These may have some interesting additional usages in the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100459 near future. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000460o New methods in ZipArchiveOutputStream and ZipFile allows
461 entries to be copied from one archive to another without
462 having to re-compress them.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100463 Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000464
465Fixed Bugs:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000466o TarArchiveInputStream can now read entries with group or
467 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100468 Issue: COMPRESS-314.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000469o TarArchiveOutputStream can now write entries with group or
470 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100471 Issue: COMPRESS-315.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000472o TarArchiveEntry's constructor with a File and a String arg
473 didn't normalize the name.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100474 Issue: COMPRESS-312.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000475o ZipEncodingHelper no longer reads system properties directly
476 to determine the default charset.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100477 Issue: COMPRESS-308.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000478o BZip2CompressorInputStream#read would return -1 when asked to
479 read 0 bytes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100480 Issue: COMPRESS-309.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000481o ArchiveStreamFactory fails to pass on the encoding when creating
482 some streams.
483 * ArjArchiveInputStream
484 * CpioArchiveInputStream
485 * DumpArchiveInputStream
486 * JarArchiveInputStream
487 * TarArchiveInputStream
488 * JarArchiveOutputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100489 Issue: COMPRESS-306.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000490o Restore immutability/thread-safety to ArchiveStreamFactory.
491 The class is now immutable provided that the method setEntryEncoding
492 is not used. The class is thread-safe.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100493 Issue: COMPRESS-302.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000494o Restore immutability/thread-safety to CompressorStreamFactory.
495 The class is now immutable provided that the method
496 setDecompressConcatenated is not used. The class is thread-safe.
497 Issue: COMPRESS-303.
Stefan Bodewigec075142015-01-26 05:12:09 +0000498o ZipFile logs a warning in its finalizer when its constructor
499 has thrown an exception reading the file - for example if the
500 file doesn't exist.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100501 Issue: COMPRESS-297.
Stefan Bodewigec075142015-01-26 05:12:09 +0000502o Improved error message when tar encounters a groupId that is
503 too big to write without using the STAR or POSIX format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100504 Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000505o SevenZFile now throws the specific PasswordRequiredException
506 when it encounters an encrypted stream but no password has
507 been specified.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100508 Issue: COMPRESS-298.
Stefan Bodewigec075142015-01-26 05:12:09 +0000509
510Changes:
511o Moved the package
512 org.apache.commons.compress.compressors.z._internal_ to
513 org.apache.commons.compress.compressors.lzw and made it part
514 of the API that is officially supported. This will break
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100515 existing code that uses the old package. Thanks to Damjan Jovanovic.
Stefan Bodewigec075142015-01-26 05:12:09 +0000516
517For complete information on Apache Commons Compress, including instructions
518on how to submit bug reports, patches, or suggestions for improvement,
519see the Apache Commons Compress website:
520
Stefan Bodewig91b84322018-03-08 11:42:12 +0100521https://commons.apache.org/compress/
Stefan Bodewigec075142015-01-26 05:12:09 +0000522
523Old Release Notes
524=================
525
Stefan Bodewigde633062014-10-09 12:00:48 +0000526Release 1.9
527-----------
528
529New features:
530o Added support for DEFLATE streams without any gzip framing.
531 Issue: COMPRESS-263.
532 Thanks to Matthias Stevens.
533
534Fixed Bugs:
535o When reading 7z files unknown file properties and properties of type
536 kDummy are now ignored.
537 Issue: COMPRESS-287.
538o Expanding 7z archives using LZMA compression could cause an
539 EOFException.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100540 Issue: COMPRESS-286.
Stefan Bodewigde633062014-10-09 12:00:48 +0000541o Long-Name and -link or PAX-header entries in TAR archives always had
542 the current time as last modfication time, creating archives that
543 are different at the byte level each time an archive was built.
544 Issue: COMPRESS-289.
545 Thanks to Bob Robertson.
546
547Changes:
548o Checking for XZ for Java may be expensive. The result will now be
549 cached outside of an OSGi environment. You can use the new
550 XZUtils#setCacheXZAvailability to overrride this default behavior.
551 Issue: COMPRESS-285.
552
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000553Release 1.8.1
Stefan Bodewigde633062014-10-09 12:00:48 +0000554-------------
Sebastian Bazley48882f12010-04-13 21:02:37 +0000555
Stefan Bodewig48d74702013-03-10 17:10:57 +0000556New features:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000557o COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100558 (".Z") streams.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000559
Sebastian Bazley48882f12010-04-13 21:02:37 +0000560Fixed Bugs:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000561o COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100562 non-buffered stream in certain cases.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000563o COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100564 more could be read from the stream.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000565o COMPRESS-276: ArchiveStreams now validate there is a current entry before
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100566 reading or writing entry data.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000567o ArjArchiveInputStream#canReadEntryData tested the current
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100568 entry of the stream rather than its argument.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000569o COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100570 entries.
571o COMPRESS-273: Added a few null checks to improve robustness.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000572o COMPRESS-278: TarArchiveInputStream failed to read archives with empty
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100573 gid/uid fields.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000574o COMPRESS-279: TarArchiveInputStream now again throws an exception when it
575 encounters a truncated archive while reading from the last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100576 entry.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000577o COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100578 IOUtils#skip method. Thanks to BELUGA BEHR.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000579
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000580Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100581o The dependency on org.tukaani:xz is now marked as optional.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000582
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000583Release 1.8
584-----------
585
586New features:
587o GzipCompressorInputStream now provides access to the same
588 metadata that can be provided via GzipParameters when writing
589 a gzip stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100590 Issue: COMPRESS-260.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000591o SevenZOutputFile now supports chaining multiple
592 compression/encryption/filter methods and passing options to
593 the methods.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100594 Issue: COMPRESS-266.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000595o The (compression) method(s) can now be specified per entry in
596 SevenZOutputFile.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100597 Issue: COMPRESS-261.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000598o SevenZArchiveEntry "knows" which method(s) have been used to
599 write it to the archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100600 Issue: COMPRESS-258.
601o The 7z package now supports the delta filter as method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000602o The 7z package now supports BCJ filters for several platforms.
603 You will need a version >= 1.5 of XZ for Java to read archives
604 using BCJ, though.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100605 Issue: COMPRESS-257.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000606
607Fixed Bugs:
608o BZip2CompressorInputStream read fewer bytes than possible from
609 a truncated stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100610 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000611o SevenZFile failed claiming the dictionary was too large when
612 archives used LZMA compression for headers and content and
613 certain non-default dictionary sizes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100614 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000615o CompressorStreamFactory.createCompressorInputStream with
616 explicit compression did not honor decompressConcatenated
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100617 Issue: COMPRESS-259.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000618o TarArchiveInputStream will now read archives created by tar
619 implementations that encode big numbers by not adding a
620 trailing NUL.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100621 Issue: COMPRESS-262.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000622o ZipArchiveInputStream would return NUL bytes for the first 512
623 bytes of a STORED entry if it was the very first entry of the
624 archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100625 Issue: COMPRESS-264.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000626o When writing PAX/POSIX headers for TAR entries with
627 backslashes or certain non-ASCII characters in their name
628 TarArchiveOutputStream could fail.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100629 Issue: COMPRESS-265.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000630o ArchiveStreamFactory now throws a StreamingNotSupported - a
631 new subclass of ArchiveException - if it is asked to read from
632 or write to a stream and Commons Compress doesn't support
633 streaming for the format. This currently only applies to the
634 7z format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100635 Issue: COMPRESS-267.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000636
637Release 1.7
638-----------
639
640New features:
641o Read-Only support for Snappy compression.
642 Issue: COMPRESS-147. Thanks to BELUGA BEHR.
643o Read-Only support for .Z compressed files.
644 Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
645o ZipFile and ZipArchiveInputStream now support reading entries
646 compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
647o GzipCompressorOutputStream now supports setting the compression
648 level and the header metadata (filename, comment, modification time,
649 operating system and extra flags)
650 Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
651o ZipFile and ZipArchiveInputStream now support reading entries
652 compressed using the IMPLODE method.
653 Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
654o ZipFile and the 7z file classes now implement Closeable and can be
655 used in try-with-resources constructs.
656
657Fixed Bugs:
658o SevenZOutputFile#closeArchiveEntry throws an exception when using
659 LZMA2 compression on Java8. Issue: COMPRESS-241.
660o 7z reading of big 64bit values could be wrong.
661 Issue: COMPRESS-244. Thanks to Nico Kruber.
662o TarArchiveInputStream could fail to read an archive completely.
663 Issue: COMPRESS-245.
664o The time-setters in X5455_ExtendedTimestamp now set the
665 corresponding flags explicitly - i.e. they set the bit if the valus
666 is not-null and reset it otherwise. This may cause
667 incompatibilities if you use setFlags to unset a bit and later set
668 the time to a non-null value - the flag will now be set.
669 Issue: COMPRESS-242.
670o SevenZOutputFile would create invalid archives if more than six
671 empty files or directories were included. Issue: COMPRESS-252.
672
673Release 1.6
674-----------
675
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100676Version 1.6 introduces changes to the internal API of the tar package that
677break backwards compatibility in the following rare cases. This version
678removes the package private TarBuffer class along with the protected "buffer"
679members in TarArchiveInputStream and TarArchiveOutputStream. This change will
680only affect you if you have created a subclass of one of the stream classes
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000681and accessed the buffer member or directly used the TarBuffer class.
682
683Changes in this version include:
684
685New features:
686o Added support for 7z archives. Most compression algorithms
687 can be read and written, LZMA and encryption are only
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100688 supported when reading. Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000689o Added read-only support for ARJ archives that don't use
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100690 compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000691o DumpArchiveInputStream now supports an encoding parameter that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100692 can be used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000693o The CPIO streams now support an encoding parameter that can be
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100694 used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000695o Read-only support for LZMA standalone compression has been added.
696 Issue: COMPRESS-111.
697
698Fixed Bugs:
699o TarBuffer.tryToConsumeSecondEOFRecord could throw a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100700 NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000701o Parsing of zip64 extra fields has become more lenient in order
702 to be able to read archives created by DotNetZip and maybe
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100703 other archivers as well. Issue: COMPRESS-228.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000704o TAR will now properly read the names of symbolic links with
705 long names that use the GNU variant to specify the long file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100706 name. Issue: COMPRESS-229. Thanks to Christoph Gysin.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000707o ZipFile#getInputStream could return null if the archive
708 contained duplicate entries.
709 The class now also provides two new methods to obtain all
710 entries of a given name rather than just the first one.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100711 Issue: COMPRESS-227.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000712o CpioArchiveInputStream failed to read archives created by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100713 Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000714o TarArchiveOutputStream now properly handles link names that
715 are too long to fit into a traditional TAR header. Issue:
716 COMPRESS-237. Thanks to Emmanuel Bourg.
717o The auto-detecting create*InputStream methods of Archive and
718 CompressorStreamFactory could fail to detect the format of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100719 blocking input streams. Issue: COMPRESS-239.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000720
721Changes:
722o Readabilty patch to TarArchiveInputStream. Issue:
723 COMPRESS-232. Thanks to BELUGA BEHR.
724o Performance improvements to TarArchiveInputStream, in
725 particular to the skip method. Issue: COMPRESS-234. Thanks to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100726 BELUGA BEHR.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000727
728Release 1.5
729-----------
730
731New features:
732
733o CompressorStreamFactory has an option to create decompressing
734 streams that decompress the full input for formats that support
735 multiple concatenated streams.
736 Issue: COMPRESS-220.
737
738Fixed Bugs:
739
740o Typo in CompressorStreamFactory Javadoc
741 Issue: COMPRESS-218.
742 Thanks to Gili.
743o ArchiveStreamFactory's tar stream detection created false positives
744 for AIFF files.
745 Issue: COMPRESS-191.
746 Thanks to Jukka Zitting.
747o XZ for Java didn't provide an OSGi bundle. Compress' dependency on
748 it has now been marked optional so Compress itself can still be used
749 in an OSGi context.
750 Issue: COMPRESS-199.
751 Thanks to Jukka Zitting.
752o When specifying the encoding explicitly TarArchiveOutputStream would
753 write unreadable names in GNU mode or even cause errors in POSIX
754 mode for file names longer than 66 characters.
755 Issue: COMPRESS-200.
756 Thanks to Christian Schlichtherle.
757o Writing TAR PAX headers failed if the generated entry name ended
758 with a "/".
759 Issue: COMPRESS-203.
760o ZipArchiveInputStream sometimes failed to provide input to the
761 Inflater when it needed it, leading to reads returning 0.
762 Issue: COMPRESS-189.
763 Thanks to Daniel Lowe.
764o TarArchiveInputStream ignored the encoding for GNU long name
765 entries.
766 Issue: COMPRESS-212.
767o TarArchiveInputStream could leave the second EOF record inside the
768 stream it had just finished reading.
769 Issue: COMPRESS-206.
770 Thanks to Peter De Maeyer.
771o DumpArchiveInputStream no longer implicitly closes the original
772 input stream when it reaches the end of the archive.
773o ZipArchiveInputStream now consumes the remainder of the archive when
774 getNextZipEntry returns null.
775o Unit tests could fail if the source tree was checked out to a
776 directory tree containign spaces.
777 Issue: COMPRESS-205.
778 Thanks to Daniel Lowe.
779o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
780 entries from ZipArchiveInputStream.
781 Issue: COMPRESS-219.
782o CompressorStreamFactory can now be used without XZ for Java being
783 available.
784 Issue: COMPRESS-221.
785
786Changes:
787
788o Improved exception message if a zip archive cannot be read because
789 of an unsupported compression method.
790 Issue: COMPRESS-188.
791 Thanks to Harald Kuhn.
792o ArchiveStreamFactory has a setting for file name encoding that sets
793 up encoding for ZIP and TAR streams.
794 Issue: COMPRESS-192.
795 Thanks to Jukka Zitting.
796o TarArchiveEntry now has a method to verify its checksum.
797 Issue: COMPRESS-191.
798 Thanks to Jukka Zitting.
799o Split/spanned ZIP archives are now properly detected by
800 ArchiveStreamFactory but will cause an
801 UnsupportedZipFeatureException when read.
802o ZipArchiveInputStream now reads archives that start with a "PK00"
803 signature. Archives with this signatures are created when the
804 archiver was willing to split the archive but in the end only needed
805 a single segment - so didn't split anything.
806 Issue: COMPRESS-208.
807o TarArchiveEntry has a new constructor that allows setting linkFlag
808 and preserveLeadingSlashes at the same time.
809 Issue: COMPRESS-201.
810o ChangeSetPerformer has a new perform overload that uses a ZipFile
811 instance as input.
812 Issue: COMPRESS-159.
813o Garbage collection pressure has been reduced by reusing temporary
814 byte arrays in classes.
815 Issue: COMPRESS-172.
816 Thanks to Thomas Mair.
817o Can now handle zip extra field 0x5455 - Extended Timestamp.
818 Issue: COMPRESS-210.
819 Thanks to Julius Davies.
820o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
821 Issue: COMPRESS-211.
822 Thanks to Julius Davies.
823o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
824 Issue: COMPRESS-213.
825 Thanks to Julius Davies.
826o better support for unix symlinks in ZipFile entries.
827 Issue: COMPRESS-214.
828 Thanks to Julius Davies.
829o ZipFile's initialization has been improved for non-Zip64 archives.
830 Issue: COMPRESS-215.
831 Thanks to Robin Power.
832o Updated XZ for Java dependency to 1.2 as this version provides
833 proper OSGi manifest attributes.
834
835Release 1.4.1
836-------------
837
838This is a security bugfix release, see
Stefan Bodewig91b84322018-03-08 11:42:12 +0100839https://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000840
841Fixed Bugs:
842
843o Ported libbzip2's fallback sort algorithm to
844 BZip2CompressorOutputStream to speed up compression in certain
845 edge cases.
846
847Release 1.4
848-----------
849
850New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100851o COMPRESS-156: Support for the XZ format has been added.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000852
853Fixed Bugs:
854o COMPRESS-183: The tar package now allows the encoding of file names to be
855 specified and can optionally use PAX extension headers to
856 write non-ASCII file names.
857 The stream classes now write (or expect to read) archives that
858 use the platform's native encoding for file names. Apache
859 Commons Compress 1.3 used to strip everything but the lower
860 eight bits of each character which effectively only worked for
861 ASCII and ISO-8859-1 file names.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100862 This new default behavior is a breaking change.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000863o COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100864 contained non-ASCII characters.
865o COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException
866o COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
867o COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000868o COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100869 short text files were TAR archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000870o COMPRESS-164: ZipFile didn't work properly for archives using unicode extra
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100871 fields rather than UTF-8 filenames and the EFS-Flag.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000872o COMPRESS-169: For corrupt archives ZipFile would throw a RuntimeException in
873 some cases and an IOException in others. It will now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100874 consistently throw an IOException.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000875
876Changes:
877o COMPRESS-182: The tar package can now write archives that use star/GNU/BSD
878 extensions or use the POSIX/PAX variant to store numeric
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100879 values that don't fit into the traditional header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000880o COMPRESS-181: Added a workaround for a Bug some tar implementations that add
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100881 a NUL byte as first byte in numeric header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000882o COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100883 as path separators in Unicode Extra Fields.
884o COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000885o COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100886 concatenated .bz2 files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000887o COMPRESS-154: GZipCompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100888 concatenated .gz files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000889o COMPRESS-16: The tar package can now read archives that use star/GNU/BSD
890 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100891 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000892o COMPRESS-165: The tar package can now write archives that use star/GNU/BSD
893 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100894 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000895o COMPRESS-166: The tar package can now use the POSIX/PAX variant for writing
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100896 entries with names longer than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000897
898Release 1.3
899-----------
900
901Commons Compress 1.3 is the first version to require Java5 at runtime.
902
903Changes in this version include:
904
905New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100906o Support for the Pack200 format has been added. Issue: COMPRESS-142.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000907o Read-only support for the format used by the Unix dump(8) tool
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100908 has been added. Issue: COMPRESS-132.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000909
910Fixed Bugs:
911o BZip2CompressorInputStream's getBytesRead method always
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100912 returned 0.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000913o ZipArchiveInputStream and ZipArchiveOutputStream could leak
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100914 resources on some JDKs. Issue: COMPRESS-152.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000915o TarArchiveOutputStream's getBytesWritten method didn't count
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100916 correctly. Issue: COMPRESS-160.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000917
918Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100919o The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000920o The AR package now supports the BSD dialect of storing file
921 names longer than 16 chars (both reading and writing).
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100922 Issue: COMPRESS-144.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000923
924Release 1.2
925-----------
926
927New features:
928o COMPRESS-123: ZipArchiveEntry has a new method getRawName that provides the
929 original bytes that made up the name. This may allow user
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100930 code to detect the encoding.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000931o COMPRESS-122: TarArchiveEntry provides access to the flags that determine
932 whether it is an archived symbolic link, pipe or other
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100933 "uncommon" file system object.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000934
935Fixed Bugs:
936o COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100937 message for entries between 2 GByte and 4 GByte in size.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000938o COMPRESS-145: TarArchiveInputStream now detects sparse entries using the
939 oldgnu format and properly reports it cannot extract their
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100940 contents.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000941o COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100942 implementation, the code has been made more defensive.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000943o COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100944 userId or groupId. Thanks to Trejkaz.
945o COMPRESS-139: ZipFile may leak resources on some JDKs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000946o COMPRESS-125: BZip2CompressorInputStream throws IOException if
947 underlying stream returns available() == 0.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100948 Removed the check.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000949o COMPRESS-127: Calling close() on inputStream returned by
950 CompressorStreamFactory.createCompressorInputStream()
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100951 does not close the underlying input stream.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000952o COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100953 data to the stream
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000954
955Changes:
956o ZipFile now implements finalize which closes the underlying
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100957 file.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000958o COMPRESS-117: Certain tar files not recognised by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100959 ArchiveStreamFactory.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000960
961Release 1.1
962-----------
963
964New features:
965o COMPRESS-108: Command-line interface to list archive contents.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100966 Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000967o COMPRESS-109: Tar implementation does not support Pax headers
968 Added support for reading pax headers.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100969 Note: does not support global pax headers
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000970o COMPRESS-103: ZipArchiveInputStream can optionally extract data that used
971 the STORED compression method and a data descriptor.
972 Doing so in a stream is not safe in general, so you have to
973 explicitly enable the feature. By default the stream will
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100974 throw an exception if it encounters such an entry.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000975o COMPRESS-98: The ZIP classes will throw specialized exceptions if any
976 attempt is made to read or write data that uses zip features
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100977 not supported (yet).
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000978o COMPRESS-99: ZipFile#getEntries returns entries in a predictable order -
979 the order they appear inside the central directory.
980 A new method getEntriesInPhysicalOrder returns entries in
981 order of the entry data, i.e. the order ZipArchiveInputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100982 would see.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000983o The Archive*Stream and ZipFile classes now have
984 can(Read|Write)EntryData methods that can be used to check
985 whether a given entry's data can be read/written.
986 The method currently returns false for ZIP archives if an
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100987 entry uses an unsupported compression method or encryption.
988o COMPRESS-89: The ZIP classes now detect encrypted entries.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000989o COMPRESS-97: Added autodetection of compression format to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100990 CompressorStreamFactory.
991o COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000992o A new constructor of TarArchiveEntry can create entries with
993 names that start with slashes - the default is to strip
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100994 leading slashes in order to create relative path names.
995o ArchiveEntry now has a getLastModifiedDate method.
996o COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000997
998Fixed Bugs:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100999o COMPRESS-72: Move acknowledgements from NOTICE to README
1000o COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
1001o COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127
1002o COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001003o COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001004 than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001005o COMPRESS-100: ZipArchiveInputStream will throw an exception if it detects an
1006 entry that uses a data descriptor for a STORED entry since it
1007 cannot reliably find the end of data for this "compression"
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001008 method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001009o COMPRESS-101: ZipArchiveInputStream should now properly read archives that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001010 use data descriptors but without the "unofficial" signature.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001011o COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001012 read properly.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001013o ArchiveInputStream has a new method getBytesRead that should
1014 be preferred over getCount since the later may truncate the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001015 number of bytes read for big archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001016o COMPRESS-85: The cpio archives created by CpioArchiveOutputStream couldn't
1017 be read by many existing native implementations because the
1018 archives contained multiple entries with the same inode/device
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001019 combinations and weren't padded to a blocksize of 512 bytes.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001020o COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001021 more lenient when parsing extra fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001022o COMPRESS-82: cpio is terribly slow.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001023 Documented that buffered streams are needed for performance
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001024o Improved exception message if the extra field data in ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001025 archives cannot be parsed.
1026o COMPRESS-17: Tar format unspecified - current support documented.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001027o COMPRESS-94: ZipArchiveEntry's equals method was broken for entries created
1028 with the String-arg constructor. This lead to broken ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001029 archives if two different entries had the same hash code. Thanks to Anon Devs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001030o COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001031 the archive was truncated. Thanks to Antoni Mylka.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001032o COMPRESS-86: Tar archive entries holding the file name for names longer
1033 than 100 characters in GNU longfile mode didn't properly
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001034 specify they'd be using the "oldgnu" extension.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001035o COMPRESS-83: Delegate all read and write methods in GZip stream in order to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001036 speed up operations.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001037o The ar and cpio streams now properly read and write last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001038 modified times.
1039o COMPRESS-81: TarOutputStream can leave garbage at the end of the archive
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001040
1041Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001042o COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//)
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001043o COMPRESS-105: Document that the name of an ZipArchiveEntry determines whether
1044 an entry is considered a directory or not.
1045 If you don't use the constructor with the File argument the entry's
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001046 name must end in a "/" in order for the entry to be known as a directory.
1047o COMPRESS-79: Move DOS/Java time conversions into Zip utility class.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001048o COMPRESS-75: ZipArchiveInputStream does not show location in file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +01001049 where a problem occurred.
Stefan Bodewig0b71b472014-10-05 13:36:58 +00001050