blob: 75204db0b0386d578e298d401218aa602a32ed02 [file] [log] [blame]
Stefan Bodewigbdd4bd62015-01-30 08:14:03 +00001 Apache Commons Compress RELEASE NOTES
Sebastian Bazley48882f12010-04-13 21:02:37 +00002
Stefan Bodewig4a154172013-10-13 04:06:16 +00003Apache Commons Compress software defines an API for working with
4compression and archive formats. These include: bzip2, gzip, pack200,
Stefan Bodewigdd7c7702017-05-11 21:03:58 +02005lzma, xz, Snappy, traditional Unix Compress, DEFLATE, LZ4, Brotli and ar, cpio,
Stefan Bodewigde633062014-10-09 12:00:48 +00006jar, tar, zip, dump, 7z, arj.
7
Stefan Bodewigdd7c7702017-05-11 21:03:58 +02008Release 1.14
9------------
10
11New features:
12o Added write support for Snappy.
13 Issue: COMPRESS-246.
14o Added support for LZ4 (block and frame format).
15 Issue: COMPRESS-271.
16o Add static detect(InputStream in) to CompressorStreamFactory
17 and ArchiveStreamFactory
18 Issue: COMPRESS-385.
19o Added a way to limit amount of memory ZCompressorStream may
20 use.
21 Issue: COMPRESS-382. Thanks to Tim Allison.
22o Added a way to limit amount of memory ZCompressorStream may
23 use.
24 Issue: COMPRESS-386. Thanks to Tim Allison.
25o Added a way to limit amount of memory LZMACompressorStream and
26 XZCompressorInputStream may use.
27 Issue: COMPRESS-382. Thanks to Tim Allison.
28o Add Brotli decoder based on the Google Brotli library.
29 Issue: COMPRESS-392. Thanks to Philippe Mouawad.
30o ZipEntry now exposes its data offset.
31 Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky.
32o Using ZipArchiveEntry's setAlignment it is now possible to
33 ensure the data offset of an entry starts at a file position
34 that at word or page boundaries.
35 A new extra field has been added for this purpose.
36 Issue: COMPRESS-391. Thanks to Zbynek Vyskovsky.
37
38Fixed Bugs:
39o SnappyCompressorInputStream slides the window too early
40 leading to ArrayIndexOutOfBoundsExceptions for some streams.
41 Issue: COMPRESS-378.
42o ZipArchiveEntry#isUnixSymlink now only returns true if the
43 corresponding link flag is the only file-type flag set.
44 Issue: COMPRESS-379. Thanks to Guillaume Boué.
45o Fixed an integer overflow in CPIO's CRC calculation.
46 Pull Request #17. Thanks to Daniel Collin.
47o Make unit tests work on Windows paths with spaces in their names.
48 Issue: COMPRESS-387.
49o Internal location pointer in ZipFile could get incremented
50 even if nothing had been read.
51 Issue: COMPRESS-389.
52o LZMACompressorOutputStream#flush would throw an exception
53 rather than be the NOP it promised to be.
54 Issue: COMPRESS-393.
55
56Changes:
57o The blocksize for FramedSnappyCompressorInputStream can now be
58 configured as some IWA files seem to be using blocks larger
59 than the default 32k.
60 Issue: COMPRESS-358.
61o BZip2CompressorInputstream now uses BitInputStream internally.
62 Pull Request #13. Thanks to Thomas Meyer.
63o Improved performance for concurrent reads from ZipFile when
64 reading from a file.
65 Issue: COMPRESS-388. Thanks to Zbynek Vyskovsky.
66
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +010067Release 1.13
68------------
69
Stefan Bodewig45438472016-12-25 13:16:42 +010070Commons Compress 1.13 is the first version to require Java 7 at
Stefan Bodewigb9acd7c2016-12-25 13:02:22 +010071runtime.
72
73Changes in this version include:
74
75New features:
76o SevenZFile, SevenZOutputFile, ZipFile and
77 ZipArchiveOutputStream can now work on non-file resources if
78 they can be accessed via SeekableByteChannel.
79 Issue: COMPRESS-327.
80o Allow compressor extensions through a standard JRE ServiceLoader.
81 Issue: COMPRESS-368.
82o Allow archive extensions through a standard JRE ServiceLoader.
83 Issue: COMPRESS-369.
84o Add write support for the legacy LZMA format, this requires XZ
85 for Java 1.6.
86 Issue: COMPRESS-373.
87o Add write support for the legacy LZMA stream to 7z, this
88 requires XZ for Java 1.6.
89 Issue: COMPRESS-374.
90o Allow the clients of ParallelScatterZipCreator to provide
91 ZipArchiveEntryRequestSupplier.
92 Issue: COMPRESS-375. Thanks to Plamen Totev.
93o Add a version-independent link to the API docs of the latest
94 release.
95 Issue: COMPRESS-372.
96
97Fixed Bugs:
98o BitInputStream could return bad results when overflowing
99 internally - if two consecutive reads tried to read more than
100 64 bits.
101 Issue: COMPRESS-363.
102o ZipArchiveInputStream.closeEntry does not properly advance to
103 next entry if there are junk bytes at end of data section.
104 Issue: COMPRESS-364. Thanks to Mike Mole.
105o ZipArchiveInputStream now throws an Exception if it encounters
106 a broken ZIP archive rather than signaling end-of-archive.
107 Issue: COMPRESS-367. Thanks to Mike Mole.
108o ScatterZipOutputStream didn't close the StreamCompressor
109 causing a potential resource leak.
110 Issue: COMPRESS-377.
111
112Changes:
113o Update Java requirement from 6 to 7.
114 Issue: COMPRESS-360.
115o Clarified which TarArchiveEntry methods are useless for
116 entries read from an archive.
117 Issue: COMPRESS-366.
118
Stefan Bodewig3623ee72016-06-18 17:25:37 +0200119Release 1.12
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200120------------
121
Stefan Bodewig9a677fb2016-06-21 21:27:57 +0200122Commons Compress 1.12 is the first version to require Java 6 at
Stefan Bodewig4c11f122016-06-18 17:17:37 +0200123runtime.
124
125Release 1.12 changes the behavior of BZip2CompressorOutputStream's
126finalize method so that it no longer invokes finish. This is going to
127break code that relied on the finalizer to clean up an unfinished
128stream. The code will need to be changed to call finish or close
129itself. Note that a finalizer is not guaranteed to run, so the feature
130was not 100% effective in any case.
131
132New features:
133
134o FramedSnappyCompressorInputStream now supports the dialect of
135 Snappy used by the IWA files contained within the zip archives
136 used in Apple's iWork 13 files.
137 Issue: COMPRESS-352.
138
139Fixed Bugs:
140
141o SevenZFile.read() throws an IllegalStateException for empty entries.
142 Issue: COMPRESS-348.
143o TarArchiveInputStream failed to parse PAX headers that included
144 blank lines.
145 Issue: COMPRESS-355. Thanks to Jeremy Gustie.
146o TarArchiveInputStream failed to parse PAX headers whose tar entry
147 name ended with a slash.
148 Issue: COMPRESS-356. Thanks to Jeremy Gustie.
149
150Changes:
151o Update requirement from Java 5 to 6.
152 Issue: COMPRESS-349.
153o TarArchiveEntry wastefully allocates empty arrays.
154 Issue: COMPRESS-350.
155o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
156 refer to IOEx, not NPE.
157 Issue: COMPRESS-353.
158o PureJavaCrc32C in the snappy package is now final so it is now safe
159 to call a virtual method inside the constructor.
160 Issue: COMPRESS-354.
161
162o ZipArchiveInputStream and CpioArchiveInputStream could throw
163 exceptions who's messages contained potentially corrupt entry names
164 read from a broken archive. They will now sanitize the names by
165 replacing unprintable characters and restricting the length to 255
166 characters.
167 Issue: COMPRESS-351.
168o BZip2CompressorOutputStream no longer tries to finish the output
169 stream in finalize. This is a breaking change for code that relied
170 on the finalizer.
171 Issue: COMPRESS-357.
172
173
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200174Release 1.11
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100175------------
176
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200177New features:
178o TarArchiveInputStream now supports reading global PAX headers.
179 Issue: COMPRESS-347.
180o The PAX headers for sparse entries written by star are now
181 applied.
182 Issue: COMPRESS-346.
183o GNU sparse files using one of the PAX formats are now
184 detected, but cannot be extracted.
185 Issue: COMPRESS-345.
186o New method SevenZFile.getEntries can be used to list the
187 contents of a 7z archive.
188 Issue: COMPRESS-341.
189o When using Zip64Mode.Always also use ZIP64 extensions inside
190 the central directory.
191 GitHub Pull Request #10 Thanks to Matt Hovey.
192o ZipFile.getRawInputStream() is now part of the public API
193 Issue: COMPRESS-323.
194o Allow byte-for-byte replication of Zip entries.
195 GitHub Pull Request #6. Thanks to Jason van Zyl.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100196o TarArchiveEntry's preserveLeadingSlashes is now a property and used
197 on later calls to setName, too.
198 This behavior is a breaking change.
Stefan Bodewigff38bf52016-03-30 15:12:33 +0200199 Issue: COMPRESS-328.
200o Added read-only support for bzip2 compression used inside of
201 ZIP archives.
202 GitHub Pull Request #4. Thanks to Sören Glimm.
203
204Fixed Bugs:
205o ArArchiveInputStream can now read GNU extended names that are
206 terminated with a NUL byte rather than a linefeed.
207 Issue: COMPRESS-344.
208o Native Memory Leak in Sevenz-DeflateDecoder.
209 Issue: COMPRESS-343. Thanks to Rene Preissel.
210o SevenZFile will now only try to drain an entry's content when
211 moving on to the next entry if data is read from the next
212 entry. This should improve performance for applications that
213 try to skip over entries.
214 Issue: COMPRESS-340. Thanks to Dawid Weiss.
215o file names of tar archives using the xstar format are now
216 parsed properly.
217 Issue: COMPRESS-336.
218o checksums of tars that pad the checksum field to the left are
219 now calculated properly.
220 Issue: COMPRESS-335.
221o ArArchiveInputStream failed to read past the first entry when
222 BSD long names have been used.
223 Issue: COMPRESS-334. Thanks to Jeremy Gustie.
224o Added buffering for random access which speeds up 7Z support.
225 Issue: COMPRESS-333. Thanks to Dawid Weiss.
226o The checksum validation of TararchiveEntry is now as strict as
227 the validation of GNU tar, which eliminates a few cases of
228 false positives of ArchiveStreamFactory.
229 This behavior is a breaking change since the check has become
230 more strict but any archive that fails the checksum test now
231 would also fail it when extracted with other tools and must be
232 considered an invalid archive.
233 Issue: COMPRESS-331.
234o SnappyCompressorInputStream and
235 FramedSnappyCompressorInputStream returned 0 at the end of the
236 stream under certain circumstances.
237 Issue: COMPRESS-332.
238o Adjusted unit test to updates in Java8 and later that change
239 the logic of ZipEntry#getTime.
240 Issue: COMPRESS-326.
241o TarArchiveOutputStream will now recognize GNU long name and
242 link entries even if the special entry has a different name
243 than GNU tar uses itself. This seems to be the case for
244 archives created by star.
245 Issue: COMPRESS-324.
246o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
247 fields are read from the central directory.
248 Issue: COMPRESS-321.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100249
Stefan Bodewigec075142015-01-26 05:12:09 +0000250Release 1.10
251------------
252
253Release 1.10 moves the former
254org.apache.commons.compress.compressors.z._internal_ package which
255breaks backwards compatibility for code which used the old package.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000256
257This also changes the superclass of ZCompressorInputStream which makes
258this class binary incompatible with the one of Compress 1.9. Code
259that extends ZCompressorInputStream will need to be recompiled in
260order to work with Compress 1.10.
Stefan Bodewigc100d2e2015-01-30 08:24:54 +0000261
Stefan Bodewigec075142015-01-26 05:12:09 +0000262New features:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000263o CompressorStreamFactory can now auto-detect DEFLATE streams
264 with ZLIB header.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100265 Issue: COMPRESS-316. Thanks to Nick Burch.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000266o CompressorStreamFactory can now auto-detect LZMA streams.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100267 Issue: COMPRESS-313.
Stefan Bodewigec075142015-01-26 05:12:09 +0000268o Added support for parallel compression. This low-level API allows
269 a client to build a zip/jar file by using the class
270 org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
271
272 Zip documentation updated with further notes about parallel features.
273
274 Please note that some aspects of jar creation need to be
275 handled by client code and is not part of commons-compress for this
276 release.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100277 Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000278o Cut overall object instantiation in half by changing file
279 header generation algorithm, for a 10-15 percent performance
280 improvement.
281
282 Also extracted two private methods createLocalFileHeader
283 and createCentralFileHeader in ZipArchiveOutputStream.
284 These may have some interesting additional usages in the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100285 near future. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000286o New methods in ZipArchiveOutputStream and ZipFile allows
287 entries to be copied from one archive to another without
288 having to re-compress them.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100289 Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000290
291Fixed Bugs:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000292o TarArchiveInputStream can now read entries with group or
293 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100294 Issue: COMPRESS-314.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000295o TarArchiveOutputStream can now write entries with group or
296 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100297 Issue: COMPRESS-315.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000298o TarArchiveEntry's constructor with a File and a String arg
299 didn't normalize the name.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100300 Issue: COMPRESS-312.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000301o ZipEncodingHelper no longer reads system properties directly
302 to determine the default charset.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100303 Issue: COMPRESS-308.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000304o BZip2CompressorInputStream#read would return -1 when asked to
305 read 0 bytes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100306 Issue: COMPRESS-309.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000307o ArchiveStreamFactory fails to pass on the encoding when creating
308 some streams.
309 * ArjArchiveInputStream
310 * CpioArchiveInputStream
311 * DumpArchiveInputStream
312 * JarArchiveInputStream
313 * TarArchiveInputStream
314 * JarArchiveOutputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100315 Issue: COMPRESS-306.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000316o Restore immutability/thread-safety to ArchiveStreamFactory.
317 The class is now immutable provided that the method setEntryEncoding
318 is not used. The class is thread-safe.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100319 Issue: COMPRESS-302.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000320o Restore immutability/thread-safety to CompressorStreamFactory.
321 The class is now immutable provided that the method
322 setDecompressConcatenated is not used. The class is thread-safe.
323 Issue: COMPRESS-303.
Stefan Bodewigec075142015-01-26 05:12:09 +0000324o ZipFile logs a warning in its finalizer when its constructor
325 has thrown an exception reading the file - for example if the
326 file doesn't exist.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100327 Issue: COMPRESS-297.
Stefan Bodewigec075142015-01-26 05:12:09 +0000328o Improved error message when tar encounters a groupId that is
329 too big to write without using the STAR or POSIX format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100330 Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000331o SevenZFile now throws the specific PasswordRequiredException
332 when it encounters an encrypted stream but no password has
333 been specified.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100334 Issue: COMPRESS-298.
Stefan Bodewigec075142015-01-26 05:12:09 +0000335
336Changes:
337o Moved the package
338 org.apache.commons.compress.compressors.z._internal_ to
339 org.apache.commons.compress.compressors.lzw and made it part
340 of the API that is officially supported. This will break
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100341 existing code that uses the old package. Thanks to Damjan Jovanovic.
Stefan Bodewigec075142015-01-26 05:12:09 +0000342
343For complete information on Apache Commons Compress, including instructions
344on how to submit bug reports, patches, or suggestions for improvement,
345see the Apache Commons Compress website:
346
347http://commons.apache.org/compress/
348
349Old Release Notes
350=================
351
Stefan Bodewigde633062014-10-09 12:00:48 +0000352Release 1.9
353-----------
354
355New features:
356o Added support for DEFLATE streams without any gzip framing.
357 Issue: COMPRESS-263.
358 Thanks to Matthias Stevens.
359
360Fixed Bugs:
361o When reading 7z files unknown file properties and properties of type
362 kDummy are now ignored.
363 Issue: COMPRESS-287.
364o Expanding 7z archives using LZMA compression could cause an
365 EOFException.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100366 Issue: COMPRESS-286.
Stefan Bodewigde633062014-10-09 12:00:48 +0000367o Long-Name and -link or PAX-header entries in TAR archives always had
368 the current time as last modfication time, creating archives that
369 are different at the byte level each time an archive was built.
370 Issue: COMPRESS-289.
371 Thanks to Bob Robertson.
372
373Changes:
374o Checking for XZ for Java may be expensive. The result will now be
375 cached outside of an OSGi environment. You can use the new
376 XZUtils#setCacheXZAvailability to overrride this default behavior.
377 Issue: COMPRESS-285.
378
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000379Release 1.8.1
Stefan Bodewigde633062014-10-09 12:00:48 +0000380-------------
Sebastian Bazley48882f12010-04-13 21:02:37 +0000381
Stefan Bodewig48d74702013-03-10 17:10:57 +0000382New features:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000383o COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100384 (".Z") streams.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000385
Sebastian Bazley48882f12010-04-13 21:02:37 +0000386Fixed Bugs:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000387o COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100388 non-buffered stream in certain cases.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000389o COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100390 more could be read from the stream.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000391o COMPRESS-276: ArchiveStreams now validate there is a current entry before
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100392 reading or writing entry data.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000393o ArjArchiveInputStream#canReadEntryData tested the current
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100394 entry of the stream rather than its argument.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000395o COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100396 entries.
397o COMPRESS-273: Added a few null checks to improve robustness.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000398o COMPRESS-278: TarArchiveInputStream failed to read archives with empty
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100399 gid/uid fields.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000400o COMPRESS-279: TarArchiveInputStream now again throws an exception when it
401 encounters a truncated archive while reading from the last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100402 entry.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000403o COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100404 IOUtils#skip method. Thanks to BELUGA BEHR.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000405
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000406Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100407o The dependency on org.tukaani:xz is now marked as optional.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000408
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000409Release 1.8
410-----------
411
412New features:
413o GzipCompressorInputStream now provides access to the same
414 metadata that can be provided via GzipParameters when writing
415 a gzip stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100416 Issue: COMPRESS-260.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000417o SevenZOutputFile now supports chaining multiple
418 compression/encryption/filter methods and passing options to
419 the methods.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100420 Issue: COMPRESS-266.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000421o The (compression) method(s) can now be specified per entry in
422 SevenZOutputFile.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100423 Issue: COMPRESS-261.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000424o SevenZArchiveEntry "knows" which method(s) have been used to
425 write it to the archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100426 Issue: COMPRESS-258.
427o The 7z package now supports the delta filter as method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000428o The 7z package now supports BCJ filters for several platforms.
429 You will need a version >= 1.5 of XZ for Java to read archives
430 using BCJ, though.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100431 Issue: COMPRESS-257.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000432
433Fixed Bugs:
434o BZip2CompressorInputStream read fewer bytes than possible from
435 a truncated stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100436 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000437o SevenZFile failed claiming the dictionary was too large when
438 archives used LZMA compression for headers and content and
439 certain non-default dictionary sizes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100440 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000441o CompressorStreamFactory.createCompressorInputStream with
442 explicit compression did not honor decompressConcatenated
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100443 Issue: COMPRESS-259.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000444o TarArchiveInputStream will now read archives created by tar
445 implementations that encode big numbers by not adding a
446 trailing NUL.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100447 Issue: COMPRESS-262.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000448o ZipArchiveInputStream would return NUL bytes for the first 512
449 bytes of a STORED entry if it was the very first entry of the
450 archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100451 Issue: COMPRESS-264.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000452o When writing PAX/POSIX headers for TAR entries with
453 backslashes or certain non-ASCII characters in their name
454 TarArchiveOutputStream could fail.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100455 Issue: COMPRESS-265.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000456o ArchiveStreamFactory now throws a StreamingNotSupported - a
457 new subclass of ArchiveException - if it is asked to read from
458 or write to a stream and Commons Compress doesn't support
459 streaming for the format. This currently only applies to the
460 7z format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100461 Issue: COMPRESS-267.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000462
463Release 1.7
464-----------
465
466New features:
467o Read-Only support for Snappy compression.
468 Issue: COMPRESS-147. Thanks to BELUGA BEHR.
469o Read-Only support for .Z compressed files.
470 Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
471o ZipFile and ZipArchiveInputStream now support reading entries
472 compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
473o GzipCompressorOutputStream now supports setting the compression
474 level and the header metadata (filename, comment, modification time,
475 operating system and extra flags)
476 Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
477o ZipFile and ZipArchiveInputStream now support reading entries
478 compressed using the IMPLODE method.
479 Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
480o ZipFile and the 7z file classes now implement Closeable and can be
481 used in try-with-resources constructs.
482
483Fixed Bugs:
484o SevenZOutputFile#closeArchiveEntry throws an exception when using
485 LZMA2 compression on Java8. Issue: COMPRESS-241.
486o 7z reading of big 64bit values could be wrong.
487 Issue: COMPRESS-244. Thanks to Nico Kruber.
488o TarArchiveInputStream could fail to read an archive completely.
489 Issue: COMPRESS-245.
490o The time-setters in X5455_ExtendedTimestamp now set the
491 corresponding flags explicitly - i.e. they set the bit if the valus
492 is not-null and reset it otherwise. This may cause
493 incompatibilities if you use setFlags to unset a bit and later set
494 the time to a non-null value - the flag will now be set.
495 Issue: COMPRESS-242.
496o SevenZOutputFile would create invalid archives if more than six
497 empty files or directories were included. Issue: COMPRESS-252.
498
499Release 1.6
500-----------
501
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100502Version 1.6 introduces changes to the internal API of the tar package that
503break backwards compatibility in the following rare cases. This version
504removes the package private TarBuffer class along with the protected "buffer"
505members in TarArchiveInputStream and TarArchiveOutputStream. This change will
506only affect you if you have created a subclass of one of the stream classes
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000507and accessed the buffer member or directly used the TarBuffer class.
508
509Changes in this version include:
510
511New features:
512o Added support for 7z archives. Most compression algorithms
513 can be read and written, LZMA and encryption are only
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100514 supported when reading. Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000515o Added read-only support for ARJ archives that don't use
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100516 compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000517o DumpArchiveInputStream now supports an encoding parameter that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100518 can be used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000519o The CPIO streams now support an encoding parameter that can be
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100520 used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000521o Read-only support for LZMA standalone compression has been added.
522 Issue: COMPRESS-111.
523
524Fixed Bugs:
525o TarBuffer.tryToConsumeSecondEOFRecord could throw a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100526 NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000527o Parsing of zip64 extra fields has become more lenient in order
528 to be able to read archives created by DotNetZip and maybe
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100529 other archivers as well. Issue: COMPRESS-228.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000530o TAR will now properly read the names of symbolic links with
531 long names that use the GNU variant to specify the long file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100532 name. Issue: COMPRESS-229. Thanks to Christoph Gysin.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000533o ZipFile#getInputStream could return null if the archive
534 contained duplicate entries.
535 The class now also provides two new methods to obtain all
536 entries of a given name rather than just the first one.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100537 Issue: COMPRESS-227.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000538o CpioArchiveInputStream failed to read archives created by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100539 Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000540o TarArchiveOutputStream now properly handles link names that
541 are too long to fit into a traditional TAR header. Issue:
542 COMPRESS-237. Thanks to Emmanuel Bourg.
543o The auto-detecting create*InputStream methods of Archive and
544 CompressorStreamFactory could fail to detect the format of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100545 blocking input streams. Issue: COMPRESS-239.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000546
547Changes:
548o Readabilty patch to TarArchiveInputStream. Issue:
549 COMPRESS-232. Thanks to BELUGA BEHR.
550o Performance improvements to TarArchiveInputStream, in
551 particular to the skip method. Issue: COMPRESS-234. Thanks to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100552 BELUGA BEHR.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000553
554Release 1.5
555-----------
556
557New features:
558
559o CompressorStreamFactory has an option to create decompressing
560 streams that decompress the full input for formats that support
561 multiple concatenated streams.
562 Issue: COMPRESS-220.
563
564Fixed Bugs:
565
566o Typo in CompressorStreamFactory Javadoc
567 Issue: COMPRESS-218.
568 Thanks to Gili.
569o ArchiveStreamFactory's tar stream detection created false positives
570 for AIFF files.
571 Issue: COMPRESS-191.
572 Thanks to Jukka Zitting.
573o XZ for Java didn't provide an OSGi bundle. Compress' dependency on
574 it has now been marked optional so Compress itself can still be used
575 in an OSGi context.
576 Issue: COMPRESS-199.
577 Thanks to Jukka Zitting.
578o When specifying the encoding explicitly TarArchiveOutputStream would
579 write unreadable names in GNU mode or even cause errors in POSIX
580 mode for file names longer than 66 characters.
581 Issue: COMPRESS-200.
582 Thanks to Christian Schlichtherle.
583o Writing TAR PAX headers failed if the generated entry name ended
584 with a "/".
585 Issue: COMPRESS-203.
586o ZipArchiveInputStream sometimes failed to provide input to the
587 Inflater when it needed it, leading to reads returning 0.
588 Issue: COMPRESS-189.
589 Thanks to Daniel Lowe.
590o TarArchiveInputStream ignored the encoding for GNU long name
591 entries.
592 Issue: COMPRESS-212.
593o TarArchiveInputStream could leave the second EOF record inside the
594 stream it had just finished reading.
595 Issue: COMPRESS-206.
596 Thanks to Peter De Maeyer.
597o DumpArchiveInputStream no longer implicitly closes the original
598 input stream when it reaches the end of the archive.
599o ZipArchiveInputStream now consumes the remainder of the archive when
600 getNextZipEntry returns null.
601o Unit tests could fail if the source tree was checked out to a
602 directory tree containign spaces.
603 Issue: COMPRESS-205.
604 Thanks to Daniel Lowe.
605o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
606 entries from ZipArchiveInputStream.
607 Issue: COMPRESS-219.
608o CompressorStreamFactory can now be used without XZ for Java being
609 available.
610 Issue: COMPRESS-221.
611
612Changes:
613
614o Improved exception message if a zip archive cannot be read because
615 of an unsupported compression method.
616 Issue: COMPRESS-188.
617 Thanks to Harald Kuhn.
618o ArchiveStreamFactory has a setting for file name encoding that sets
619 up encoding for ZIP and TAR streams.
620 Issue: COMPRESS-192.
621 Thanks to Jukka Zitting.
622o TarArchiveEntry now has a method to verify its checksum.
623 Issue: COMPRESS-191.
624 Thanks to Jukka Zitting.
625o Split/spanned ZIP archives are now properly detected by
626 ArchiveStreamFactory but will cause an
627 UnsupportedZipFeatureException when read.
628o ZipArchiveInputStream now reads archives that start with a "PK00"
629 signature. Archives with this signatures are created when the
630 archiver was willing to split the archive but in the end only needed
631 a single segment - so didn't split anything.
632 Issue: COMPRESS-208.
633o TarArchiveEntry has a new constructor that allows setting linkFlag
634 and preserveLeadingSlashes at the same time.
635 Issue: COMPRESS-201.
636o ChangeSetPerformer has a new perform overload that uses a ZipFile
637 instance as input.
638 Issue: COMPRESS-159.
639o Garbage collection pressure has been reduced by reusing temporary
640 byte arrays in classes.
641 Issue: COMPRESS-172.
642 Thanks to Thomas Mair.
643o Can now handle zip extra field 0x5455 - Extended Timestamp.
644 Issue: COMPRESS-210.
645 Thanks to Julius Davies.
646o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
647 Issue: COMPRESS-211.
648 Thanks to Julius Davies.
649o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
650 Issue: COMPRESS-213.
651 Thanks to Julius Davies.
652o better support for unix symlinks in ZipFile entries.
653 Issue: COMPRESS-214.
654 Thanks to Julius Davies.
655o ZipFile's initialization has been improved for non-Zip64 archives.
656 Issue: COMPRESS-215.
657 Thanks to Robin Power.
658o Updated XZ for Java dependency to 1.2 as this version provides
659 proper OSGi manifest attributes.
660
661Release 1.4.1
662-------------
663
664This is a security bugfix release, see
665http://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
666
667Fixed Bugs:
668
669o Ported libbzip2's fallback sort algorithm to
670 BZip2CompressorOutputStream to speed up compression in certain
671 edge cases.
672
673Release 1.4
674-----------
675
676New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100677o COMPRESS-156: Support for the XZ format has been added.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000678
679Fixed Bugs:
680o COMPRESS-183: The tar package now allows the encoding of file names to be
681 specified and can optionally use PAX extension headers to
682 write non-ASCII file names.
683 The stream classes now write (or expect to read) archives that
684 use the platform's native encoding for file names. Apache
685 Commons Compress 1.3 used to strip everything but the lower
686 eight bits of each character which effectively only worked for
687 ASCII and ISO-8859-1 file names.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100688 This new default behavior is a breaking change.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000689o COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100690 contained non-ASCII characters.
691o COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException
692o COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
693o COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000694o COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100695 short text files were TAR archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000696o COMPRESS-164: ZipFile didn't work properly for archives using unicode extra
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100697 fields rather than UTF-8 filenames and the EFS-Flag.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000698o COMPRESS-169: For corrupt archives ZipFile would throw a RuntimeException in
699 some cases and an IOException in others. It will now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100700 consistently throw an IOException.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000701
702Changes:
703o COMPRESS-182: The tar package can now write archives that use star/GNU/BSD
704 extensions or use the POSIX/PAX variant to store numeric
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100705 values that don't fit into the traditional header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000706o COMPRESS-181: Added a workaround for a Bug some tar implementations that add
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100707 a NUL byte as first byte in numeric header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000708o COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100709 as path separators in Unicode Extra Fields.
710o COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000711o COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100712 concatenated .bz2 files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000713o COMPRESS-154: GZipCompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100714 concatenated .gz files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000715o COMPRESS-16: The tar package can now read archives that use star/GNU/BSD
716 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100717 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000718o COMPRESS-165: The tar package can now write archives that use star/GNU/BSD
719 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100720 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000721o COMPRESS-166: The tar package can now use the POSIX/PAX variant for writing
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100722 entries with names longer than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000723
724Release 1.3
725-----------
726
727Commons Compress 1.3 is the first version to require Java5 at runtime.
728
729Changes in this version include:
730
731New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100732o Support for the Pack200 format has been added. Issue: COMPRESS-142.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000733o Read-only support for the format used by the Unix dump(8) tool
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100734 has been added. Issue: COMPRESS-132.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000735
736Fixed Bugs:
737o BZip2CompressorInputStream's getBytesRead method always
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100738 returned 0.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000739o ZipArchiveInputStream and ZipArchiveOutputStream could leak
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100740 resources on some JDKs. Issue: COMPRESS-152.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000741o TarArchiveOutputStream's getBytesWritten method didn't count
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100742 correctly. Issue: COMPRESS-160.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000743
744Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100745o The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000746o The AR package now supports the BSD dialect of storing file
747 names longer than 16 chars (both reading and writing).
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100748 Issue: COMPRESS-144.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000749
750Release 1.2
751-----------
752
753New features:
754o COMPRESS-123: ZipArchiveEntry has a new method getRawName that provides the
755 original bytes that made up the name. This may allow user
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100756 code to detect the encoding.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000757o COMPRESS-122: TarArchiveEntry provides access to the flags that determine
758 whether it is an archived symbolic link, pipe or other
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100759 "uncommon" file system object.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000760
761Fixed Bugs:
762o COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100763 message for entries between 2 GByte and 4 GByte in size.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000764o COMPRESS-145: TarArchiveInputStream now detects sparse entries using the
765 oldgnu format and properly reports it cannot extract their
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100766 contents.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000767o COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100768 implementation, the code has been made more defensive.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000769o COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100770 userId or groupId. Thanks to Trejkaz.
771o COMPRESS-139: ZipFile may leak resources on some JDKs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000772o COMPRESS-125: BZip2CompressorInputStream throws IOException if
773 underlying stream returns available() == 0.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100774 Removed the check.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000775o COMPRESS-127: Calling close() on inputStream returned by
776 CompressorStreamFactory.createCompressorInputStream()
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100777 does not close the underlying input stream.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000778o COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100779 data to the stream
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000780
781Changes:
782o ZipFile now implements finalize which closes the underlying
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100783 file.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000784o COMPRESS-117: Certain tar files not recognised by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100785 ArchiveStreamFactory.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000786
787Release 1.1
788-----------
789
790New features:
791o COMPRESS-108: Command-line interface to list archive contents.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100792 Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000793o COMPRESS-109: Tar implementation does not support Pax headers
794 Added support for reading pax headers.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100795 Note: does not support global pax headers
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000796o COMPRESS-103: ZipArchiveInputStream can optionally extract data that used
797 the STORED compression method and a data descriptor.
798 Doing so in a stream is not safe in general, so you have to
799 explicitly enable the feature. By default the stream will
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100800 throw an exception if it encounters such an entry.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000801o COMPRESS-98: The ZIP classes will throw specialized exceptions if any
802 attempt is made to read or write data that uses zip features
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100803 not supported (yet).
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000804o COMPRESS-99: ZipFile#getEntries returns entries in a predictable order -
805 the order they appear inside the central directory.
806 A new method getEntriesInPhysicalOrder returns entries in
807 order of the entry data, i.e. the order ZipArchiveInputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100808 would see.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000809o The Archive*Stream and ZipFile classes now have
810 can(Read|Write)EntryData methods that can be used to check
811 whether a given entry's data can be read/written.
812 The method currently returns false for ZIP archives if an
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100813 entry uses an unsupported compression method or encryption.
814o COMPRESS-89: The ZIP classes now detect encrypted entries.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000815o COMPRESS-97: Added autodetection of compression format to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100816 CompressorStreamFactory.
817o COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000818o A new constructor of TarArchiveEntry can create entries with
819 names that start with slashes - the default is to strip
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100820 leading slashes in order to create relative path names.
821o ArchiveEntry now has a getLastModifiedDate method.
822o COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000823
824Fixed Bugs:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100825o COMPRESS-72: Move acknowledgements from NOTICE to README
826o COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
827o COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127
828o COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000829o COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100830 than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000831o COMPRESS-100: ZipArchiveInputStream will throw an exception if it detects an
832 entry that uses a data descriptor for a STORED entry since it
833 cannot reliably find the end of data for this "compression"
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100834 method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000835o COMPRESS-101: ZipArchiveInputStream should now properly read archives that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100836 use data descriptors but without the "unofficial" signature.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000837o COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100838 read properly.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000839o ArchiveInputStream has a new method getBytesRead that should
840 be preferred over getCount since the later may truncate the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100841 number of bytes read for big archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000842o COMPRESS-85: The cpio archives created by CpioArchiveOutputStream couldn't
843 be read by many existing native implementations because the
844 archives contained multiple entries with the same inode/device
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100845 combinations and weren't padded to a blocksize of 512 bytes.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000846o COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100847 more lenient when parsing extra fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000848o COMPRESS-82: cpio is terribly slow.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100849 Documented that buffered streams are needed for performance
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000850o Improved exception message if the extra field data in ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100851 archives cannot be parsed.
852o COMPRESS-17: Tar format unspecified - current support documented.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000853o COMPRESS-94: ZipArchiveEntry's equals method was broken for entries created
854 with the String-arg constructor. This lead to broken ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100855 archives if two different entries had the same hash code. Thanks to Anon Devs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000856o COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100857 the archive was truncated. Thanks to Antoni Mylka.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000858o COMPRESS-86: Tar archive entries holding the file name for names longer
859 than 100 characters in GNU longfile mode didn't properly
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100860 specify they'd be using the "oldgnu" extension.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000861o COMPRESS-83: Delegate all read and write methods in GZip stream in order to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100862 speed up operations.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000863o The ar and cpio streams now properly read and write last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100864 modified times.
865o COMPRESS-81: TarOutputStream can leave garbage at the end of the archive
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000866
867Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100868o COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//)
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000869o COMPRESS-105: Document that the name of an ZipArchiveEntry determines whether
870 an entry is considered a directory or not.
871 If you don't use the constructor with the File argument the entry's
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100872 name must end in a "/" in order for the entry to be known as a directory.
873o COMPRESS-79: Move DOS/Java time conversions into Zip utility class.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000874o COMPRESS-75: ZipArchiveInputStream does not show location in file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100875 where a problem occurred.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000876