blob: bd48eb5d7925c03112fae53501b26691cd11d284 [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 Bodewigb5204112018-02-07 07:32:46 +01008Release 1.16.1
9--------------
10
Stefan Bodewig67c2f682018-02-10 09:44:34 +010011Fixed Bug:
Stefan Bodewigb5204112018-02-07 07:32:46 +010012o Fixed the OSGi manifest entry for imports that has been broken
13 in 1.16.
14 Issue: COMPRESS-442.
15
Stefan Bodewig2e44bbe2018-02-02 18:27:50 +010016Release 1.16
17------------
18
19New features:
20o Add read-only support for Zstandard compression based on the
21 Zstd-jni project.
22 Issue: COMPRESS-423. Thanks to Andre F de Miranda.
23o Added auto-detection for Zstandard compressed streams.
24 Issue: COMPRESS-425.
25o Added write-support for Zstandard compression.
26 Issue: COMPRESS-426.
27o Added read-only DEFLATE64 support to ZIP archives and as
28 stand-alone CompressorInputStream.
29 Issue: COMPRESS-380. Thanks to Christian Marquez Grabia.
30o Added read-only DEFLATE64 support to 7z archives.
31 Issue: COMPRESS-437.
32
33Fixed Bugs:
34o Synchronized iteration over a synchronizedList in
35 ParallelScatterZipCreator.
36 Issue: COMPRESS-430. Thanks to Bruno P. Kinoshita.
37o ZipFile could get stuck in an infinite loop when parsing ZIP
38 archives with certain strong encryption headers.
39 Issue: COMPRESS-432.
40o Added improved checks to detect corrupted bzip2 streams and
41 throw the expected IOException rather than obscure
42 RuntimeExceptions.
43 Issue: COMPRESS-424.
44
45Changes:
46o Replaces instanceof checks with a type marker in LZ77 support code.
47 Issue: COMPRESS-435. Thanks to BELUGA BEHR.
48o Updated XZ for Java dependency to 1.8 in order to pick up bug fix
49 to LZMA2InputStream's available method.
50o ZipArchiveEntry now exposes how the name or comment have been
51 determined when the entry was read.
52 Issue: COMPRESS-429. Thanks to Damiano Albani.
53o ZipFile.getInputStream will now always buffer the stream
54 internally in order to improve read performance.
55 Issue: COMPRESS-438.
56o Speed improvement for DEFLATE64 decompression.
57 Issue: COMPRESS-440. Thanks to Dawid Weiss.
58o Added a few extra sanity checks for the rarer compression
59 methods used in ZIP archives.
60 Issue: COMPRESS-436.
61o Simplified the special handling for the dummy byte required by
62 zlib when using java.util.zip.Inflater.
63 Issue: COMPRESS-441.
64o Various code cleanups.
65 Github Pull Request #61. Thanks to Shahab Kondri.
66o TarArchiveEntry's preserveLeadingSlashes constructor argument
67 has been renamed and can now also be used to preserve the
68 drive letter on Windows.
Stefan Bodewigde633062014-10-09 12:00:48 +000069
Stefan Bodewigc348be12017-10-09 18:18:41 +020070Release 1.15
71------------
72
73New features:
74o Added magic MANIFEST entry Automatic-Module-Name so the module
75 name will be org.apache.commons.compress when the jar is used
76 as an automatic module in Java9.
77 Issue: COMPRESS-397.
78o Added a new utility class FixedLengthBlockOutputStream that
79 can be used to ensure writing always happens in blocks of a
80 given size.
81 Issue: COMPRESS-405. Thanks to Simon Spero.
82o It is now possible to specify/read custom PAX headers when
83 writing/reading tar archives.
84 Issue: COMPRESS-400. Thanks to Simon Spero.
85
86Fixed Bugs:
87o Make sure "version needed to extract" in local file header and
88 central directory of a ZIP archive agree with each other.
89 Also ensure the version is set to 2.0 if DEFLATE is used.
90 Issue: COMPRESS-394.
91o Don't use a data descriptor in ZIP archives when copying a raw
92 entry that already knows its size and CRC information.
93 Issue: COMPRESS-395.
94o Travis build redundantly repeats compilation and tests redundantly
95 GitHub Pull Request #43. Thanks to Simon Spero.
96 Issue: COMPRESS-413
97o The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
98 Java.
99 Issue: COMPRESS-396.
100o BUILDING.md now passes the RAT check.
101 Issue: COMPRESS-406. Thanks to Simon Spero.
102o Made sure ChecksumCalculatingInputStream receives valid
103 checksum and input stream instances via the constructor.
104 Issue: COMPRESS-412. Thanks to Michael Hausegger.
105o TarArchiveOutputStream now verifies the block and record sizes
106 specified at construction time are compatible with the tar
107 specification. In particular 512 is the only record size
108 accepted and the block size must be a multiple of 512.
109 Issue: COMPRESS-407. Thanks to Simon Spero.
110o Fixed class names of CpioArchiveEntry and
111 CpioArchiveInputStream in various Javadocs.
112 Issue: COMPRESS-415.
113o The code of the extended timestamp zip extra field incorrectly
114 assumed the time was stored as unsigned 32-bit int and thus
115 created incorrect results for years after 2037.
116 Issue: COMPRESS-416. Thanks to Simon Spero.
117o Removed ZipEncoding code that became obsolete when we started
118 to require Java 5 as baseline long ago.
119 Issue: COMPRESS-410. Thanks to Simon Spero.
120o The tar package will no longer try to parse the major and
121 minor device numbers unless the entry represents a character
122 or block special file.
123 Issue: COMPRESS-417.
124o When reading tar headers with name fields containing embedded
125 NULs, the name will now be terminated at the first NUL byte.
126 Issue: COMPRESS-421. Thanks to Roel Spilker.
127o Simplified TarArchiveOutputStream by replacing the internal
128 buffering with new class FixedLengthBlockOutputStream.
129 Issue: COMPRESS-409.
130
Stefan Bodewigdd7c7702017-05-11 21:03:58 +0200131Release 1.14
132------------
133
134New features:
135o Added write support for Snappy.
136 Issue: COMPRESS-246.
137o Added support for LZ4 (block and frame format).
138 Issue: COMPRESS-271.
139o Add static detect(InputStream in) to CompressorStreamFactory
140 and ArchiveStreamFactory
141 Issue: COMPRESS-385.
142o Added a way to limit amount of memory ZCompressorStream may
143 use.
144 Issue: COMPRESS-382. Thanks to Tim Allison.
145o Added a way to limit amount of memory ZCompressorStream may
146 use.
147 Issue: COMPRESS-386. Thanks to Tim Allison.
148o Added a way to limit amount of memory LZMACompressorStream and
149 XZCompressorInputStream may use.
150 Issue: COMPRESS-382. Thanks to Tim Allison.
151o Add Brotli decoder based on the Google Brotli library.
152 Issue: COMPRESS-392. Thanks to Philippe Mouawad.
153o ZipEntry now exposes its data offset.
154 Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky.
155o Using ZipArchiveEntry's setAlignment it is now possible to
156 ensure the data offset of an entry starts at a file position
157 that at word or page boundaries.
158 A new extra field has been added for this purpose.
159 Issue: COMPRESS-391. Thanks to Zbynek Vyskovsky.
160
161Fixed Bugs:
162o SnappyCompressorInputStream slides the window too early
163 leading to ArrayIndexOutOfBoundsExceptions for some streams.
164 Issue: COMPRESS-378.
165o ZipArchiveEntry#isUnixSymlink now only returns true if the
166 corresponding link flag is the only file-type flag set.
167 Issue: COMPRESS-379. Thanks to Guillaume Boué.
168o Fixed an integer overflow in CPIO's CRC calculation.
169 Pull Request #17. Thanks to Daniel Collin.
170o Make unit tests work on Windows paths with spaces in their names.
171 Issue: COMPRESS-387.
172o Internal location pointer in ZipFile could get incremented
173 even if nothing had been read.
174 Issue: COMPRESS-389.
175o LZMACompressorOutputStream#flush would throw an exception
176 rather than be the NOP it promised to be.
177 Issue: COMPRESS-393.
178
179Changes:
180o The blocksize for FramedSnappyCompressorInputStream can now be
181 configured as some IWA files seem to be using blocks larger
182 than the default 32k.
183 Issue: COMPRESS-358.
184o BZip2CompressorInputstream now uses BitInputStream internally.
185 Pull Request #13. Thanks to Thomas Meyer.
186o Improved performance for concurrent reads from ZipFile when
187 reading from a file.
188 Issue: COMPRESS-388. Thanks to Zbynek Vyskovsky.
189
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +0100190Release 1.13
191------------
192
Stefan Bodewig45438472016-12-25 13:16:42 +0100193Commons Compress 1.13 is the first version to require Java 7 at
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +0100194runtime.
195
196Changes in this version include:
197
198New features:
199o SevenZFile, SevenZOutputFile, ZipFile and
200 ZipArchiveOutputStream can now work on non-file resources if
201 they can be accessed via SeekableByteChannel.
202 Issue: COMPRESS-327.
203o Allow compressor extensions through a standard JRE ServiceLoader.
204 Issue: COMPRESS-368.
205o Allow archive extensions through a standard JRE ServiceLoader.
206 Issue: COMPRESS-369.
207o Add write support for the legacy LZMA format, this requires XZ
208 for Java 1.6.
209 Issue: COMPRESS-373.
210o Add write support for the legacy LZMA stream to 7z, this
211 requires XZ for Java 1.6.
212 Issue: COMPRESS-374.
213o Allow the clients of ParallelScatterZipCreator to provide
214 ZipArchiveEntryRequestSupplier.
215 Issue: COMPRESS-375. Thanks to Plamen Totev.
216o Add a version-independent link to the API docs of the latest
217 release.
218 Issue: COMPRESS-372.
219
220Fixed Bugs:
221o BitInputStream could return bad results when overflowing
222 internally - if two consecutive reads tried to read more than
223 64 bits.
224 Issue: COMPRESS-363.
225o ZipArchiveInputStream.closeEntry does not properly advance to
226 next entry if there are junk bytes at end of data section.
227 Issue: COMPRESS-364. Thanks to Mike Mole.
228o ZipArchiveInputStream now throws an Exception if it encounters
229 a broken ZIP archive rather than signaling end-of-archive.
230 Issue: COMPRESS-367. Thanks to Mike Mole.
231o ScatterZipOutputStream didn't close the StreamCompressor
232 causing a potential resource leak.
233 Issue: COMPRESS-377.
234
235Changes:
236o Update Java requirement from 6 to 7.
237 Issue: COMPRESS-360.
238o Clarified which TarArchiveEntry methods are useless for
239 entries read from an archive.
240 Issue: COMPRESS-366.
241
Stefan Bodewig3623ee72016-06-18 17:25:37 +0200242Release 1.12
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200243------------
244
Stefan Bodewig9a677fb2016-06-21 21:27:57 +0200245Commons Compress 1.12 is the first version to require Java 6 at
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200246runtime.
247
248Release 1.12 changes the behavior of BZip2CompressorOutputStream's
249finalize method so that it no longer invokes finish. This is going to
250break code that relied on the finalizer to clean up an unfinished
251stream. The code will need to be changed to call finish or close
252itself. Note that a finalizer is not guaranteed to run, so the feature
253was not 100% effective in any case.
254
255New features:
256
257o FramedSnappyCompressorInputStream now supports the dialect of
258 Snappy used by the IWA files contained within the zip archives
259 used in Apple's iWork 13 files.
260 Issue: COMPRESS-352.
261
262Fixed Bugs:
263
264o SevenZFile.read() throws an IllegalStateException for empty entries.
265 Issue: COMPRESS-348.
266o TarArchiveInputStream failed to parse PAX headers that included
267 blank lines.
268 Issue: COMPRESS-355. Thanks to Jeremy Gustie.
269o TarArchiveInputStream failed to parse PAX headers whose tar entry
270 name ended with a slash.
271 Issue: COMPRESS-356. Thanks to Jeremy Gustie.
272
273Changes:
274o Update requirement from Java 5 to 6.
275 Issue: COMPRESS-349.
276o TarArchiveEntry wastefully allocates empty arrays.
277 Issue: COMPRESS-350.
278o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
279 refer to IOEx, not NPE.
280 Issue: COMPRESS-353.
281o PureJavaCrc32C in the snappy package is now final so it is now safe
282 to call a virtual method inside the constructor.
283 Issue: COMPRESS-354.
284
285o ZipArchiveInputStream and CpioArchiveInputStream could throw
286 exceptions who's messages contained potentially corrupt entry names
287 read from a broken archive. They will now sanitize the names by
288 replacing unprintable characters and restricting the length to 255
289 characters.
290 Issue: COMPRESS-351.
291o BZip2CompressorOutputStream no longer tries to finish the output
292 stream in finalize. This is a breaking change for code that relied
293 on the finalizer.
294 Issue: COMPRESS-357.
295
296
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200297Release 1.11
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100298------------
299
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200300New features:
301o TarArchiveInputStream now supports reading global PAX headers.
302 Issue: COMPRESS-347.
303o The PAX headers for sparse entries written by star are now
304 applied.
305 Issue: COMPRESS-346.
306o GNU sparse files using one of the PAX formats are now
307 detected, but cannot be extracted.
308 Issue: COMPRESS-345.
309o New method SevenZFile.getEntries can be used to list the
310 contents of a 7z archive.
311 Issue: COMPRESS-341.
312o When using Zip64Mode.Always also use ZIP64 extensions inside
313 the central directory.
314 GitHub Pull Request #10 Thanks to Matt Hovey.
315o ZipFile.getRawInputStream() is now part of the public API
316 Issue: COMPRESS-323.
317o Allow byte-for-byte replication of Zip entries.
318 GitHub Pull Request #6. Thanks to Jason van Zyl.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100319o TarArchiveEntry's preserveLeadingSlashes is now a property and used
320 on later calls to setName, too.
321 This behavior is a breaking change.
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200322 Issue: COMPRESS-328.
323o Added read-only support for bzip2 compression used inside of
324 ZIP archives.
325 GitHub Pull Request #4. Thanks to Sören Glimm.
326
327Fixed Bugs:
328o ArArchiveInputStream can now read GNU extended names that are
329 terminated with a NUL byte rather than a linefeed.
330 Issue: COMPRESS-344.
331o Native Memory Leak in Sevenz-DeflateDecoder.
332 Issue: COMPRESS-343. Thanks to Rene Preissel.
333o SevenZFile will now only try to drain an entry's content when
334 moving on to the next entry if data is read from the next
335 entry. This should improve performance for applications that
336 try to skip over entries.
337 Issue: COMPRESS-340. Thanks to Dawid Weiss.
338o file names of tar archives using the xstar format are now
339 parsed properly.
340 Issue: COMPRESS-336.
341o checksums of tars that pad the checksum field to the left are
342 now calculated properly.
343 Issue: COMPRESS-335.
344o ArArchiveInputStream failed to read past the first entry when
345 BSD long names have been used.
346 Issue: COMPRESS-334. Thanks to Jeremy Gustie.
347o Added buffering for random access which speeds up 7Z support.
348 Issue: COMPRESS-333. Thanks to Dawid Weiss.
349o The checksum validation of TararchiveEntry is now as strict as
350 the validation of GNU tar, which eliminates a few cases of
351 false positives of ArchiveStreamFactory.
352 This behavior is a breaking change since the check has become
353 more strict but any archive that fails the checksum test now
354 would also fail it when extracted with other tools and must be
355 considered an invalid archive.
356 Issue: COMPRESS-331.
357o SnappyCompressorInputStream and
358 FramedSnappyCompressorInputStream returned 0 at the end of the
359 stream under certain circumstances.
360 Issue: COMPRESS-332.
361o Adjusted unit test to updates in Java8 and later that change
362 the logic of ZipEntry#getTime.
363 Issue: COMPRESS-326.
364o TarArchiveOutputStream will now recognize GNU long name and
365 link entries even if the special entry has a different name
366 than GNU tar uses itself. This seems to be the case for
367 archives created by star.
368 Issue: COMPRESS-324.
369o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
370 fields are read from the central directory.
371 Issue: COMPRESS-321.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100372
Stefan Bodewigec075142015-01-26 05:12:09 +0000373Release 1.10
374------------
375
376Release 1.10 moves the former
377org.apache.commons.compress.compressors.z._internal_ package which
378breaks backwards compatibility for code which used the old package.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000379
380This also changes the superclass of ZCompressorInputStream which makes
381this class binary incompatible with the one of Compress 1.9. Code
382that extends ZCompressorInputStream will need to be recompiled in
383order to work with Compress 1.10.
Stefan Bodewigc100d2e2015-01-30 08:24:54 +0000384
Stefan Bodewigec075142015-01-26 05:12:09 +0000385New features:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000386o CompressorStreamFactory can now auto-detect DEFLATE streams
387 with ZLIB header.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100388 Issue: COMPRESS-316. Thanks to Nick Burch.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000389o CompressorStreamFactory can now auto-detect LZMA streams.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100390 Issue: COMPRESS-313.
Stefan Bodewigec075142015-01-26 05:12:09 +0000391o Added support for parallel compression. This low-level API allows
392 a client to build a zip/jar file by using the class
393 org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
394
395 Zip documentation updated with further notes about parallel features.
396
397 Please note that some aspects of jar creation need to be
398 handled by client code and is not part of commons-compress for this
399 release.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100400 Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000401o Cut overall object instantiation in half by changing file
402 header generation algorithm, for a 10-15 percent performance
403 improvement.
404
405 Also extracted two private methods createLocalFileHeader
406 and createCentralFileHeader in ZipArchiveOutputStream.
407 These may have some interesting additional usages in the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100408 near future. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000409o New methods in ZipArchiveOutputStream and ZipFile allows
410 entries to be copied from one archive to another without
411 having to re-compress them.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100412 Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000413
414Fixed Bugs:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000415o TarArchiveInputStream can now read entries with group or
416 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100417 Issue: COMPRESS-314.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000418o TarArchiveOutputStream can now write entries with group or
419 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100420 Issue: COMPRESS-315.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000421o TarArchiveEntry's constructor with a File and a String arg
422 didn't normalize the name.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100423 Issue: COMPRESS-312.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000424o ZipEncodingHelper no longer reads system properties directly
425 to determine the default charset.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100426 Issue: COMPRESS-308.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000427o BZip2CompressorInputStream#read would return -1 when asked to
428 read 0 bytes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100429 Issue: COMPRESS-309.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000430o ArchiveStreamFactory fails to pass on the encoding when creating
431 some streams.
432 * ArjArchiveInputStream
433 * CpioArchiveInputStream
434 * DumpArchiveInputStream
435 * JarArchiveInputStream
436 * TarArchiveInputStream
437 * JarArchiveOutputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100438 Issue: COMPRESS-306.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000439o Restore immutability/thread-safety to ArchiveStreamFactory.
440 The class is now immutable provided that the method setEntryEncoding
441 is not used. The class is thread-safe.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100442 Issue: COMPRESS-302.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000443o Restore immutability/thread-safety to CompressorStreamFactory.
444 The class is now immutable provided that the method
445 setDecompressConcatenated is not used. The class is thread-safe.
446 Issue: COMPRESS-303.
Stefan Bodewigec075142015-01-26 05:12:09 +0000447o ZipFile logs a warning in its finalizer when its constructor
448 has thrown an exception reading the file - for example if the
449 file doesn't exist.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100450 Issue: COMPRESS-297.
Stefan Bodewigec075142015-01-26 05:12:09 +0000451o Improved error message when tar encounters a groupId that is
452 too big to write without using the STAR or POSIX format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100453 Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000454o SevenZFile now throws the specific PasswordRequiredException
455 when it encounters an encrypted stream but no password has
456 been specified.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100457 Issue: COMPRESS-298.
Stefan Bodewigec075142015-01-26 05:12:09 +0000458
459Changes:
460o Moved the package
461 org.apache.commons.compress.compressors.z._internal_ to
462 org.apache.commons.compress.compressors.lzw and made it part
463 of the API that is officially supported. This will break
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100464 existing code that uses the old package. Thanks to Damjan Jovanovic.
Stefan Bodewigec075142015-01-26 05:12:09 +0000465
466For complete information on Apache Commons Compress, including instructions
467on how to submit bug reports, patches, or suggestions for improvement,
468see the Apache Commons Compress website:
469
Stefan Bodewig91b84322018-03-08 11:42:12 +0100470https://commons.apache.org/compress/
Stefan Bodewigec075142015-01-26 05:12:09 +0000471
472Old Release Notes
473=================
474
Stefan Bodewigde633062014-10-09 12:00:48 +0000475Release 1.9
476-----------
477
478New features:
479o Added support for DEFLATE streams without any gzip framing.
480 Issue: COMPRESS-263.
481 Thanks to Matthias Stevens.
482
483Fixed Bugs:
484o When reading 7z files unknown file properties and properties of type
485 kDummy are now ignored.
486 Issue: COMPRESS-287.
487o Expanding 7z archives using LZMA compression could cause an
488 EOFException.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100489 Issue: COMPRESS-286.
Stefan Bodewigde633062014-10-09 12:00:48 +0000490o Long-Name and -link or PAX-header entries in TAR archives always had
491 the current time as last modfication time, creating archives that
492 are different at the byte level each time an archive was built.
493 Issue: COMPRESS-289.
494 Thanks to Bob Robertson.
495
496Changes:
497o Checking for XZ for Java may be expensive. The result will now be
498 cached outside of an OSGi environment. You can use the new
499 XZUtils#setCacheXZAvailability to overrride this default behavior.
500 Issue: COMPRESS-285.
501
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000502Release 1.8.1
Stefan Bodewigde633062014-10-09 12:00:48 +0000503-------------
Sebastian Bazley48882f12010-04-13 21:02:37 +0000504
Stefan Bodewig48d74702013-03-10 17:10:57 +0000505New features:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000506o COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100507 (".Z") streams.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000508
Sebastian Bazley48882f12010-04-13 21:02:37 +0000509Fixed Bugs:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000510o COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100511 non-buffered stream in certain cases.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000512o COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100513 more could be read from the stream.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000514o COMPRESS-276: ArchiveStreams now validate there is a current entry before
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100515 reading or writing entry data.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000516o ArjArchiveInputStream#canReadEntryData tested the current
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100517 entry of the stream rather than its argument.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000518o COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100519 entries.
520o COMPRESS-273: Added a few null checks to improve robustness.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000521o COMPRESS-278: TarArchiveInputStream failed to read archives with empty
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100522 gid/uid fields.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000523o COMPRESS-279: TarArchiveInputStream now again throws an exception when it
524 encounters a truncated archive while reading from the last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100525 entry.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000526o COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100527 IOUtils#skip method. Thanks to BELUGA BEHR.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000528
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000529Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100530o The dependency on org.tukaani:xz is now marked as optional.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000531
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000532Release 1.8
533-----------
534
535New features:
536o GzipCompressorInputStream now provides access to the same
537 metadata that can be provided via GzipParameters when writing
538 a gzip stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100539 Issue: COMPRESS-260.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000540o SevenZOutputFile now supports chaining multiple
541 compression/encryption/filter methods and passing options to
542 the methods.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100543 Issue: COMPRESS-266.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000544o The (compression) method(s) can now be specified per entry in
545 SevenZOutputFile.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100546 Issue: COMPRESS-261.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000547o SevenZArchiveEntry "knows" which method(s) have been used to
548 write it to the archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100549 Issue: COMPRESS-258.
550o The 7z package now supports the delta filter as method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000551o The 7z package now supports BCJ filters for several platforms.
552 You will need a version >= 1.5 of XZ for Java to read archives
553 using BCJ, though.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100554 Issue: COMPRESS-257.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000555
556Fixed Bugs:
557o BZip2CompressorInputStream read fewer bytes than possible from
558 a truncated stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100559 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000560o SevenZFile failed claiming the dictionary was too large when
561 archives used LZMA compression for headers and content and
562 certain non-default dictionary sizes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100563 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000564o CompressorStreamFactory.createCompressorInputStream with
565 explicit compression did not honor decompressConcatenated
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100566 Issue: COMPRESS-259.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000567o TarArchiveInputStream will now read archives created by tar
568 implementations that encode big numbers by not adding a
569 trailing NUL.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100570 Issue: COMPRESS-262.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000571o ZipArchiveInputStream would return NUL bytes for the first 512
572 bytes of a STORED entry if it was the very first entry of the
573 archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100574 Issue: COMPRESS-264.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000575o When writing PAX/POSIX headers for TAR entries with
576 backslashes or certain non-ASCII characters in their name
577 TarArchiveOutputStream could fail.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100578 Issue: COMPRESS-265.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000579o ArchiveStreamFactory now throws a StreamingNotSupported - a
580 new subclass of ArchiveException - if it is asked to read from
581 or write to a stream and Commons Compress doesn't support
582 streaming for the format. This currently only applies to the
583 7z format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100584 Issue: COMPRESS-267.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000585
586Release 1.7
587-----------
588
589New features:
590o Read-Only support for Snappy compression.
591 Issue: COMPRESS-147. Thanks to BELUGA BEHR.
592o Read-Only support for .Z compressed files.
593 Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
594o ZipFile and ZipArchiveInputStream now support reading entries
595 compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
596o GzipCompressorOutputStream now supports setting the compression
597 level and the header metadata (filename, comment, modification time,
598 operating system and extra flags)
599 Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
600o ZipFile and ZipArchiveInputStream now support reading entries
601 compressed using the IMPLODE method.
602 Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
603o ZipFile and the 7z file classes now implement Closeable and can be
604 used in try-with-resources constructs.
605
606Fixed Bugs:
607o SevenZOutputFile#closeArchiveEntry throws an exception when using
608 LZMA2 compression on Java8. Issue: COMPRESS-241.
609o 7z reading of big 64bit values could be wrong.
610 Issue: COMPRESS-244. Thanks to Nico Kruber.
611o TarArchiveInputStream could fail to read an archive completely.
612 Issue: COMPRESS-245.
613o The time-setters in X5455_ExtendedTimestamp now set the
614 corresponding flags explicitly - i.e. they set the bit if the valus
615 is not-null and reset it otherwise. This may cause
616 incompatibilities if you use setFlags to unset a bit and later set
617 the time to a non-null value - the flag will now be set.
618 Issue: COMPRESS-242.
619o SevenZOutputFile would create invalid archives if more than six
620 empty files or directories were included. Issue: COMPRESS-252.
621
622Release 1.6
623-----------
624
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100625Version 1.6 introduces changes to the internal API of the tar package that
626break backwards compatibility in the following rare cases. This version
627removes the package private TarBuffer class along with the protected "buffer"
628members in TarArchiveInputStream and TarArchiveOutputStream. This change will
629only affect you if you have created a subclass of one of the stream classes
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000630and accessed the buffer member or directly used the TarBuffer class.
631
632Changes in this version include:
633
634New features:
635o Added support for 7z archives. Most compression algorithms
636 can be read and written, LZMA and encryption are only
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100637 supported when reading. Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000638o Added read-only support for ARJ archives that don't use
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100639 compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000640o DumpArchiveInputStream now supports an encoding parameter that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100641 can be used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000642o The CPIO streams now support an encoding parameter that can be
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100643 used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000644o Read-only support for LZMA standalone compression has been added.
645 Issue: COMPRESS-111.
646
647Fixed Bugs:
648o TarBuffer.tryToConsumeSecondEOFRecord could throw a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100649 NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000650o Parsing of zip64 extra fields has become more lenient in order
651 to be able to read archives created by DotNetZip and maybe
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100652 other archivers as well. Issue: COMPRESS-228.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000653o TAR will now properly read the names of symbolic links with
654 long names that use the GNU variant to specify the long file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100655 name. Issue: COMPRESS-229. Thanks to Christoph Gysin.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000656o ZipFile#getInputStream could return null if the archive
657 contained duplicate entries.
658 The class now also provides two new methods to obtain all
659 entries of a given name rather than just the first one.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100660 Issue: COMPRESS-227.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000661o CpioArchiveInputStream failed to read archives created by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100662 Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000663o TarArchiveOutputStream now properly handles link names that
664 are too long to fit into a traditional TAR header. Issue:
665 COMPRESS-237. Thanks to Emmanuel Bourg.
666o The auto-detecting create*InputStream methods of Archive and
667 CompressorStreamFactory could fail to detect the format of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100668 blocking input streams. Issue: COMPRESS-239.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000669
670Changes:
671o Readabilty patch to TarArchiveInputStream. Issue:
672 COMPRESS-232. Thanks to BELUGA BEHR.
673o Performance improvements to TarArchiveInputStream, in
674 particular to the skip method. Issue: COMPRESS-234. Thanks to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100675 BELUGA BEHR.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000676
677Release 1.5
678-----------
679
680New features:
681
682o CompressorStreamFactory has an option to create decompressing
683 streams that decompress the full input for formats that support
684 multiple concatenated streams.
685 Issue: COMPRESS-220.
686
687Fixed Bugs:
688
689o Typo in CompressorStreamFactory Javadoc
690 Issue: COMPRESS-218.
691 Thanks to Gili.
692o ArchiveStreamFactory's tar stream detection created false positives
693 for AIFF files.
694 Issue: COMPRESS-191.
695 Thanks to Jukka Zitting.
696o XZ for Java didn't provide an OSGi bundle. Compress' dependency on
697 it has now been marked optional so Compress itself can still be used
698 in an OSGi context.
699 Issue: COMPRESS-199.
700 Thanks to Jukka Zitting.
701o When specifying the encoding explicitly TarArchiveOutputStream would
702 write unreadable names in GNU mode or even cause errors in POSIX
703 mode for file names longer than 66 characters.
704 Issue: COMPRESS-200.
705 Thanks to Christian Schlichtherle.
706o Writing TAR PAX headers failed if the generated entry name ended
707 with a "/".
708 Issue: COMPRESS-203.
709o ZipArchiveInputStream sometimes failed to provide input to the
710 Inflater when it needed it, leading to reads returning 0.
711 Issue: COMPRESS-189.
712 Thanks to Daniel Lowe.
713o TarArchiveInputStream ignored the encoding for GNU long name
714 entries.
715 Issue: COMPRESS-212.
716o TarArchiveInputStream could leave the second EOF record inside the
717 stream it had just finished reading.
718 Issue: COMPRESS-206.
719 Thanks to Peter De Maeyer.
720o DumpArchiveInputStream no longer implicitly closes the original
721 input stream when it reaches the end of the archive.
722o ZipArchiveInputStream now consumes the remainder of the archive when
723 getNextZipEntry returns null.
724o Unit tests could fail if the source tree was checked out to a
725 directory tree containign spaces.
726 Issue: COMPRESS-205.
727 Thanks to Daniel Lowe.
728o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
729 entries from ZipArchiveInputStream.
730 Issue: COMPRESS-219.
731o CompressorStreamFactory can now be used without XZ for Java being
732 available.
733 Issue: COMPRESS-221.
734
735Changes:
736
737o Improved exception message if a zip archive cannot be read because
738 of an unsupported compression method.
739 Issue: COMPRESS-188.
740 Thanks to Harald Kuhn.
741o ArchiveStreamFactory has a setting for file name encoding that sets
742 up encoding for ZIP and TAR streams.
743 Issue: COMPRESS-192.
744 Thanks to Jukka Zitting.
745o TarArchiveEntry now has a method to verify its checksum.
746 Issue: COMPRESS-191.
747 Thanks to Jukka Zitting.
748o Split/spanned ZIP archives are now properly detected by
749 ArchiveStreamFactory but will cause an
750 UnsupportedZipFeatureException when read.
751o ZipArchiveInputStream now reads archives that start with a "PK00"
752 signature. Archives with this signatures are created when the
753 archiver was willing to split the archive but in the end only needed
754 a single segment - so didn't split anything.
755 Issue: COMPRESS-208.
756o TarArchiveEntry has a new constructor that allows setting linkFlag
757 and preserveLeadingSlashes at the same time.
758 Issue: COMPRESS-201.
759o ChangeSetPerformer has a new perform overload that uses a ZipFile
760 instance as input.
761 Issue: COMPRESS-159.
762o Garbage collection pressure has been reduced by reusing temporary
763 byte arrays in classes.
764 Issue: COMPRESS-172.
765 Thanks to Thomas Mair.
766o Can now handle zip extra field 0x5455 - Extended Timestamp.
767 Issue: COMPRESS-210.
768 Thanks to Julius Davies.
769o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
770 Issue: COMPRESS-211.
771 Thanks to Julius Davies.
772o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
773 Issue: COMPRESS-213.
774 Thanks to Julius Davies.
775o better support for unix symlinks in ZipFile entries.
776 Issue: COMPRESS-214.
777 Thanks to Julius Davies.
778o ZipFile's initialization has been improved for non-Zip64 archives.
779 Issue: COMPRESS-215.
780 Thanks to Robin Power.
781o Updated XZ for Java dependency to 1.2 as this version provides
782 proper OSGi manifest attributes.
783
784Release 1.4.1
785-------------
786
787This is a security bugfix release, see
Stefan Bodewig91b84322018-03-08 11:42:12 +0100788https://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000789
790Fixed Bugs:
791
792o Ported libbzip2's fallback sort algorithm to
793 BZip2CompressorOutputStream to speed up compression in certain
794 edge cases.
795
796Release 1.4
797-----------
798
799New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100800o COMPRESS-156: Support for the XZ format has been added.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000801
802Fixed Bugs:
803o COMPRESS-183: The tar package now allows the encoding of file names to be
804 specified and can optionally use PAX extension headers to
805 write non-ASCII file names.
806 The stream classes now write (or expect to read) archives that
807 use the platform's native encoding for file names. Apache
808 Commons Compress 1.3 used to strip everything but the lower
809 eight bits of each character which effectively only worked for
810 ASCII and ISO-8859-1 file names.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100811 This new default behavior is a breaking change.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000812o COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100813 contained non-ASCII characters.
814o COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException
815o COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
816o COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000817o COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100818 short text files were TAR archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000819o COMPRESS-164: ZipFile didn't work properly for archives using unicode extra
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100820 fields rather than UTF-8 filenames and the EFS-Flag.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000821o COMPRESS-169: For corrupt archives ZipFile would throw a RuntimeException in
822 some cases and an IOException in others. It will now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100823 consistently throw an IOException.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000824
825Changes:
826o COMPRESS-182: The tar package can now write archives that use star/GNU/BSD
827 extensions or use the POSIX/PAX variant to store numeric
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100828 values that don't fit into the traditional header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000829o COMPRESS-181: Added a workaround for a Bug some tar implementations that add
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100830 a NUL byte as first byte in numeric header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000831o COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100832 as path separators in Unicode Extra Fields.
833o COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000834o COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100835 concatenated .bz2 files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000836o COMPRESS-154: GZipCompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100837 concatenated .gz files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000838o COMPRESS-16: The tar package can now read archives that use star/GNU/BSD
839 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100840 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000841o COMPRESS-165: The tar package can now write archives that use star/GNU/BSD
842 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100843 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000844o COMPRESS-166: The tar package can now use the POSIX/PAX variant for writing
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100845 entries with names longer than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000846
847Release 1.3
848-----------
849
850Commons Compress 1.3 is the first version to require Java5 at runtime.
851
852Changes in this version include:
853
854New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100855o Support for the Pack200 format has been added. Issue: COMPRESS-142.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000856o Read-only support for the format used by the Unix dump(8) tool
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100857 has been added. Issue: COMPRESS-132.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000858
859Fixed Bugs:
860o BZip2CompressorInputStream's getBytesRead method always
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100861 returned 0.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000862o ZipArchiveInputStream and ZipArchiveOutputStream could leak
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100863 resources on some JDKs. Issue: COMPRESS-152.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000864o TarArchiveOutputStream's getBytesWritten method didn't count
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100865 correctly. Issue: COMPRESS-160.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000866
867Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100868o The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000869o The AR package now supports the BSD dialect of storing file
870 names longer than 16 chars (both reading and writing).
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100871 Issue: COMPRESS-144.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000872
873Release 1.2
874-----------
875
876New features:
877o COMPRESS-123: ZipArchiveEntry has a new method getRawName that provides the
878 original bytes that made up the name. This may allow user
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100879 code to detect the encoding.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000880o COMPRESS-122: TarArchiveEntry provides access to the flags that determine
881 whether it is an archived symbolic link, pipe or other
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100882 "uncommon" file system object.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000883
884Fixed Bugs:
885o COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100886 message for entries between 2 GByte and 4 GByte in size.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000887o COMPRESS-145: TarArchiveInputStream now detects sparse entries using the
888 oldgnu format and properly reports it cannot extract their
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100889 contents.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000890o COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100891 implementation, the code has been made more defensive.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000892o COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100893 userId or groupId. Thanks to Trejkaz.
894o COMPRESS-139: ZipFile may leak resources on some JDKs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000895o COMPRESS-125: BZip2CompressorInputStream throws IOException if
896 underlying stream returns available() == 0.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100897 Removed the check.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000898o COMPRESS-127: Calling close() on inputStream returned by
899 CompressorStreamFactory.createCompressorInputStream()
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100900 does not close the underlying input stream.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000901o COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100902 data to the stream
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000903
904Changes:
905o ZipFile now implements finalize which closes the underlying
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100906 file.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000907o COMPRESS-117: Certain tar files not recognised by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100908 ArchiveStreamFactory.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000909
910Release 1.1
911-----------
912
913New features:
914o COMPRESS-108: Command-line interface to list archive contents.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100915 Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000916o COMPRESS-109: Tar implementation does not support Pax headers
917 Added support for reading pax headers.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100918 Note: does not support global pax headers
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000919o COMPRESS-103: ZipArchiveInputStream can optionally extract data that used
920 the STORED compression method and a data descriptor.
921 Doing so in a stream is not safe in general, so you have to
922 explicitly enable the feature. By default the stream will
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100923 throw an exception if it encounters such an entry.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000924o COMPRESS-98: The ZIP classes will throw specialized exceptions if any
925 attempt is made to read or write data that uses zip features
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100926 not supported (yet).
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000927o COMPRESS-99: ZipFile#getEntries returns entries in a predictable order -
928 the order they appear inside the central directory.
929 A new method getEntriesInPhysicalOrder returns entries in
930 order of the entry data, i.e. the order ZipArchiveInputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100931 would see.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000932o The Archive*Stream and ZipFile classes now have
933 can(Read|Write)EntryData methods that can be used to check
934 whether a given entry's data can be read/written.
935 The method currently returns false for ZIP archives if an
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100936 entry uses an unsupported compression method or encryption.
937o COMPRESS-89: The ZIP classes now detect encrypted entries.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000938o COMPRESS-97: Added autodetection of compression format to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100939 CompressorStreamFactory.
940o COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000941o A new constructor of TarArchiveEntry can create entries with
942 names that start with slashes - the default is to strip
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100943 leading slashes in order to create relative path names.
944o ArchiveEntry now has a getLastModifiedDate method.
945o COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000946
947Fixed Bugs:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100948o COMPRESS-72: Move acknowledgements from NOTICE to README
949o COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
950o COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127
951o COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000952o COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100953 than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000954o COMPRESS-100: ZipArchiveInputStream will throw an exception if it detects an
955 entry that uses a data descriptor for a STORED entry since it
956 cannot reliably find the end of data for this "compression"
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100957 method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000958o COMPRESS-101: ZipArchiveInputStream should now properly read archives that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100959 use data descriptors but without the "unofficial" signature.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000960o COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100961 read properly.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000962o ArchiveInputStream has a new method getBytesRead that should
963 be preferred over getCount since the later may truncate the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100964 number of bytes read for big archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000965o COMPRESS-85: The cpio archives created by CpioArchiveOutputStream couldn't
966 be read by many existing native implementations because the
967 archives contained multiple entries with the same inode/device
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100968 combinations and weren't padded to a blocksize of 512 bytes.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000969o COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100970 more lenient when parsing extra fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000971o COMPRESS-82: cpio is terribly slow.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100972 Documented that buffered streams are needed for performance
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000973o Improved exception message if the extra field data in ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100974 archives cannot be parsed.
975o COMPRESS-17: Tar format unspecified - current support documented.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000976o COMPRESS-94: ZipArchiveEntry's equals method was broken for entries created
977 with the String-arg constructor. This lead to broken ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100978 archives if two different entries had the same hash code. Thanks to Anon Devs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000979o COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100980 the archive was truncated. Thanks to Antoni Mylka.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000981o COMPRESS-86: Tar archive entries holding the file name for names longer
982 than 100 characters in GNU longfile mode didn't properly
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100983 specify they'd be using the "oldgnu" extension.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000984o COMPRESS-83: Delegate all read and write methods in GZip stream in order to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100985 speed up operations.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000986o The ar and cpio streams now properly read and write last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100987 modified times.
988o COMPRESS-81: TarOutputStream can leave garbage at the end of the archive
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000989
990Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100991o COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//)
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000992o COMPRESS-105: Document that the name of an ZipArchiveEntry determines whether
993 an entry is considered a directory or not.
994 If you don't use the constructor with the File argument the entry's
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100995 name must end in a "/" in order for the entry to be known as a directory.
996o COMPRESS-79: Move DOS/Java time conversions into Zip utility class.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000997o COMPRESS-75: ZipArchiveInputStream does not show location in file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100998 where a problem occurred.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000999