blob: 2c6bb718b9fb5fa43ee577b1e90b8c3989a1048d [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
8Release 1.16
9------------
10
11New features:
12o Add read-only support for Zstandard compression based on the
13 Zstd-jni project.
14 Issue: COMPRESS-423. Thanks to Andre F de Miranda.
15o Added auto-detection for Zstandard compressed streams.
16 Issue: COMPRESS-425.
17o Added write-support for Zstandard compression.
18 Issue: COMPRESS-426.
19o Added read-only DEFLATE64 support to ZIP archives and as
20 stand-alone CompressorInputStream.
21 Issue: COMPRESS-380. Thanks to Christian Marquez Grabia.
22o Added read-only DEFLATE64 support to 7z archives.
23 Issue: COMPRESS-437.
24
25Fixed Bugs:
26o Synchronized iteration over a synchronizedList in
27 ParallelScatterZipCreator.
28 Issue: COMPRESS-430. Thanks to Bruno P. Kinoshita.
29o ZipFile could get stuck in an infinite loop when parsing ZIP
30 archives with certain strong encryption headers.
31 Issue: COMPRESS-432.
32o Added improved checks to detect corrupted bzip2 streams and
33 throw the expected IOException rather than obscure
34 RuntimeExceptions.
35 Issue: COMPRESS-424.
36
37Changes:
38o Replaces instanceof checks with a type marker in LZ77 support code.
39 Issue: COMPRESS-435. Thanks to BELUGA BEHR.
40o Updated XZ for Java dependency to 1.8 in order to pick up bug fix
41 to LZMA2InputStream's available method.
42o ZipArchiveEntry now exposes how the name or comment have been
43 determined when the entry was read.
44 Issue: COMPRESS-429. Thanks to Damiano Albani.
45o ZipFile.getInputStream will now always buffer the stream
46 internally in order to improve read performance.
47 Issue: COMPRESS-438.
48o Speed improvement for DEFLATE64 decompression.
49 Issue: COMPRESS-440. Thanks to Dawid Weiss.
50o Added a few extra sanity checks for the rarer compression
51 methods used in ZIP archives.
52 Issue: COMPRESS-436.
53o Simplified the special handling for the dummy byte required by
54 zlib when using java.util.zip.Inflater.
55 Issue: COMPRESS-441.
56o Various code cleanups.
57 Github Pull Request #61. Thanks to Shahab Kondri.
58o TarArchiveEntry's preserveLeadingSlashes constructor argument
59 has been renamed and can now also be used to preserve the
60 drive letter on Windows.
Stefan Bodewigde633062014-10-09 12:00:48 +000061
Stefan Bodewigc348be12017-10-09 18:18:41 +020062Release 1.15
63------------
64
65New features:
66o Added magic MANIFEST entry Automatic-Module-Name so the module
67 name will be org.apache.commons.compress when the jar is used
68 as an automatic module in Java9.
69 Issue: COMPRESS-397.
70o Added a new utility class FixedLengthBlockOutputStream that
71 can be used to ensure writing always happens in blocks of a
72 given size.
73 Issue: COMPRESS-405. Thanks to Simon Spero.
74o It is now possible to specify/read custom PAX headers when
75 writing/reading tar archives.
76 Issue: COMPRESS-400. Thanks to Simon Spero.
77
78Fixed Bugs:
79o Make sure "version needed to extract" in local file header and
80 central directory of a ZIP archive agree with each other.
81 Also ensure the version is set to 2.0 if DEFLATE is used.
82 Issue: COMPRESS-394.
83o Don't use a data descriptor in ZIP archives when copying a raw
84 entry that already knows its size and CRC information.
85 Issue: COMPRESS-395.
86o Travis build redundantly repeats compilation and tests redundantly
87 GitHub Pull Request #43. Thanks to Simon Spero.
88 Issue: COMPRESS-413
89o The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
90 Java.
91 Issue: COMPRESS-396.
92o BUILDING.md now passes the RAT check.
93 Issue: COMPRESS-406. Thanks to Simon Spero.
94o Made sure ChecksumCalculatingInputStream receives valid
95 checksum and input stream instances via the constructor.
96 Issue: COMPRESS-412. Thanks to Michael Hausegger.
97o TarArchiveOutputStream now verifies the block and record sizes
98 specified at construction time are compatible with the tar
99 specification. In particular 512 is the only record size
100 accepted and the block size must be a multiple of 512.
101 Issue: COMPRESS-407. Thanks to Simon Spero.
102o Fixed class names of CpioArchiveEntry and
103 CpioArchiveInputStream in various Javadocs.
104 Issue: COMPRESS-415.
105o The code of the extended timestamp zip extra field incorrectly
106 assumed the time was stored as unsigned 32-bit int and thus
107 created incorrect results for years after 2037.
108 Issue: COMPRESS-416. Thanks to Simon Spero.
109o Removed ZipEncoding code that became obsolete when we started
110 to require Java 5 as baseline long ago.
111 Issue: COMPRESS-410. Thanks to Simon Spero.
112o The tar package will no longer try to parse the major and
113 minor device numbers unless the entry represents a character
114 or block special file.
115 Issue: COMPRESS-417.
116o When reading tar headers with name fields containing embedded
117 NULs, the name will now be terminated at the first NUL byte.
118 Issue: COMPRESS-421. Thanks to Roel Spilker.
119o Simplified TarArchiveOutputStream by replacing the internal
120 buffering with new class FixedLengthBlockOutputStream.
121 Issue: COMPRESS-409.
122
Stefan Bodewigdd7c7702017-05-11 21:03:58 +0200123Release 1.14
124------------
125
126New features:
127o Added write support for Snappy.
128 Issue: COMPRESS-246.
129o Added support for LZ4 (block and frame format).
130 Issue: COMPRESS-271.
131o Add static detect(InputStream in) to CompressorStreamFactory
132 and ArchiveStreamFactory
133 Issue: COMPRESS-385.
134o Added a way to limit amount of memory ZCompressorStream may
135 use.
136 Issue: COMPRESS-382. Thanks to Tim Allison.
137o Added a way to limit amount of memory ZCompressorStream may
138 use.
139 Issue: COMPRESS-386. Thanks to Tim Allison.
140o Added a way to limit amount of memory LZMACompressorStream and
141 XZCompressorInputStream may use.
142 Issue: COMPRESS-382. Thanks to Tim Allison.
143o Add Brotli decoder based on the Google Brotli library.
144 Issue: COMPRESS-392. Thanks to Philippe Mouawad.
145o ZipEntry now exposes its data offset.
146 Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky.
147o Using ZipArchiveEntry's setAlignment it is now possible to
148 ensure the data offset of an entry starts at a file position
149 that at word or page boundaries.
150 A new extra field has been added for this purpose.
151 Issue: COMPRESS-391. Thanks to Zbynek Vyskovsky.
152
153Fixed Bugs:
154o SnappyCompressorInputStream slides the window too early
155 leading to ArrayIndexOutOfBoundsExceptions for some streams.
156 Issue: COMPRESS-378.
157o ZipArchiveEntry#isUnixSymlink now only returns true if the
158 corresponding link flag is the only file-type flag set.
159 Issue: COMPRESS-379. Thanks to Guillaume Boué.
160o Fixed an integer overflow in CPIO's CRC calculation.
161 Pull Request #17. Thanks to Daniel Collin.
162o Make unit tests work on Windows paths with spaces in their names.
163 Issue: COMPRESS-387.
164o Internal location pointer in ZipFile could get incremented
165 even if nothing had been read.
166 Issue: COMPRESS-389.
167o LZMACompressorOutputStream#flush would throw an exception
168 rather than be the NOP it promised to be.
169 Issue: COMPRESS-393.
170
171Changes:
172o The blocksize for FramedSnappyCompressorInputStream can now be
173 configured as some IWA files seem to be using blocks larger
174 than the default 32k.
175 Issue: COMPRESS-358.
176o BZip2CompressorInputstream now uses BitInputStream internally.
177 Pull Request #13. Thanks to Thomas Meyer.
178o Improved performance for concurrent reads from ZipFile when
179 reading from a file.
180 Issue: COMPRESS-388. Thanks to Zbynek Vyskovsky.
181
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +0100182Release 1.13
183------------
184
Stefan Bodewig45438472016-12-25 13:16:42 +0100185Commons Compress 1.13 is the first version to require Java 7 at
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +0100186runtime.
187
188Changes in this version include:
189
190New features:
191o SevenZFile, SevenZOutputFile, ZipFile and
192 ZipArchiveOutputStream can now work on non-file resources if
193 they can be accessed via SeekableByteChannel.
194 Issue: COMPRESS-327.
195o Allow compressor extensions through a standard JRE ServiceLoader.
196 Issue: COMPRESS-368.
197o Allow archive extensions through a standard JRE ServiceLoader.
198 Issue: COMPRESS-369.
199o Add write support for the legacy LZMA format, this requires XZ
200 for Java 1.6.
201 Issue: COMPRESS-373.
202o Add write support for the legacy LZMA stream to 7z, this
203 requires XZ for Java 1.6.
204 Issue: COMPRESS-374.
205o Allow the clients of ParallelScatterZipCreator to provide
206 ZipArchiveEntryRequestSupplier.
207 Issue: COMPRESS-375. Thanks to Plamen Totev.
208o Add a version-independent link to the API docs of the latest
209 release.
210 Issue: COMPRESS-372.
211
212Fixed Bugs:
213o BitInputStream could return bad results when overflowing
214 internally - if two consecutive reads tried to read more than
215 64 bits.
216 Issue: COMPRESS-363.
217o ZipArchiveInputStream.closeEntry does not properly advance to
218 next entry if there are junk bytes at end of data section.
219 Issue: COMPRESS-364. Thanks to Mike Mole.
220o ZipArchiveInputStream now throws an Exception if it encounters
221 a broken ZIP archive rather than signaling end-of-archive.
222 Issue: COMPRESS-367. Thanks to Mike Mole.
223o ScatterZipOutputStream didn't close the StreamCompressor
224 causing a potential resource leak.
225 Issue: COMPRESS-377.
226
227Changes:
228o Update Java requirement from 6 to 7.
229 Issue: COMPRESS-360.
230o Clarified which TarArchiveEntry methods are useless for
231 entries read from an archive.
232 Issue: COMPRESS-366.
233
Stefan Bodewig3623ee72016-06-18 17:25:37 +0200234Release 1.12
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200235------------
236
Stefan Bodewig9a677fb2016-06-21 21:27:57 +0200237Commons Compress 1.12 is the first version to require Java 6 at
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200238runtime.
239
240Release 1.12 changes the behavior of BZip2CompressorOutputStream's
241finalize method so that it no longer invokes finish. This is going to
242break code that relied on the finalizer to clean up an unfinished
243stream. The code will need to be changed to call finish or close
244itself. Note that a finalizer is not guaranteed to run, so the feature
245was not 100% effective in any case.
246
247New features:
248
249o FramedSnappyCompressorInputStream now supports the dialect of
250 Snappy used by the IWA files contained within the zip archives
251 used in Apple's iWork 13 files.
252 Issue: COMPRESS-352.
253
254Fixed Bugs:
255
256o SevenZFile.read() throws an IllegalStateException for empty entries.
257 Issue: COMPRESS-348.
258o TarArchiveInputStream failed to parse PAX headers that included
259 blank lines.
260 Issue: COMPRESS-355. Thanks to Jeremy Gustie.
261o TarArchiveInputStream failed to parse PAX headers whose tar entry
262 name ended with a slash.
263 Issue: COMPRESS-356. Thanks to Jeremy Gustie.
264
265Changes:
266o Update requirement from Java 5 to 6.
267 Issue: COMPRESS-349.
268o TarArchiveEntry wastefully allocates empty arrays.
269 Issue: COMPRESS-350.
270o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
271 refer to IOEx, not NPE.
272 Issue: COMPRESS-353.
273o PureJavaCrc32C in the snappy package is now final so it is now safe
274 to call a virtual method inside the constructor.
275 Issue: COMPRESS-354.
276
277o ZipArchiveInputStream and CpioArchiveInputStream could throw
278 exceptions who's messages contained potentially corrupt entry names
279 read from a broken archive. They will now sanitize the names by
280 replacing unprintable characters and restricting the length to 255
281 characters.
282 Issue: COMPRESS-351.
283o BZip2CompressorOutputStream no longer tries to finish the output
284 stream in finalize. This is a breaking change for code that relied
285 on the finalizer.
286 Issue: COMPRESS-357.
287
288
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200289Release 1.11
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100290------------
291
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200292New features:
293o TarArchiveInputStream now supports reading global PAX headers.
294 Issue: COMPRESS-347.
295o The PAX headers for sparse entries written by star are now
296 applied.
297 Issue: COMPRESS-346.
298o GNU sparse files using one of the PAX formats are now
299 detected, but cannot be extracted.
300 Issue: COMPRESS-345.
301o New method SevenZFile.getEntries can be used to list the
302 contents of a 7z archive.
303 Issue: COMPRESS-341.
304o When using Zip64Mode.Always also use ZIP64 extensions inside
305 the central directory.
306 GitHub Pull Request #10 Thanks to Matt Hovey.
307o ZipFile.getRawInputStream() is now part of the public API
308 Issue: COMPRESS-323.
309o Allow byte-for-byte replication of Zip entries.
310 GitHub Pull Request #6. Thanks to Jason van Zyl.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100311o TarArchiveEntry's preserveLeadingSlashes is now a property and used
312 on later calls to setName, too.
313 This behavior is a breaking change.
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200314 Issue: COMPRESS-328.
315o Added read-only support for bzip2 compression used inside of
316 ZIP archives.
317 GitHub Pull Request #4. Thanks to Sören Glimm.
318
319Fixed Bugs:
320o ArArchiveInputStream can now read GNU extended names that are
321 terminated with a NUL byte rather than a linefeed.
322 Issue: COMPRESS-344.
323o Native Memory Leak in Sevenz-DeflateDecoder.
324 Issue: COMPRESS-343. Thanks to Rene Preissel.
325o SevenZFile will now only try to drain an entry's content when
326 moving on to the next entry if data is read from the next
327 entry. This should improve performance for applications that
328 try to skip over entries.
329 Issue: COMPRESS-340. Thanks to Dawid Weiss.
330o file names of tar archives using the xstar format are now
331 parsed properly.
332 Issue: COMPRESS-336.
333o checksums of tars that pad the checksum field to the left are
334 now calculated properly.
335 Issue: COMPRESS-335.
336o ArArchiveInputStream failed to read past the first entry when
337 BSD long names have been used.
338 Issue: COMPRESS-334. Thanks to Jeremy Gustie.
339o Added buffering for random access which speeds up 7Z support.
340 Issue: COMPRESS-333. Thanks to Dawid Weiss.
341o The checksum validation of TararchiveEntry is now as strict as
342 the validation of GNU tar, which eliminates a few cases of
343 false positives of ArchiveStreamFactory.
344 This behavior is a breaking change since the check has become
345 more strict but any archive that fails the checksum test now
346 would also fail it when extracted with other tools and must be
347 considered an invalid archive.
348 Issue: COMPRESS-331.
349o SnappyCompressorInputStream and
350 FramedSnappyCompressorInputStream returned 0 at the end of the
351 stream under certain circumstances.
352 Issue: COMPRESS-332.
353o Adjusted unit test to updates in Java8 and later that change
354 the logic of ZipEntry#getTime.
355 Issue: COMPRESS-326.
356o TarArchiveOutputStream will now recognize GNU long name and
357 link entries even if the special entry has a different name
358 than GNU tar uses itself. This seems to be the case for
359 archives created by star.
360 Issue: COMPRESS-324.
361o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
362 fields are read from the central directory.
363 Issue: COMPRESS-321.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100364
Stefan Bodewigec075142015-01-26 05:12:09 +0000365Release 1.10
366------------
367
368Release 1.10 moves the former
369org.apache.commons.compress.compressors.z._internal_ package which
370breaks backwards compatibility for code which used the old package.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000371
372This also changes the superclass of ZCompressorInputStream which makes
373this class binary incompatible with the one of Compress 1.9. Code
374that extends ZCompressorInputStream will need to be recompiled in
375order to work with Compress 1.10.
Stefan Bodewigc100d2e2015-01-30 08:24:54 +0000376
Stefan Bodewigec075142015-01-26 05:12:09 +0000377New features:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000378o CompressorStreamFactory can now auto-detect DEFLATE streams
379 with ZLIB header.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100380 Issue: COMPRESS-316. Thanks to Nick Burch.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000381o CompressorStreamFactory can now auto-detect LZMA streams.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100382 Issue: COMPRESS-313.
Stefan Bodewigec075142015-01-26 05:12:09 +0000383o Added support for parallel compression. This low-level API allows
384 a client to build a zip/jar file by using the class
385 org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
386
387 Zip documentation updated with further notes about parallel features.
388
389 Please note that some aspects of jar creation need to be
390 handled by client code and is not part of commons-compress for this
391 release.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100392 Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000393o Cut overall object instantiation in half by changing file
394 header generation algorithm, for a 10-15 percent performance
395 improvement.
396
397 Also extracted two private methods createLocalFileHeader
398 and createCentralFileHeader in ZipArchiveOutputStream.
399 These may have some interesting additional usages in the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100400 near future. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000401o New methods in ZipArchiveOutputStream and ZipFile allows
402 entries to be copied from one archive to another without
403 having to re-compress them.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100404 Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000405
406Fixed Bugs:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000407o TarArchiveInputStream can now read entries with group or
408 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100409 Issue: COMPRESS-314.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000410o TarArchiveOutputStream can now write entries with group or
411 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100412 Issue: COMPRESS-315.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000413o TarArchiveEntry's constructor with a File and a String arg
414 didn't normalize the name.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100415 Issue: COMPRESS-312.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000416o ZipEncodingHelper no longer reads system properties directly
417 to determine the default charset.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100418 Issue: COMPRESS-308.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000419o BZip2CompressorInputStream#read would return -1 when asked to
420 read 0 bytes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100421 Issue: COMPRESS-309.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000422o ArchiveStreamFactory fails to pass on the encoding when creating
423 some streams.
424 * ArjArchiveInputStream
425 * CpioArchiveInputStream
426 * DumpArchiveInputStream
427 * JarArchiveInputStream
428 * TarArchiveInputStream
429 * JarArchiveOutputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100430 Issue: COMPRESS-306.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000431o Restore immutability/thread-safety to ArchiveStreamFactory.
432 The class is now immutable provided that the method setEntryEncoding
433 is not used. The class is thread-safe.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100434 Issue: COMPRESS-302.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000435o Restore immutability/thread-safety to CompressorStreamFactory.
436 The class is now immutable provided that the method
437 setDecompressConcatenated is not used. The class is thread-safe.
438 Issue: COMPRESS-303.
Stefan Bodewigec075142015-01-26 05:12:09 +0000439o ZipFile logs a warning in its finalizer when its constructor
440 has thrown an exception reading the file - for example if the
441 file doesn't exist.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100442 Issue: COMPRESS-297.
Stefan Bodewigec075142015-01-26 05:12:09 +0000443o Improved error message when tar encounters a groupId that is
444 too big to write without using the STAR or POSIX format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100445 Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000446o SevenZFile now throws the specific PasswordRequiredException
447 when it encounters an encrypted stream but no password has
448 been specified.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100449 Issue: COMPRESS-298.
Stefan Bodewigec075142015-01-26 05:12:09 +0000450
451Changes:
452o Moved the package
453 org.apache.commons.compress.compressors.z._internal_ to
454 org.apache.commons.compress.compressors.lzw and made it part
455 of the API that is officially supported. This will break
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100456 existing code that uses the old package. Thanks to Damjan Jovanovic.
Stefan Bodewigec075142015-01-26 05:12:09 +0000457
458For complete information on Apache Commons Compress, including instructions
459on how to submit bug reports, patches, or suggestions for improvement,
460see the Apache Commons Compress website:
461
462http://commons.apache.org/compress/
463
464Old Release Notes
465=================
466
Stefan Bodewigde633062014-10-09 12:00:48 +0000467Release 1.9
468-----------
469
470New features:
471o Added support for DEFLATE streams without any gzip framing.
472 Issue: COMPRESS-263.
473 Thanks to Matthias Stevens.
474
475Fixed Bugs:
476o When reading 7z files unknown file properties and properties of type
477 kDummy are now ignored.
478 Issue: COMPRESS-287.
479o Expanding 7z archives using LZMA compression could cause an
480 EOFException.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100481 Issue: COMPRESS-286.
Stefan Bodewigde633062014-10-09 12:00:48 +0000482o Long-Name and -link or PAX-header entries in TAR archives always had
483 the current time as last modfication time, creating archives that
484 are different at the byte level each time an archive was built.
485 Issue: COMPRESS-289.
486 Thanks to Bob Robertson.
487
488Changes:
489o Checking for XZ for Java may be expensive. The result will now be
490 cached outside of an OSGi environment. You can use the new
491 XZUtils#setCacheXZAvailability to overrride this default behavior.
492 Issue: COMPRESS-285.
493
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000494Release 1.8.1
Stefan Bodewigde633062014-10-09 12:00:48 +0000495-------------
Sebastian Bazley48882f12010-04-13 21:02:37 +0000496
Stefan Bodewig48d74702013-03-10 17:10:57 +0000497New features:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000498o COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100499 (".Z") streams.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000500
Sebastian Bazley48882f12010-04-13 21:02:37 +0000501Fixed Bugs:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000502o COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100503 non-buffered stream in certain cases.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000504o COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100505 more could be read from the stream.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000506o COMPRESS-276: ArchiveStreams now validate there is a current entry before
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100507 reading or writing entry data.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000508o ArjArchiveInputStream#canReadEntryData tested the current
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100509 entry of the stream rather than its argument.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000510o COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100511 entries.
512o COMPRESS-273: Added a few null checks to improve robustness.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000513o COMPRESS-278: TarArchiveInputStream failed to read archives with empty
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100514 gid/uid fields.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000515o COMPRESS-279: TarArchiveInputStream now again throws an exception when it
516 encounters a truncated archive while reading from the last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100517 entry.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000518o COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100519 IOUtils#skip method. Thanks to BELUGA BEHR.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000520
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000521Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100522o The dependency on org.tukaani:xz is now marked as optional.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000523
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000524Release 1.8
525-----------
526
527New features:
528o GzipCompressorInputStream now provides access to the same
529 metadata that can be provided via GzipParameters when writing
530 a gzip stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100531 Issue: COMPRESS-260.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000532o SevenZOutputFile now supports chaining multiple
533 compression/encryption/filter methods and passing options to
534 the methods.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100535 Issue: COMPRESS-266.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000536o The (compression) method(s) can now be specified per entry in
537 SevenZOutputFile.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100538 Issue: COMPRESS-261.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000539o SevenZArchiveEntry "knows" which method(s) have been used to
540 write it to the archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100541 Issue: COMPRESS-258.
542o The 7z package now supports the delta filter as method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000543o The 7z package now supports BCJ filters for several platforms.
544 You will need a version >= 1.5 of XZ for Java to read archives
545 using BCJ, though.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100546 Issue: COMPRESS-257.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000547
548Fixed Bugs:
549o BZip2CompressorInputStream read fewer bytes than possible from
550 a truncated stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100551 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000552o SevenZFile failed claiming the dictionary was too large when
553 archives used LZMA compression for headers and content and
554 certain non-default dictionary sizes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100555 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000556o CompressorStreamFactory.createCompressorInputStream with
557 explicit compression did not honor decompressConcatenated
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100558 Issue: COMPRESS-259.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000559o TarArchiveInputStream will now read archives created by tar
560 implementations that encode big numbers by not adding a
561 trailing NUL.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100562 Issue: COMPRESS-262.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000563o ZipArchiveInputStream would return NUL bytes for the first 512
564 bytes of a STORED entry if it was the very first entry of the
565 archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100566 Issue: COMPRESS-264.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000567o When writing PAX/POSIX headers for TAR entries with
568 backslashes or certain non-ASCII characters in their name
569 TarArchiveOutputStream could fail.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100570 Issue: COMPRESS-265.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000571o ArchiveStreamFactory now throws a StreamingNotSupported - a
572 new subclass of ArchiveException - if it is asked to read from
573 or write to a stream and Commons Compress doesn't support
574 streaming for the format. This currently only applies to the
575 7z format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100576 Issue: COMPRESS-267.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000577
578Release 1.7
579-----------
580
581New features:
582o Read-Only support for Snappy compression.
583 Issue: COMPRESS-147. Thanks to BELUGA BEHR.
584o Read-Only support for .Z compressed files.
585 Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
586o ZipFile and ZipArchiveInputStream now support reading entries
587 compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
588o GzipCompressorOutputStream now supports setting the compression
589 level and the header metadata (filename, comment, modification time,
590 operating system and extra flags)
591 Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
592o ZipFile and ZipArchiveInputStream now support reading entries
593 compressed using the IMPLODE method.
594 Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
595o ZipFile and the 7z file classes now implement Closeable and can be
596 used in try-with-resources constructs.
597
598Fixed Bugs:
599o SevenZOutputFile#closeArchiveEntry throws an exception when using
600 LZMA2 compression on Java8. Issue: COMPRESS-241.
601o 7z reading of big 64bit values could be wrong.
602 Issue: COMPRESS-244. Thanks to Nico Kruber.
603o TarArchiveInputStream could fail to read an archive completely.
604 Issue: COMPRESS-245.
605o The time-setters in X5455_ExtendedTimestamp now set the
606 corresponding flags explicitly - i.e. they set the bit if the valus
607 is not-null and reset it otherwise. This may cause
608 incompatibilities if you use setFlags to unset a bit and later set
609 the time to a non-null value - the flag will now be set.
610 Issue: COMPRESS-242.
611o SevenZOutputFile would create invalid archives if more than six
612 empty files or directories were included. Issue: COMPRESS-252.
613
614Release 1.6
615-----------
616
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100617Version 1.6 introduces changes to the internal API of the tar package that
618break backwards compatibility in the following rare cases. This version
619removes the package private TarBuffer class along with the protected "buffer"
620members in TarArchiveInputStream and TarArchiveOutputStream. This change will
621only affect you if you have created a subclass of one of the stream classes
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000622and accessed the buffer member or directly used the TarBuffer class.
623
624Changes in this version include:
625
626New features:
627o Added support for 7z archives. Most compression algorithms
628 can be read and written, LZMA and encryption are only
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100629 supported when reading. Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000630o Added read-only support for ARJ archives that don't use
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100631 compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000632o DumpArchiveInputStream now supports an encoding parameter that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100633 can be used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000634o The CPIO streams now support an encoding parameter that can be
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100635 used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000636o Read-only support for LZMA standalone compression has been added.
637 Issue: COMPRESS-111.
638
639Fixed Bugs:
640o TarBuffer.tryToConsumeSecondEOFRecord could throw a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100641 NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000642o Parsing of zip64 extra fields has become more lenient in order
643 to be able to read archives created by DotNetZip and maybe
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100644 other archivers as well. Issue: COMPRESS-228.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000645o TAR will now properly read the names of symbolic links with
646 long names that use the GNU variant to specify the long file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100647 name. Issue: COMPRESS-229. Thanks to Christoph Gysin.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000648o ZipFile#getInputStream could return null if the archive
649 contained duplicate entries.
650 The class now also provides two new methods to obtain all
651 entries of a given name rather than just the first one.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100652 Issue: COMPRESS-227.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000653o CpioArchiveInputStream failed to read archives created by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100654 Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000655o TarArchiveOutputStream now properly handles link names that
656 are too long to fit into a traditional TAR header. Issue:
657 COMPRESS-237. Thanks to Emmanuel Bourg.
658o The auto-detecting create*InputStream methods of Archive and
659 CompressorStreamFactory could fail to detect the format of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100660 blocking input streams. Issue: COMPRESS-239.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000661
662Changes:
663o Readabilty patch to TarArchiveInputStream. Issue:
664 COMPRESS-232. Thanks to BELUGA BEHR.
665o Performance improvements to TarArchiveInputStream, in
666 particular to the skip method. Issue: COMPRESS-234. Thanks to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100667 BELUGA BEHR.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000668
669Release 1.5
670-----------
671
672New features:
673
674o CompressorStreamFactory has an option to create decompressing
675 streams that decompress the full input for formats that support
676 multiple concatenated streams.
677 Issue: COMPRESS-220.
678
679Fixed Bugs:
680
681o Typo in CompressorStreamFactory Javadoc
682 Issue: COMPRESS-218.
683 Thanks to Gili.
684o ArchiveStreamFactory's tar stream detection created false positives
685 for AIFF files.
686 Issue: COMPRESS-191.
687 Thanks to Jukka Zitting.
688o XZ for Java didn't provide an OSGi bundle. Compress' dependency on
689 it has now been marked optional so Compress itself can still be used
690 in an OSGi context.
691 Issue: COMPRESS-199.
692 Thanks to Jukka Zitting.
693o When specifying the encoding explicitly TarArchiveOutputStream would
694 write unreadable names in GNU mode or even cause errors in POSIX
695 mode for file names longer than 66 characters.
696 Issue: COMPRESS-200.
697 Thanks to Christian Schlichtherle.
698o Writing TAR PAX headers failed if the generated entry name ended
699 with a "/".
700 Issue: COMPRESS-203.
701o ZipArchiveInputStream sometimes failed to provide input to the
702 Inflater when it needed it, leading to reads returning 0.
703 Issue: COMPRESS-189.
704 Thanks to Daniel Lowe.
705o TarArchiveInputStream ignored the encoding for GNU long name
706 entries.
707 Issue: COMPRESS-212.
708o TarArchiveInputStream could leave the second EOF record inside the
709 stream it had just finished reading.
710 Issue: COMPRESS-206.
711 Thanks to Peter De Maeyer.
712o DumpArchiveInputStream no longer implicitly closes the original
713 input stream when it reaches the end of the archive.
714o ZipArchiveInputStream now consumes the remainder of the archive when
715 getNextZipEntry returns null.
716o Unit tests could fail if the source tree was checked out to a
717 directory tree containign spaces.
718 Issue: COMPRESS-205.
719 Thanks to Daniel Lowe.
720o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
721 entries from ZipArchiveInputStream.
722 Issue: COMPRESS-219.
723o CompressorStreamFactory can now be used without XZ for Java being
724 available.
725 Issue: COMPRESS-221.
726
727Changes:
728
729o Improved exception message if a zip archive cannot be read because
730 of an unsupported compression method.
731 Issue: COMPRESS-188.
732 Thanks to Harald Kuhn.
733o ArchiveStreamFactory has a setting for file name encoding that sets
734 up encoding for ZIP and TAR streams.
735 Issue: COMPRESS-192.
736 Thanks to Jukka Zitting.
737o TarArchiveEntry now has a method to verify its checksum.
738 Issue: COMPRESS-191.
739 Thanks to Jukka Zitting.
740o Split/spanned ZIP archives are now properly detected by
741 ArchiveStreamFactory but will cause an
742 UnsupportedZipFeatureException when read.
743o ZipArchiveInputStream now reads archives that start with a "PK00"
744 signature. Archives with this signatures are created when the
745 archiver was willing to split the archive but in the end only needed
746 a single segment - so didn't split anything.
747 Issue: COMPRESS-208.
748o TarArchiveEntry has a new constructor that allows setting linkFlag
749 and preserveLeadingSlashes at the same time.
750 Issue: COMPRESS-201.
751o ChangeSetPerformer has a new perform overload that uses a ZipFile
752 instance as input.
753 Issue: COMPRESS-159.
754o Garbage collection pressure has been reduced by reusing temporary
755 byte arrays in classes.
756 Issue: COMPRESS-172.
757 Thanks to Thomas Mair.
758o Can now handle zip extra field 0x5455 - Extended Timestamp.
759 Issue: COMPRESS-210.
760 Thanks to Julius Davies.
761o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
762 Issue: COMPRESS-211.
763 Thanks to Julius Davies.
764o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
765 Issue: COMPRESS-213.
766 Thanks to Julius Davies.
767o better support for unix symlinks in ZipFile entries.
768 Issue: COMPRESS-214.
769 Thanks to Julius Davies.
770o ZipFile's initialization has been improved for non-Zip64 archives.
771 Issue: COMPRESS-215.
772 Thanks to Robin Power.
773o Updated XZ for Java dependency to 1.2 as this version provides
774 proper OSGi manifest attributes.
775
776Release 1.4.1
777-------------
778
779This is a security bugfix release, see
780http://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
781
782Fixed Bugs:
783
784o Ported libbzip2's fallback sort algorithm to
785 BZip2CompressorOutputStream to speed up compression in certain
786 edge cases.
787
788Release 1.4
789-----------
790
791New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100792o COMPRESS-156: Support for the XZ format has been added.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000793
794Fixed Bugs:
795o COMPRESS-183: The tar package now allows the encoding of file names to be
796 specified and can optionally use PAX extension headers to
797 write non-ASCII file names.
798 The stream classes now write (or expect to read) archives that
799 use the platform's native encoding for file names. Apache
800 Commons Compress 1.3 used to strip everything but the lower
801 eight bits of each character which effectively only worked for
802 ASCII and ISO-8859-1 file names.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100803 This new default behavior is a breaking change.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000804o COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100805 contained non-ASCII characters.
806o COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException
807o COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
808o COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000809o COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100810 short text files were TAR archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000811o COMPRESS-164: ZipFile didn't work properly for archives using unicode extra
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100812 fields rather than UTF-8 filenames and the EFS-Flag.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000813o COMPRESS-169: For corrupt archives ZipFile would throw a RuntimeException in
814 some cases and an IOException in others. It will now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100815 consistently throw an IOException.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000816
817Changes:
818o COMPRESS-182: The tar package can now write archives that use star/GNU/BSD
819 extensions or use the POSIX/PAX variant to store numeric
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100820 values that don't fit into the traditional header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000821o COMPRESS-181: Added a workaround for a Bug some tar implementations that add
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100822 a NUL byte as first byte in numeric header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000823o COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100824 as path separators in Unicode Extra Fields.
825o COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000826o COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100827 concatenated .bz2 files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000828o COMPRESS-154: GZipCompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100829 concatenated .gz files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000830o COMPRESS-16: The tar package can now read archives that use star/GNU/BSD
831 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100832 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000833o COMPRESS-165: The tar package can now write archives that use star/GNU/BSD
834 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100835 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000836o COMPRESS-166: The tar package can now use the POSIX/PAX variant for writing
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100837 entries with names longer than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000838
839Release 1.3
840-----------
841
842Commons Compress 1.3 is the first version to require Java5 at runtime.
843
844Changes in this version include:
845
846New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100847o Support for the Pack200 format has been added. Issue: COMPRESS-142.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000848o Read-only support for the format used by the Unix dump(8) tool
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100849 has been added. Issue: COMPRESS-132.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000850
851Fixed Bugs:
852o BZip2CompressorInputStream's getBytesRead method always
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100853 returned 0.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000854o ZipArchiveInputStream and ZipArchiveOutputStream could leak
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100855 resources on some JDKs. Issue: COMPRESS-152.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000856o TarArchiveOutputStream's getBytesWritten method didn't count
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100857 correctly. Issue: COMPRESS-160.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000858
859Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100860o The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000861o The AR package now supports the BSD dialect of storing file
862 names longer than 16 chars (both reading and writing).
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100863 Issue: COMPRESS-144.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000864
865Release 1.2
866-----------
867
868New features:
869o COMPRESS-123: ZipArchiveEntry has a new method getRawName that provides the
870 original bytes that made up the name. This may allow user
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100871 code to detect the encoding.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000872o COMPRESS-122: TarArchiveEntry provides access to the flags that determine
873 whether it is an archived symbolic link, pipe or other
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100874 "uncommon" file system object.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000875
876Fixed Bugs:
877o COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100878 message for entries between 2 GByte and 4 GByte in size.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000879o COMPRESS-145: TarArchiveInputStream now detects sparse entries using the
880 oldgnu format and properly reports it cannot extract their
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100881 contents.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000882o COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100883 implementation, the code has been made more defensive.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000884o COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100885 userId or groupId. Thanks to Trejkaz.
886o COMPRESS-139: ZipFile may leak resources on some JDKs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000887o COMPRESS-125: BZip2CompressorInputStream throws IOException if
888 underlying stream returns available() == 0.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100889 Removed the check.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000890o COMPRESS-127: Calling close() on inputStream returned by
891 CompressorStreamFactory.createCompressorInputStream()
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100892 does not close the underlying input stream.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000893o COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100894 data to the stream
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000895
896Changes:
897o ZipFile now implements finalize which closes the underlying
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100898 file.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000899o COMPRESS-117: Certain tar files not recognised by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100900 ArchiveStreamFactory.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000901
902Release 1.1
903-----------
904
905New features:
906o COMPRESS-108: Command-line interface to list archive contents.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100907 Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000908o COMPRESS-109: Tar implementation does not support Pax headers
909 Added support for reading pax headers.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100910 Note: does not support global pax headers
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000911o COMPRESS-103: ZipArchiveInputStream can optionally extract data that used
912 the STORED compression method and a data descriptor.
913 Doing so in a stream is not safe in general, so you have to
914 explicitly enable the feature. By default the stream will
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100915 throw an exception if it encounters such an entry.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000916o COMPRESS-98: The ZIP classes will throw specialized exceptions if any
917 attempt is made to read or write data that uses zip features
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100918 not supported (yet).
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000919o COMPRESS-99: ZipFile#getEntries returns entries in a predictable order -
920 the order they appear inside the central directory.
921 A new method getEntriesInPhysicalOrder returns entries in
922 order of the entry data, i.e. the order ZipArchiveInputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100923 would see.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000924o The Archive*Stream and ZipFile classes now have
925 can(Read|Write)EntryData methods that can be used to check
926 whether a given entry's data can be read/written.
927 The method currently returns false for ZIP archives if an
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100928 entry uses an unsupported compression method or encryption.
929o COMPRESS-89: The ZIP classes now detect encrypted entries.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000930o COMPRESS-97: Added autodetection of compression format to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100931 CompressorStreamFactory.
932o COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000933o A new constructor of TarArchiveEntry can create entries with
934 names that start with slashes - the default is to strip
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100935 leading slashes in order to create relative path names.
936o ArchiveEntry now has a getLastModifiedDate method.
937o COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000938
939Fixed Bugs:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100940o COMPRESS-72: Move acknowledgements from NOTICE to README
941o COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
942o COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127
943o COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000944o COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100945 than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000946o COMPRESS-100: ZipArchiveInputStream will throw an exception if it detects an
947 entry that uses a data descriptor for a STORED entry since it
948 cannot reliably find the end of data for this "compression"
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100949 method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000950o COMPRESS-101: ZipArchiveInputStream should now properly read archives that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100951 use data descriptors but without the "unofficial" signature.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000952o COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100953 read properly.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000954o ArchiveInputStream has a new method getBytesRead that should
955 be preferred over getCount since the later may truncate the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100956 number of bytes read for big archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000957o COMPRESS-85: The cpio archives created by CpioArchiveOutputStream couldn't
958 be read by many existing native implementations because the
959 archives contained multiple entries with the same inode/device
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100960 combinations and weren't padded to a blocksize of 512 bytes.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000961o COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100962 more lenient when parsing extra fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000963o COMPRESS-82: cpio is terribly slow.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100964 Documented that buffered streams are needed for performance
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000965o Improved exception message if the extra field data in ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100966 archives cannot be parsed.
967o COMPRESS-17: Tar format unspecified - current support documented.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000968o COMPRESS-94: ZipArchiveEntry's equals method was broken for entries created
969 with the String-arg constructor. This lead to broken ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100970 archives if two different entries had the same hash code. Thanks to Anon Devs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000971o COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100972 the archive was truncated. Thanks to Antoni Mylka.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000973o COMPRESS-86: Tar archive entries holding the file name for names longer
974 than 100 characters in GNU longfile mode didn't properly
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100975 specify they'd be using the "oldgnu" extension.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000976o COMPRESS-83: Delegate all read and write methods in GZip stream in order to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100977 speed up operations.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000978o The ar and cpio streams now properly read and write last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100979 modified times.
980o COMPRESS-81: TarOutputStream can leave garbage at the end of the archive
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000981
982Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100983o COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//)
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000984o COMPRESS-105: Document that the name of an ZipArchiveEntry determines whether
985 an entry is considered a directory or not.
986 If you don't use the constructor with the File argument the entry's
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100987 name must end in a "/" in order for the entry to be known as a directory.
988o COMPRESS-79: Move DOS/Java time conversions into Zip utility class.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000989o COMPRESS-75: ZipArchiveInputStream does not show location in file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100990 where a problem occurred.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000991