1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3 Licensed to the Apache Software Foundation (ASF) under one
4 or more contributor license agreements.  See the NOTICE file
5 distributed with this work for additional information
6 regarding copyright ownership.  The ASF licenses this file
7 to you under the Apache License, Version 2.0 (the
8 "License"); you may not use this file except in compliance
9 with the License.  You may obtain a copy of the License at
10
11   http://www.apache.org/licenses/LICENSE-2.0
12
13 Unless required by applicable law or agreed to in writing,
14 software distributed under the License is distributed on an
15 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 KIND, either express or implied.  See the License for the
17 specific language governing permissions and limitations
18 under the License.
19-->
20
21<!--
22This file is also used by the maven-changes-plugin to generate the release notes.
23Useful ways of finding items to add to this file are:
24
251.  Add items when you fix a bug or add a feature (this makes the
26release process easy :-).
27
282.  Do a JIRA search for tickets closed since the previous release.
29
303.  Use the report generated by the maven-changelog-plugin to see all
31SVN commits. TBA how to use this with SVN.
32
33To generate the release notes from this file:
34
35mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=m.n]
36
37The <action> type attribute can be add,update,fix,remove.
38-->
39
40<document>
41  <properties>
42    <title>commons-compress</title>
43  </properties>
44  <body>
45    <release version="1.19" date="not released, yet"
46             description="Release 1.19">
47      <action type="fix" date="2018-09-07">
48        ZipArchiveInputStream could forget the compression level has
49        changed under certain circumstances.
50      </action>
51    </release>
52    <release version="1.18" date="2018-08-16"
53             description="Release 1.18">
54      <action type="fix" date="2018-06-15" due-to="DidierLoiseau">
55        The example Expander class has been vulnerable to a path
56        traversal in the edge case that happens when the target
57        directory has a sibling directory and the name of the target
58        directory is a prefix of the sibling directory's name.
59      </action>
60      <action issue="COMPRESS-456" type="fix" date="2018-06-19">
61        Changed the OSGi Import-Package to also optionally import
62        javax.crypto so encrypted archives can be read.
63      </action>
64      <action issue="COMPRESS-457" type="fix" date="2018-07-01">
65        Changed various implementations of the close method to better
66        ensure all held resources get closed even if exceptions are
67        thrown during the closing the stream.
68      </action>
69      <action issue="COMPRESS-455" type="fix" date="2018-07-01">
70        ZipArchiveInputStream can now detect the APK Signing Block
71        used in signed Android APK files and treats it as an "end of
72        archive" marker.
73      </action>
74      <action issue="COMPRESS-459" type="fix" date="2018-07-11"
75              due-to="Jens Reimann">
76        The cpio streams didn't handle archives using a multi-byte
77        encoding properly.
78      </action>
79      <action issue="COMPRESS-460" type="add" date="2018-07-28"
80              due-to="Carmi Grushko">
81        It is now possible to specify the arguments of zstd-jni's
82        ZstdOutputStream constructors via Commons Compress as well.
83      </action>
84      <action issue="COMPRESS-463" type="fix" date="2018-08-09">
85        ZipArchiveInputStream#read would silently return -1 on a
86        corrupted stored entry and even return > 0 after hitting the
87        end of the archive.
88      </action>
89      <action issue="COMPRESS-462" type="fix" date="2018-08-10">
90        ArArchiveInputStream#read would allow to read from the stream
91        without opening an entry at all.
92      </action>
93    </release>
94    <release version="1.17" date="2018-06-03"
95             description="Release 1.17">
96      <action type="fix" date="2018-02-06">
97        Removed the objenesis dependency from the pom as it is not
98        needed at all.
99      </action>
100      <action issue="COMPRESS-446" type="fix" date="2018-03-29">
101        Fixed resource leak in ParallelScatterZipCreator#writeTo.
102      </action>
103      <action type="update" date="2018-04-01" due-to="Marchenko Sergey">
104        Fixed some code examples.
105        Github Pull Request #63.
106      </action>
107      <action issue="COMPRESS-447" type="fix" date="2018-04-22">
108        Certain errors when parsing ZIP extra fields in corrupt
109        archives are now turned into ZipException, they used to
110        manifest as ArrayIndexOutOfBoundsException before.
111      </action>
112      <action issue="COMPRESS-445" type="update" date="2018-04-22"
113              due-to="Andreas Beeker">
114        The streams returned by ZipFile and most other decompressing
115        streams now provide information about the number of compressed
116        and uncompressed bytes read so far. This may be used to detect
117        a ZipBomb if the compression ratio exceeds a certain
118        threshold, for example.
119        For SevenZFile a new method returns the statistics for the
120        current entry.
121      </action>
122      <action issue="COMPRESS-443" type="add" date="2018-04-25">
123        Added a unit test that is supposed to fail if we break the
124        OSGi manifest entries again.
125      </action>
126      <action issue="COMPRESS-449" type="add" date="2018-05-02">
127        Add a new SkipShieldingInputStream class that can be used with
128        streams that throw an IOException when skip is invoked.
129      </action>
130      <action issue="COMPRESS-451" type="fix" date="2018-05-04">
131        IOUtils.copy now verifies the buffer size is bigger than 0.
132      </action>
133      <action issue="COMPRESS-452" type="add" date="2018-05-09">
134        New constructors have been added to SevenZFile that accept
135        char[]s rather than byte[]s in order to avoid a common error
136        of using the wrong encoding when creating the byte[].  This
137        change may break source compatibility for client code that
138        uses one of the constructors expecting a password and passes
139        in null as password. We recommend to change the code to use a
140        constructor without password argument.
141      </action>
142      <action issue="COMPRESS-453" type="update" date="2018-05-24">
143        Added a workaround for a bug in AdoptOpenJDK for S/390 to
144        BZip2CompressorInputStream.
145      </action>
146      <action issue="COMPRESS-454" type="fix" date="2018-05-30">
147        ZipArchiveInputStream failed to read some files with stored
148        entries using a data descriptor.
149      </action>
150    </release>
151    <release version="1.16.1" date="2018-02-10"
152             description="Release 1.16.1">
153      <action issue="COMPRESS-442" type="fix" date="2018-02-06">
154        Fixed the OSGi manifest entry for imports that has been broken
155        in 1.16.
156      </action>
157    </release>
158    <release version="1.16" date="2018-02-05"
159             description="Release 1.16">
160      <action issue="COMPRESS-423" type="add" date="2017-10-17"
161              due-to="Andre F de Miranda">
162        Add read-only support for Zstandard compression based on the
163        Zstd-jni project.
164      </action>
165      <action issue="COMPRESS-425" type="add" date="2017-10-22">
166        Added auto-detection for Zstandard compressed streams.
167      </action>
168      <action issue="COMPRESS-430" type="fix" date="2017-11-25"
169              due-to="Bruno P. Kinoshita">
170        Synchronized iteration over a synchronizedList in ParallelScatterZipCreator.
171      </action>
172      <action issue="COMPRESS-432" type="fix" date="2017-12-22">
173        ZipFile could get stuck in an infinite loop when parsing ZIP
174        archives with certain strong encryption headers.
175      </action>
176      <action issue="COMPRESS-435" type="update" date="2017-12-27"
177              due-to="BELUGA BEHR">
178        Replaces instanceof checks with a type marker in LZ77 support code.
179      </action>
180      <action issue="COMPRESS-426" type="add" date="2017-12-28">
181        Added write-support for Zstandard compression.
182      </action>
183      <action issue="COMPRESS-424" type="fix" date="2017-12-30">
184        Added improved checks to detect corrupted bzip2 streams and
185        throw the expected IOException rather than obscure
186        RuntimeExceptions.
187      </action>
188      <action type="update" date="2018-01-04">
189        Updated XZ for Java dependency to 1.8 in order to pick up bug
190        fix to LZMA2InputStream's available method.
191      </action>
192      <action type="update" date="2018-01-05" issue="COMPRESS-429"
193              due-to="Damiano Albani">
194        ZipArchiveEntry now exposes how the name or comment have been
195        determined when the entry was read.
196      </action>
197      <action issue="COMPRESS-380" type="add" date="2018-01-09"
198              due-to="Christian Marquez Grabia">
199        Added read-only DEFLATE64 support to ZIP archives and as
200        stand-alone CompressorInputStream.
201      </action>
202      <action issue="COMPRESS-438" type="update" date="2018-01-10">
203        ZipFile.getInputStream will now always buffer the stream
204        internally in order to improve read performance.
205      </action>
206      <action issue="COMPRESS-440" type="update" date="2018-01-12"
207              due-to="Dawid Weiss">
208        Speed improvement for DEFLATE64 decompression.
209      </action>
210      <action issue="COMPRESS-437" type="add" date="2018-01-13">
211        Added read-only DEFLATE64 support to 7z archives.
212      </action>
213      <action issue="COMPRESS-436" type="update" date="2018-01-14">
214        Added a few extra sanity checks for the rarer compression
215        methods used in ZIP archives.
216      </action>
217      <action issue="COMPRESS-441" type="update" date="2018-01-14">
218        Simplified the special handling for the dummy byte required by
219        zlib when using java.util.zip.Inflater.
220      </action>
221      <action type="update" date="2018-01-18" due-to="Shahab Kondri">
222        Various code cleanups.
223        Github Pull Request #61.
224      </action>
225      <action type="update" date="2018-01-29">
226        TarArchiveEntry's preserveLeadingSlashes constructor argument
227        has been renamed and can now also be used to preserve the
228        drive letter on Windows.
229      </action>
230    </release>
231    <release version="1.15" date="2017-10-17"
232             description="Release 1.15
233----------------------------------------
234
235TarArchiveOutputStream now ensures record size is 512 and block size is
236a multiple of 512 as any other value would create invalid tar
237archives. This may break compatibility for code that deliberately
238wanted to create such files.">
239      <action issue="COMPRESS-394" type="fix" date="2017-05-22">
240        Make sure "version needed to extract" in local file header and
241        central directory of a ZIP archive agree with each other.
242        Also ensure the version is set to 2.0 if DEFLATE is used.
243      </action>
244      <action issue="COMPRESS-395" type="fix" date="2017-05-22">
245        Don't use a data descriptor in ZIP archives when copying a raw
246        entry that already knows its size and CRC information.
247      </action>
248      <action issue="COMPRESS-413" type="fix" date="2017-05-22" due-to="Simon Spero">
249        Travis build redundantly repeats compilation and tests redundantly #43.
250      </action>
251      <action issue="COMPRESS-397" type="add" date="2017-05-22">
252        Added magic MANIFEST entry Automatic-Module-Name so the module
253        name will be org.apache.commons.compress when the jar is used
254        as an automatic module in Java9.
255      </action>
256      <action issue="COMPRESS-396" type="fix" date="2017-05-23">
257        The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
258        Java.
259      </action>
260      <action issue="COMPRESS-406" type="fix" date="2017-06-12"
261              due-to="Simon Spero">
262        BUILDING.md now passes the RAT check.
263      </action>
264      <action issue="COMPRESS-405" type="add" date="2017-06-15"
265              due-to="Simon Spero ">
266        Added a new utility class FixedLengthBlockOutputStream that
267        can be used to ensure writing always happens in blocks of a
268        given size.
269      </action>
270      <action issue="COMPRESS-412" type="fix" date="2017-06-17"
271              due-to="Michael Hausegger">
272        Made sure ChecksumCalculatingInputStream receives valid
273        checksum and input stream instances via the constructor.
274      </action>
275      <action issue="COMPRESS-407" type="fix" date="2017-06-24"
276              due-to="Simon Spero ">
277        TarArchiveOutputStream now verifies the block and record sizes
278        specified at construction time are compatible with the tar
279        specification. In particular 512 is the only record size
280        accepted and the block size must be a multiple of 512.
281        At the same time the default block size in
282        TarArchiveOutputStream has been changed from 10240 to 512
283        bytes.
284      </action>
285      <action issue="COMPRESS-400" type="add" date="2017-06-26"
286              due-to="Simon Spero ">
287        It is now possible to specify/read custom PAX headers when
288        writing/reading tar archives.
289      </action>
290      <action issue="COMPRESS-415" type="fix" date="2017-06-27">
291        Fixed class names of CpioArchiveEntry and
292        CpioArchiveInputStream in various Javadocs.
293      </action>
294      <action issue="COMPRESS-416" type="fix" date="2017-07-04"
295              due-to="Simon Spero ">
296        The code of the extended timestamp zip extra field incorrectly
297        assumed the time was stored as unsigned 32-bit int and thus
298        created incorrect results for years after 2037.
299      </action>
300      <action issue="COMPRESS-410" type="fix" date="2017-07-05"
301              due-to="Simon Spero ">
302        Removed ZipEncoding code that became obsolete when we started
303        to require Java 5 as baseline long ago.
304      </action>
305      <action issue="COMPRESS-417" type="fix" date="2017-07-19">
306        The tar package will no longer try to parse the major and
307        minor device numbers unless the entry represents a character
308        or block special file.
309      </action>
310      <action issue="COMPRESS-421" type="fix" date="2017-10-06"
311              due-to="Roel Spilker">
312        When reading tar headers with name fields containing embedded
313        NULs, the name will now be terminated at the first NUL byte.
314      </action>
315      <action issue="COMPRESS-409" type="fix" date="2017-10-08">
316        Simplified TarArchiveOutputStream by replacing the internal
317        buffering with new class FixedLengthBlockOutputStream.
318      </action>
319    </release>
320    <release version="1.14" date="2017-05-14"
321             description="Release 1.14">
322      <action issue="COMPRESS-378" type="fix" date="2017-01-09">
323        SnappyCompressorInputStream slides the window too early
324        leading to ArrayIndexOutOfBoundsExceptions for some streams.
325      </action>
326      <action issue="COMPRESS-246" type="add" date="2017-01-10">
327        Added write support for Snappy.
328      </action>
329      <action issue="COMPRESS-358" type="update" date="2017-01-10">
330        The blocksize for FramedSnappyCompressorInputStream can now be
331        configured as some IWA files seem to be using blocks larger
332        than the default 32k.
333      </action>
334      <action issue="COMPRESS-379" type="fix" date="2017-01-15"
335              due-to="Guillaume Boué">
336        ZipArchiveEntry#isUnixSymlink now only returns true if the
337        corresponding link flag is the only file-type flag set.
338      </action>
339      <action issue="COMPRESS-271" type="add" date="2017-02-07">
340        Added support for LZ4 (block and frame format).
341      </action>
342      <action type="update" date="2017-02-15" due-to="Thomas Meyer">
343        BZip2CompressorInputstream now uses BitInputStream internally.
344        Pull Request #13.
345      </action>
346      <action type="fix" date="2017-03-29" due-to="Daniel Collin">
347        Fixed an integer overflow in CPIO's CRC calculation.
348        Pull Request #17.
349      </action>
350      <action issue="COMPRESS-385" type="add" date="2017-04-18">
351        Add static detect(InputStream in) to CompressorStreamFactory
352        and ArchiveStreamFactory
353      </action>
354      <action issue="COMPRESS-387" type="fix" date="2017-04-18">
355        Make unit tests work on Windows paths with spaces in their names.
356      </action>
357      <action issue="COMPRESS-388" type="update" date="2017-04-25"
358              due-to="Zbynek Vyskovsky">
359        Improved performance for concurrent reads from ZipFile when
360        reading from a file.
361      </action>
362      <action issue="COMPRESS-382" type="add" date="2017-04-25"
363              due-to="Tim Allison">
364        Added a way to limit amount of memory ZCompressorStream may
365        use.
366      </action>
367      <action issue="COMPRESS-386" type="add" date="2017-04-25"
368              due-to="Tim Allison">
369        Added a way to limit amount of memory ZCompressorStream may
370        use.
371      </action>
372      <action issue="COMPRESS-382" type="add" date="2017-04-25"
373              due-to="Tim Allison">
374        Added a way to limit amount of memory LZMACompressorStream and
375        XZCompressorInputStream may use.
376      </action>
377      <action issue="COMPRESS-389" type="fix" date="2017-04-26">
378        Internal location pointer in ZipFile could get incremented
379        even if nothing had been read.
380      </action>
381      <action issue="COMPRESS-392" type="add" date="2017-05-02" due-to="Philippe Mouawad">
382        Add Brotli decoder based on the Google Brotli library.
383      </action>
384      <action issue="COMPRESS-390" type="add" date="2017-05-04"
385              due-to="Zbynek Vyskovsky">
386        ZipEntry now exposes its data offset.
387      </action>
388      <action issue="COMPRESS-393" type="fix" date="2017-05-07">
389        LZMACompressorOutputStream#flush would throw an exception
390        rather than be the NOP it promised to be.
391      </action>
392      <action issue="COMPRESS-391" type="add" date="2017-05-11"
393              due-to="Zbynek Vyskovsky">
394        Using ZipArchiveEntry's setAlignment it is now possible to
395        ensure the data offset of an entry starts at a file position
396        that at word or page boundaries.
397        A new extra field has been added for this purpose.
398      </action>
399    </release>
400    <release version="1.13" date="2016-12-29"
401             description="Release 1.13 - API compatible to 1.12 but requires Java 7 at runtime.">
402      <action issue="COMPRESS-360" type="update" date="2016-06-25" dev="ggregory">
403        Update Java requirement from 6 to 7.
404      </action>
405      <action issue="COMPRESS-363" type="fix" date="2016-07-01">
406        BitInputStream could return bad results when overflowing
407        internally - if two consecutive reads tried to read more than
408        64 bits.
409      </action>
410      <action issue="COMPRESS-366" type="update" date="2016-10-07">
411        Clarified which TarArchiveEntry methods are useless for
412        entries read from an archive.
413      </action>
414      <action issue="COMPRESS-364" type="fix" date="2016-10-07"
415              due-to="Mike Mole">
416        ZipArchiveInputStream.closeEntry does not properly advance to
417        next entry if there are junk bytes at end of data section
418      </action>
419      <action issue="COMPRESS-327" type="add" date="2016-10-12">
420        SevenZFile, SevenZOutputFile, ZipFile and
421        ZipArchiveOutputStream can now work on non-file resources if
422        they can be accessed via SeekableByteChannel.
423      </action>
424      <action issue="COMPRESS-368" type="add" date="2016-11-15">
425        Allow compressor extensions through a standard JRE ServiceLoader.
426      </action>
427      <action issue="COMPRESS-369" type="add" date="2016-11-15">
428        Allow archive extensions through a standard JRE ServiceLoader.
429      </action>
430      <action issue="COMPRESS-373" type="add" date="2016-11-29">
431        Add write support for the legacy LZMA format, this requires XZ
432        for Java 1.6.
433      </action>
434      <action issue="COMPRESS-374" type="add" date="2016-11-29">
435        Add write support for the legacy LZMA stream to 7z, this
436        requires XZ for Java 1.6.
437      </action>
438      <action issue="COMPRESS-375" type="add" date="2016-12-04"
439              due-to="Plamen Totev">
440        Allow the clients of ParallelScatterZipCreator to provide
441        ZipArchiveEntryRequestSupplier.
442      </action>
443      <action issue="COMPRESS-367" type="fix" date="2016-12-09"
444              due-to="Mike Mole">
445        ZipArchiveInputStream now throws an Exception if it encounters
446        a broken ZIP archive rather than signaling end-of-archive.
447      </action>
448      <action issue="COMPRESS-377" type="fix" date="2016-12-20">
449        ScatterZipOutputStream didn't close the StreamCompressor
450        causing a potential resource leak.
451      </action>
452      <action issue="COMPRESS-372" type="add" date="2016-12-20">
453        Add a version-independent link to the API docs of the latest
454        release.
455      </action>
456    </release>
457    <release version="1.12" date="2016-06-21"
458             description="Release 1.12 - API compatible to 1.11 but requires Java 6 at runtime.
459------------
460
461
462
463Release 1.12 changes the behavior of BZip2CompressorOutputStream's
464finalize method so that it no longer invokes finish. This is going to
465break code that relied on the finalizer to clean up an unfinished
466stream. The code will need to be changed to call finish or
467close itself. Note that a finalizer is not guaranteed to run, so
468the feature was not 100% effective in any case.
469">
470      <action issue="COMPRESS-349" type="update" date="2016-04-09" dev="ggregory">
471        Update requirement from Java 5 to 6.
472      </action>
473      <action issue="COMPRESS-350" type="update" date="2016-04-09" dev="ggregory">
474        TarArchiveEntry wastefully allocates empty arrays.
475      </action>
476      <action issue="COMPRESS-348" type="fix" date="2016-04-24">
477        SevenZFile.read() throws an IllegalStateException for empty entries.
478      </action>
479      <action issue="COMPRESS-353" type="update" date="2016-05-06" dev="ggregory">
480        Javadoc for BZip2CompressorInputStream(InputStream, boolean) should refer to IOEx, not NPE.
481      </action>
482      <action issue="COMPRESS-354" type="update" date="2016-05-16">
483        PureJavaCrc32C in the snappy package is now final so it is now
484        safe to call a virtual method inside the constructor.
485      </action>
486      <action issue="COMPRESS-355" type="fix" date="2016-05-20"
487              due-to="Jeremy Gustie">
488        TarArchiveInputStream failed to parse PAX headers that
489        included blank lines.
490      </action>
491      <action issue="COMPRESS-356" type="fix" date="2016-05-20"
492              due-to="Jeremy Gustie">
493        TarArchiveInputStream failed to parse PAX headers whose tar
494        entry name ended with a slash.
495      </action>
496      <action issue="COMPRESS-352" type="add" date="2016-05-22">
497        FramedSnappyCompressorInputStream now supports the dialect of
498        Snappy used by the IWA files contained within the zip archives
499        used in Apple's iWork 13 files.
500      </action>
501      <action issue="COMPRESS-351" type="update" date="2016-06-07">
502        ZipArchiveInputStream and CpioArchiveInputStream could throw
503        exceptions who's messages contained potentially corrupt entry
504        names read from a broken archive. They will now sanitize the
505        names by replacing unprintable characters and restricting the
506        length to 255 characters.
507      </action>
508      <action issue="COMPRESS-357" type="update" date="2016-06-15">
509        BZip2CompressorOutputStream no longer tries to finish the
510        output stream in finalize. This is a breaking change for code
511        that relied on the finalizer.
512      </action>
513    </release>
514    <release version="1.11" date="2016-04-06"
515             description="Release 1.11">
516      <action issue="COMPRESS-347" type="add" date="2016-03-23">
517        TarArchiveInputStream now supports reading global PAX headers.
518      </action>
519      <action issue="COMPRESS-346" type="add" date="2016-03-23">
520        The PAX headers for sparse entries written by star are now
521        applied.
522      </action>
523      <action issue="COMPRESS-345" type="add" date="2016-03-23">
524        GNU sparse files using one of the PAX formats are now
525        detected, but cannot be extracted.
526      </action>
527      <action issue="COMPRESS-344" type="fix" date="2016-03-22">
528        ArArchiveInputStream can now read GNU extended names that are
529        terminated with a NUL byte rather than a linefeed.
530      </action>
531      <action issue="COMPRESS-341" type="add" date="2016-03-20">
532        New method SevenZFile.getEntries can be used to list the
533        contents of a 7z archive.
534      </action>
535      <action issue="COMPRESS-343" type="fix" date="2016-03-17"
536              due-to="Rene Preissel">
537        Native Memory Leak in Sevenz-DeflateDecoder.
538      </action>
539      <action type="add" date="2016-03-05"
540              due-to="Matt Hovey">
541        When using Zip64Mode.Always also use ZIP64 extensions inside
542        the central directory.
543        GitHub Pull Request #10
544      </action>
545      <action issue="COMPRESS-340" type="fix" date="2016-02-24"
546              due-to="Dawid Weiss">
547        SevenZFile will now only try to drain an entry's content when
548        moving on to the next entry if data is read from the next
549        entry. This should improve performance for applications that
550        try to skip over entries.
551      </action>
552      <action issue="COMPRESS-336" type="fix" date="2016-02-14">
553        file names of tar archives using the xstar format are now
554        parsed properly.
555      </action>
556      <action issue="COMPRESS-335" type="fix" date="2016-02-05">
557        checksums of tars that pad the checksum field to the left are
558        now calculated properly.
559      </action>
560      <action issue="COMPRESS-334" type="fix" date="2016-02-05"
561              due-to="Jeremy Gustie">
562        ArArchiveInputStream failed to read past the first entry when
563        BSD long names have been used.
564      </action>
565      <action issue="COMPRESS-333" type="fix" date="2016-02-03" due-to="Dawid Weiss">
566        Added buffering for random access which speeds up 7Z support.
567      </action>
568      <action issue="COMPRESS-331" type="fix" date="2016-01-31">
569        The checksum validation of TararchiveEntry is now as strict as
570        the validation of GNU tar, which eliminates a few cases of
571        false positives of ArchiveStreamFactory.
572        This behavior is a breaking change since the check has become
573        more strict but any archive that fails the checksum test now
574        would also fail it when extracted with other tools and must be
575        considered an invalid archive.
576      </action>
577      <action issue="COMPRESS-323" type="add" date="2016-01-29">
578        ZipFile.getRawInputStream() is now part of the public API
579      </action>
580      <action issue="COMPRESS-332" type="fix" date="2016-01-29">
581        SnappyCompressorInputStream and
582        FramedSnappyCompressorInputStream returned 0 at the end of the
583        stream under certain circumstances.
584      </action>
585      <action type="add" date="2016-01-27" due-to="Jason van Zyl">
586        Allow byte-for-byte replication of Zip entries.
587        GitHub Pull Request #6.
588      </action>
589      <action issue="COMPRESS-328" type="add" date="2016-01-15">
590        TarArchiveEntry's preserveLeadingSlashes is now a property and used
591        on later calls to setName, too.
592        This behavior is a breaking change.
593      </action>
594      <action issue="COMPRESS-326" type="fix" date="2015-10-24">
595        Adjusted unit test to updates in Java8 and later that change
596        the logic of ZipEntry#getTime.
597      </action>
598      <action issue="COMPRESS-324" type="fix" date="2015-10-06">
599        TarArchiveOutputStream will now recognize GNU long name and
600        link entries even if the special entry has a different name
601        than GNU tar uses itself.  This seems to be the case for
602        archives created by star.
603      </action>
604      <action issue="COMPRESS-321" type="fix" date="2015-08-22">
605        ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
606        fields are read from the central directory.
607      </action>
608      <action type="add" date="2015-11-11" due-to="Sören Glimm">
609        Added read-only support for bzip2 compression used inside of
610        ZIP archives.
611        GitHub Pull Request #4.
612      </action>
613    </release>
614
615    <release version="1.10" date="2015-08-18"
616             description="Release 1.10
617------------
618
619
620
621Release 1.10 moves the former
622org.apache.commons.compress.compressors.z._internal_ package which
623breaks backwards compatibility for code which used the old package.
624This also changes the superclass of ZCompressorInputStream.
625">
626
627      <action issue="COMPRESS-317" type="fix" date="2015-06-09"
628              due-to="Lucas Werkmeister">
629        ArrayIndexOutOfBoundsException when ZIP extra fields are read
630        and the entry contains an UnparseableExtraField.
631      </action>
632      <action issue="COMPRESS-316" type="add" date="2015-05-23"
633              due-to="Nick Burch">
634        CompressorStreamFactory can now auto-detect DEFLATE streams
635        with ZLIB header.
636      </action>
637      <action issue="COMPRESS-314" type="fix" date="2015-05-08">
638        TarArchiveInputStream can now read entries with group or
639        user ids &gt; 0x80000000.
640      </action>
641      <action issue="COMPRESS-315" type="fix" date="2015-05-06">
642        TarArchiveOutputStream can now write entries with group or
643        user ids &gt; 0x80000000.
644      </action>
645      <action issue="COMPRESS-313" type="add" date="2015-03-30">
646        CompressorStreamFactory can now auto-detect LZMA streams.
647      </action>
648      <action issue="COMPRESS-312" type="fix" date="2015-03-28">
649        TarArchiveEntry's constructor with a File and a String arg
650        didn't normalize the name.
651      </action>
652      <action issue="COMPRESS-308" type="fix" date="2015-02-20">
653        ZipEncodingHelper no longer reads system properties directly
654        to determine the default charset.
655      </action>
656      <action issue="COMPRESS-309" type="fix" date="2015-02-20">
657        BZip2CompressorInputStream#read would return -1 when asked to
658        read 0 bytes.
659      </action>
660      <action issue="COMPRESS-306" type="fix" date="2015-02-17">
661        ArchiveStreamFactory fails to pass on the encoding when creating some streams.
662        * ArjArchiveInputStream
663        * CpioArchiveInputStream
664        * DumpArchiveInputStream
665        * JarArchiveInputStream
666        * TarArchiveInputStream
667        * JarArchiveOutputStream
668      </action>
669      <action issue="COMPRESS-302" type="fix" date="2015-02-16">
670        Restore immutability/thread-safety to ArchiveStreamFactory.
671        The class is now immutable provided that the method setEntryEncoding is not used.
672        The class is thread-safe.
673      </action>
674      <action issue="COMPRESS-303" type="fix" date="2015-02-16">
675        Restore immutability/thread-safety to CompressorStreamFactory.
676        The class is now immutable provided that the method setDecompressConcatenated is not used.
677        The class is thread-safe.
678      </action>
679      <action issue="COMPRESS-298" type="fix" date="2015-01-20">
680        SevenZFile now throws the specific PasswordRequiredException
681        when it encounters an encrypted stream but no password has
682        been specified.
683      </action>
684      <action issue="COMPRESS-290" type="fix" date="2015-01-13"
685              due-to="Kristian Rosenvold">
686        Improved error message when tar encounters a groupId that is
687        too big to write without using the STAR or POSIX format.
688      </action>
689      <action issue="COMPRESS-296" type="add" date="2015-01-10"
690              due-to="Kristian Rosenvold">
691        Added support for parallel compression. This low-level API allows
692        a client to build a zip/jar file by using the class
693        org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
694
695        Zip documentation updated with further notes about parallel features.
696
697        Please note that some aspects of jar creation need to be
698        handled by client code and is not part of commons-compress for this
699        release.
700      </action>
701      <action type="add" date="2014-12-24"
702              due-to="Kristian Rosenvold">
703        Cut overall object instantiation in half by changing file
704        header generation algorithm, for a 10-15 percent performance
705        improvement.
706
707        Also extracted two private methods createLocalFileHeader
708        and createCentralFileHeader in ZipArchiveOutputStream.
709        These may have some interesting additional usages in the
710        near future.
711      </action>
712      <action issue="COMPRESS-297" type="fix" date="2014-12-22">
713        ZipFile logs a warning in its finalizer when its constructor
714        has thrown an exception reading the file - for example if the
715        file doesn't exist.
716      </action>
717      <action issue="COMPRESS-295" type="add" date="2014-12-18"
718              due-to="Kristian Rosenvold">
719        New methods in ZipArchiveOutputStream and ZipFile allows
720        entries to be copied from one archive to another without
721        having to re-compress them.
722      </action>
723      <action type="update" date="2014-10-28"
724              due-to="Damjan Jovanovic">
725        Moved the package
726        org.apache.commons.compress.compressors.z._internal_ to
727        org.apache.commons.compress.compressors.lzw and made it part
728        of the API that is officially supported.  This will break
729        existing code that uses the old package.
730      </action>
731    </release>
732
733    <release version="1.9" date="2014-10-09"
734             description="Release 1.9">
735      <action type="add" date="2014-06-14" issue="COMPRESS-263"
736              due-to="Matthias Stevens">
737        Added support for DEFLATE streams without any gzip framing.
738      </action>
739      <action type="fix" date="2014-08-14" issue="COMPRESS-287">
740        When reading 7z files unknown file properties and properties
741        of type kDummy are now ignored.
742      </action>
743      <action type="fix" date="2014-08-21" issue="COMPRESS-286">
744        Expanding 7z archives using LZMA compression could cause an
745        EOFException.
746      </action>
747      <action type="update" date="2014-08-31" issue="COMPRESS-285">
748        Checking for XZ for Java may be expensive.  The result will
749        now be cached outside of an OSGi environment.  You can use the
750        new XZUtils#setCacheXZAvailability to overrride this default
751        behavior.
752      </action>
753      <action type="fix" date="2014-09-19" issue="COMPRESS-289"
754              due-to="Bob Robertson">
755        Long-Name and -link or PAX-header entries in TAR archives
756        always had the current time as last modfication time, creating
757        archives that are different at the byte level each time an
758        archive was built.
759      </action>
760    </release>
761
762    <release version="1.8.1" date="2014-05-14"
763             description="Release 1.8.1">
764      <action type="update" date="2014-03-19">
765        The dependency on org.tukaani:xz is now marked as optional.
766      </action>
767      <action type="fix" date="2014-03-28" issue="COMPRESS-270">
768        The snappy, ar and tar inputstreams might fail to read from a
769        non-buffered stream in certain cases.
770      </action>
771      <action type="add" date="2014-04-12" issue="COMPRESS-272">
772        CompressorStreamFactory can now auto-detect Unix compress
773        (".Z") streams.
774      </action>
775      <action type="fix" date="2014-04-12" issue="COMPRESS-277">
776        IOUtils#skip might skip fewer bytes than requested even though
777        more could be read from the stream.
778      </action>
779      <action type="fix" date="2014-04-13" issue="COMPRESS-276">
780        ArchiveStreams now validate there is a current entry before
781        reading or writing entry data.
782      </action>
783      <action type="fix" date="2014-04-13">
784        ArjArchiveInputStream#canReadEntryData tested the current
785        entry of the stream rather than its argument.
786      </action>
787      <action type="fix" date="2014-04-13" issue="COMPRESS-274">
788        ChangeSet#delete and deleteDir now properly deal with unnamed
789        entries.
790      </action>
791      <action type="fix" date="2014-04-18" issue="COMPRESS-273">
792        Added a few null checks to improve robustness.
793      </action>
794      <action type="fix" date="2014-04-19" issue="COMPRESS-278">
795        TarArchiveInputStream failed to read archives with empty
796        gid/uid fields.
797      </action>
798      <action type="fix" date="2014-04-27" issue="COMPRESS-279">
799        TarArchiveInputStream now again throws an exception when it
800        encounters a truncated archive while reading from the last
801        entry.
802      </action>
803      <action type="fix" date="2014-05-02" issue="COMPRESS-280"
804              due-to="BELUGA BEHR">
805        Adapted TarArchiveInputStream#skip to the modified
806        IOUtils#skip method.
807      </action>
808    </release>
809    <release version="1.8" date="2014-03-12"
810             description="Release 1.8">
811      <action issue="COMPRESS-253" type="fix" date="2014-01-20">
812        BZip2CompressorInputStream read fewer bytes than possible from
813        a truncated stream.
814      </action>
815      <action issue="COMPRESS-253" type="fix" date="2014-01-22">
816        SevenZFile failed claiming the dictionary was too large when
817        archives used LZMA compression for headers and content and
818        certain non-default dictionary sizes.
819      </action>
820      <action issue="COMPRESS-259" type="fix" date="2014-01-24">
821        CompressorStreamFactory.createCompressorInputStream with
822        explicit compression did not honor decompressConcatenated
823      </action>
824      <action issue="COMPRESS-260" type="add" date="2014-02-20">
825        GzipCompressorInputStream now provides access to the same
826        metadata that can be provided via GzipParameters when writing
827        a gzip stream.
828      </action>
829      <action issue="COMPRESS-262" type="fix" date="2014-02-21">
830        TarArchiveInputStream will now read archives created by tar
831        implementations that encode big numbers by not adding a
832        trailing NUL.
833      </action>
834      <action issue="COMPRESS-264" type="fix" date="2014-02-21">
835        ZipArchiveInputStream would return NUL bytes for the first 512
836        bytes of a STORED entry if it was the very first entry of the
837        archive.
838      </action>
839      <action issue="COMPRESS-265" type="fix" date="2014-02-22">
840        When writing PAX/POSIX headers for TAR entries with
841        backslashes or certain non-ASCII characters in their name
842        TarArchiveOutputStream could fail.
843      </action>
844      <action issue="COMPRESS-267" type="fix" date="2014-02-22">
845        ArchiveStreamFactory now throws a StreamingNotSupported - a
846        new subclass of ArchiveException - if it is asked to read from
847        or write to a stream and Commons Compress doesn't support
848        streaming for the format.  This currently only applies to the
849        7z format.
850      </action>
851      <action issue="COMPRESS-266" type="add" date="2014-02-25">
852        SevenZOutputFile now supports chaining multiple
853        compression/encryption/filter methods and passing options to
854        the methods.
855      </action>
856      <action issue="COMPRESS-261" type="add" date="2014-02-26">
857        The (compression) method(s) can now be specified per entry in
858        SevenZOutputFile.
859      </action>
860      <action issue="COMPRESS-258" type="add" date="2014-02-26">
861        SevenZArchiveEntry "knows" which method(s) have been used to
862        write it to the archive.
863      </action>
864      <action type="add" date="2014-02-28">
865        The 7z package now supports the delta filter as method.
866      </action>
867      <action issue="COMPRESS-257" type="add" date="2014-03-03">
868        The 7z package now supports BCJ filters for several platforms.
869        You will need a version &gt;= 1.5 of XZ for Java to read archives
870        using BCJ, though.
871      </action>
872    </release>
873    <release version="1.7" date="2014-01-20"
874             description="Release 1.7">
875      <action issue="COMPRESS-241" type="fix" date="2013-10-27">
876        SevenZOutputFile#closeArchiveEntry throws an exception when
877        using LZMA2 compression on Java8.
878      </action>
879      <action issue="COMPRESS-147" type="add" date="2013-11-07"
880              due-to="BELUGA BEHR">
881        Read-Only support for Snappy compression.
882      </action>
883      <action issue="COMPRESS-244" type="fix" date="2013-11-27"
884              due-to="Nico Kruber">
885        7z reading of big 64bit values could be wrong.
886      </action>
887      <action issue="COMPRESS-243" type="add" date="2013-11-30"
888              due-to="Damjan Jovanovic">
889        Read-Only support for .Z compressed files.
890      </action>
891      <action type="add" date="2013-12-06" due-to="Damjan Jovanovic">
892        ZipFile and ZipArchiveInputStream now support reading entries compressed using the
893        SHRINKING method.
894      </action>
895      <action issue="COMPRESS-245" type="fix" date="2013-12-06">
896        TarArchiveInputStream could fail to read an archive completely.
897      </action>
898      <action issue="COMPRESS-242" type="fix" date="2013-12-08">
899        The time-setters in X5455_ExtendedTimestamp now set the
900        corresponding flags explicitly - i.e. they set the bit if the
901        valus is not-null and reset it otherwise.  This may cause
902        incompatibilities if you use setFlags to unset a bit and later
903        set the time to a non-null value - the flag will now be set.
904      </action>
905      <action issue="COMPRESS-250" type="add" date="2013-12-16" due-to="Emmanuel Bourg">
906        GzipCompressorOutputStream now supports setting the compression level and the header metadata
907        (filename, comment, modification time, operating system and extra flags)
908      </action>
909      <action issue="COMPRESS-115" type="add" date="2013-12-19" due-to="Emmanuel Bourg">
910        ZipFile and ZipArchiveInputStream now support reading entries compressed using the IMPLODE method.
911      </action>
912      <action issue="COMPRESS-252" type="fix" date="2013-12-20">
913        SevenZOutputFile would create invalid archives if more than
914        six empty files or directories were included.
915      </action>
916      <action type="add" date="2013-12-20">
917        ZipFile and the 7z file classes now implement Closeable and
918        can be used in try-with-resources constructs.
919      </action>
920    </release>
921    <release version="1.6" date="2013-10-26"
922             description="Release 1.6">
923      <action type="fix" date="2013-04-25" issue="COMPRESS-223"
924              due-to="Jeremy Gustie">
925        TarBuffer.tryToConsumeSecondEOFRecord could throw a
926        NullPointerException
927      </action>
928      <action type="add" date="2013-05-07" issue="COMPRESS-54"
929              due-to="Damjan Jovanovic">
930        Added support for 7z archives.  Most compression algorithms
931        can be read and written, LZMA and encryption are only
932        supported when reading.
933      </action>
934      <action type="add" date="2013-05-19" issue="COMPRESS-226"
935              due-to="Damjan Jovanovic">
936        Added read-only support for ARJ archives that don't use
937        compression.
938      </action>
939      <action type="fix" date="2013-05-26" issue="COMPRESS-228">
940        Parsing of zip64 extra fields has become more lenient in order
941        to be able to read archives created by DotNetZip and maybe
942        other archivers as well.
943      </action>
944      <action type="fix" date="2013-06-03" issue="COMPRESS-229"
945              due-to="Christoph Gysin">
946        TAR will now properly read the names of symbolic links with
947        long names that use the GNU variant to specify the long file
948        name.
949      </action>
950      <action type="fix" date="2013-06-04" issue="COMPRESS-227">
951        ZipFile#getInputStream could return null if the archive
952        contained duplicate entries.
953        The class now also provides two new methods to obtain all
954        entries of a given name rather than just the first one.
955      </action>
956      <action type="update" date="2013-07-08" issue="COMPRESS-232"
957              due-to="BELUGA BEHR">
958        Readabilty patch to TarArchiveInputStream.
959      </action>
960      <action type="update" date="2013-08-08" issue="COMPRESS-234"
961              due-to="BELUGA BEHR">
962        Performance improvements to TarArchiveInputStream, in
963        particular to the skip method.
964      </action>
965      <action type="fix" date="2013-08-08" issue="COMPRESS-236"
966              due-to="Andrew Duffy">
967        CpioArchiveInputStream failed to read archives created by
968        Redline RPM.
969      </action>
970      <action type="fix" date="2013-08-09" issue="COMPRESS-237"
971              due-to="Emmanuel Bourg">
972        TarArchiveOutputStream now properly handles link names that
973        are too long to fit into a traditional TAR header.
974      </action>
975      <action type="add" date="2013-08-10">
976        DumpArchiveInputStream now supports an encoding parameter that
977        can be used to specify the encoding of file names.
978      </action>
979      <action type="add" date="2013-08-10">
980        The CPIO streams now support an encoding parameter that can be
981        used to specify the encoding of file names.
982      </action>
983      <action type="add" date="2013-09-22" issue="COMPRESS-111">
984        Read-only support for LZMA standalone compression has been added.
985      </action>
986      <action type="fix" date="2013-10-04" issue="COMPRESS-239">
987        The auto-detecting create*InputStream methods of Archive and
988        CompressorStreamFactory could fail to detect the format of
989        blocking input streams.
990      </action>
991      <action type="fix" date="2013-10-21" issue="COMPRESS-240"
992              due-to="Gary Gregory">
993        ZipEncodingHelper.isUTF8(String) does not check all UTF-8 aliases.
994      </action>
995    </release>
996    <release version="1.5" date="2013-03-14"
997             description="Release 1.5">
998      <action type="fix" date="2012-02-19" issue="COMPRESS-218"
999              due-to="Gili">
1000        Typo in CompressorStreamFactory Javadoc
1001      </action>
1002      <action type="update" date="2012-07-08" issue="COMPRESS-188"
1003              due-to="Harald Kuhn">
1004        Improved exception message if a zip archive cannot be read
1005        because of an unsupported compression method.
1006      </action>
1007      <action type="update" date="2012-07-07" issue="COMPRESS-192"
1008              due-to="Jukka Zitting">
1009        ArchiveStreamFactory has a setting for file name encoding that
1010        sets up encoding for ZIP and TAR streams.
1011      </action>
1012      <action type="fix" date="2012-07-07" issue="COMPRESS-191"
1013              due-to="Jukka Zitting">
1014        ArchiveStreamFactory's tar stream detection created false
1015        positives for AIFF files.
1016      </action>
1017      <action type="update" date="2012-07-07" issue="COMPRESS-191"
1018              due-to="Jukka Zitting">
1019        TarArchiveEntry now has a method to verify its checksum.
1020      </action>
1021      <action type="fix" date="2012-12-27" issue="COMPRESS-199"
1022              due-to="Jukka Zitting">
1023        XZ for Java didn't provide an OSGi bundle.  Compress'
1024        dependency on it has now been marked optional so Compress
1025        itself can still be used in an OSGi context.
1026      </action>
1027      <action type="fix" date="2012-12-27" issue="COMPRESS-200"
1028              due-to="Christian Schlichtherle">
1029        When specifying the encoding explicitly TarArchiveOutputStream
1030        would write unreadable names in GNU mode or even cause errors
1031        in POSIX mode for file names longer than 66 characters.
1032      </action>
1033      <action type="fix" date="2012-12-27" issue="COMPRESS-203">
1034        Writing TAR PAX headers failed if the generated entry name
1035        ended with a "/".
1036      </action>
1037      <action type="fix" date="2012-12-28" issue="COMPRESS-189"
1038              due-to="Daniel Lowe">
1039        ZipArchiveInputStream sometimes failed to provide input to the
1040        Inflater when it needed it, leading to reads returning 0.
1041      </action>
1042      <action type="update" date="2013-01-01">
1043        Split/spanned ZIP archives are now properly detected by
1044        ArchiveStreamFactory but will cause an
1045        UnsupportedZipFeatureException when read.
1046      </action>
1047      <action type="update" date="2013-01-01" issue="COMPRESS-208">
1048        ZipArchiveInputStream now reads archives that start with a
1049        "PK00" signature.  Archives with this signatures are created
1050        when the archiver was willing to split the archive but in the
1051        end only needed a single segment - so didn't split anything.
1052      </action>
1053      <action type="update" date="2013-01-01" issue="COMPRESS-201">
1054        TarArchiveEntry has a new constructor that allows setting
1055        linkFlag and preserveLeadingSlashes at the same time.
1056      </action>
1057      <action type="update" date="2013-01-01" issue="COMPRESS-159">
1058        ChangeSetPerformer has a new perform overload that uses a
1059        ZipFile instance as input.
1060      </action>
1061      <action type="fix" date="2013-01-04" issue="COMPRESS-212">
1062        TarArchiveInputStream ignored the encoding for GNU long name
1063        entries.
1064      </action>
1065      <action type="update" date="2013-01-05" issue="COMPRESS-172"
1066              due-to="Thomas Mair">
1067        Garbage collection pressure has been reduced by reusing
1068        temporary byte arrays in classes.
1069      </action>
1070        <action type="update" date="2013-01-08" issue="COMPRESS-210"
1071                due-to="Julius Davies">
1072          Can now handle zip extra field 0x5455 - Extended Timestamp.
1073        </action>
1074        <action type="update" date="2013-01-07" issue="COMPRESS-211"
1075                due-to="Julius Davies">
1076          handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
1077        </action>
1078        <action type="update" date="2013-01-07" issue="COMPRESS-213"
1079                due-to="Julius Davies">
1080            ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
1081        </action>
1082        <action type="update" date="2013-01-14" issue="COMPRESS-214"
1083                due-to="Julius Davies">
1084            better support for unix symlinks in ZipFile entries
1085        </action>
1086        <action type="update" date="2013-01-19" issue="COMPRESS-215"
1087                due-to="Robin Power">
1088          ZipFile's initialization has been improved for non-Zip64
1089          archives.
1090        </action>
1091        <action type="fix" date="2013-01-20" issue="COMPRESS-206"
1092                due-to="Peter De Maeyer">
1093          TarArchiveInputStream could leave the second EOF record
1094          inside the stream it had just finished reading.
1095        </action>
1096        <action type="fix" date="2013-01-20">
1097          DumpArchiveInputStream no longer implicitly closes the
1098          original input stream when it reaches the end of the
1099          archive.
1100        </action>
1101        <action type="fix" date="2013-01-22">
1102          ZipArchiveInputStream now consumes the remainder of the
1103          archive when getNextZipEntry returns null.
1104        </action>
1105        <action type="fix" date="2013-01-27" issue="COMPRESS-205"
1106                due-to="Daniel Lowe">
1107          Unit tests could fail if the source tree was checked out to
1108          a directory tree containign spaces.
1109        </action>
1110        <action type="update" date="2013-01-31">
1111          Updated XZ for Java dependency to 1.2 as this version
1112          provides proper OSGi manifest attributes.
1113        </action>
1114        <action type="fix" date="2013-02-20" issue="COMPRESS-219">
1115          Fixed a potential ArrayIndexOutOfBoundsException when
1116          reading STORED entries from ZipArchiveInputStream.
1117        </action>
1118        <action type="fix" date="2013-03-07" issue="COMPRESS-221">
1119          CompressorStreamFactory can now be used without XZ for Java
1120          being available.
1121        </action>
1122        <action type="add" date="2013-03-07" issue="COMPRESS-220">
1123          CompressorStreamFactory has an option to create
1124          decompressing streams that decompress the full input for
1125          formats that support multiple concatenated streams.
1126        </action>
1127    </release>
1128    <release version="1.4.1" date="2012-05-23"
1129             description="Release 1.4.1">
1130      <action type="fix" date="2012-05-20">
1131        Ported libbzip2's fallback sort algorithm to
1132        BZip2CompressorOutputStream to speed up compression in certain
1133        edge cases.
1134        Using specially crafted inputs this can be used as a denial
1135        of service attack.  See the security reports page for details.
1136      </action>
1137    </release>
1138    <release version="1.4" date="2012-04-11"
1139             description="Release 1.4">
1140      <action issue="COMPRESS-183" type="fix" date="2012-03-24">
1141        The tar package now allows the encoding of file names to be
1142        specified and can optionally use PAX extension headers to
1143        write non-ASCII file names.
1144        The stream classes now write (or expect to read) archives that
1145        use the platform's native encoding for file names.  Apache
1146        Commons Compress 1.3 used to strip everything but the lower
1147        eight bits of each character which effectively only worked for
1148        ASCII and ISO-8859-1 file names.
1149        This new default behavior is a breaking change.
1150      </action>
1151      <action issue="COMPRESS-184" type="fix" date="2012-03-23">
1152        TarArchiveInputStream failed to parse PAX headers that
1153        contained non-ASCII characters.
1154      </action>
1155      <action issue="COMPRESS-182" type="update" date="2012-03-02">
1156        The tar package can now write archives that use star/GNU/BSD
1157        extensions or use the POSIX/PAX variant to store numeric
1158        values that don't fit into the traditional header fields.
1159      </action>
1160      <action issue="COMPRESS-181" type="update" date="2012-03-02">
1161        Added a workaround for a Bug some tar implementations that add
1162        a NUL byte as first byte in numeric header fields.
1163      </action>
1164      <action issue="COMPRESS-176" type="update" date="2012-02-28">
1165        Added a workaround for a Bug in WinZIP which uses backslashes
1166        as path separators in Unicode Extra Fields.
1167      </action>
1168      <action issue="COMPRESS-131" type="update" date="2012-02-23">
1169        ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
1170      </action>
1171      <action issue="COMPRESS-178" type="fix" date="2012-02-23">
1172        TarArchiveInputStream throws IllegalArgumentException instead of IOException
1173      </action>
1174      <action issue="COMPRESS-179" type="fix" date="2012-02-23">
1175        TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
1176      </action>
1177      <action issue="COMPRESS-175" type="fix" date="2012-02-22">
1178        GNU Tar sometimes uses binary encoding for UID and GID
1179      </action>
1180      <action issue="COMPRESS-171" type="fix" date="2012-01-29">
1181        ArchiveStreamFactory.createArchiveInputStream would claim
1182        short text files were TAR archives.
1183      </action>
1184      <action issue="COMPRESS-156" type="add" date="2011-11-02">
1185        Support for the XZ format has been added.
1186      </action>
1187      <action issue="COMPRESS-146" type="update" date="2011-11-07">
1188        BZip2CompressorInputStream now optionally supports reading of
1189        concatenated .bz2 files.
1190      </action>
1191      <action issue="COMPRESS-154" type="update" date="2011-11-09">
1192        GZipCompressorInputStream now optionally supports reading of
1193        concatenated .gz files.
1194      </action>
1195      <action issue="COMPRESS-164" type="fix" date="2011-12-05">
1196        ZipFile didn't work properly for archives using unicode extra
1197        fields rather than UTF-8 filenames and the EFS-Flag.
1198      </action>
1199      <action issue="COMPRESS-16" type="update" date="2011-12-07">
1200        The tar package can now read archives that use star/GNU/BSD
1201        extensions for files that are longer than 8 GByte as well as
1202        archives that use the POSIX/PAX variant.
1203      </action>
1204      <action issue="COMPRESS-165" type="update" date="2011-12-08">
1205        The tar package can now write archives that use star/GNU/BSD
1206        extensions for files that are longer than 8 GByte as well as
1207        archives that use the POSIX/PAX variant.
1208      </action>
1209      <action issue="COMPRESS-166" type="update" date="2011-12-08">
1210        The tar package can now use the POSIX/PAX variant for writing
1211        entries with names longer than 100 characters.
1212      </action>
1213      <action issue="COMPRESS-169" type="fix" date="2011-12-22">
1214        For corrupt archives ZipFile would throw a RuntimeException in
1215        some cases and an IOException in others.  It will now
1216        consistently throw an IOException.
1217      </action>
1218    </release>
1219    <release version="1.3" date="2011-11-01"
1220             description="Release 1.3 - API compatible to 1.2 but requires Java5 at runtime">
1221      <action issue="COMPRESS-142" type="add" date="2011-09-14">
1222        Support for the Pack200 format has been added.
1223      </action>
1224      <action issue="COMPRESS-132" type="add" date="2011-08-17">
1225        Read-only support for the format used by the Unix dump(8) tool
1226        has been added.
1227      </action>
1228      <action issue="COMPRESS-36" type="update" date="2011-08-15">
1229        The ZIP package now supports Zip64 extensions.
1230      </action>
1231      <action issue="COMPRESS-144" type="update" date="2011-08-08">
1232        The AR package now supports the BSD dialect of storing file
1233        names longer than 16 chars (both reading and writing).
1234      </action>
1235      <action type="fix" date="2011-08-08">
1236        BZip2CompressorInputStream's getBytesRead method always
1237        returned 0.
1238      </action>
1239      <action issue="COMPRESS-152" type="fix" date="2011-08-03">
1240        ZipArchiveInputStream and ZipArchiveOutputStream could leak
1241        resources on some JDKs.
1242      </action>
1243      <action issue="COMPRESS-160" type="fix" date="2011-10-23">
1244        TarArchiveOutputStream's getBytesWritten method didn't count
1245        correctly.
1246      </action>
1247    </release>
1248    <release version="1.2" date="2011-07-31"
1249             description="Release 1.2 - a bugfix release, the last release expected to be compatible with Java 1.4">
1250      <action issue="COMPRESS-129" type="fix" date="2011-07-26">
1251        ZipArchiveInputStream could fail with a "Truncated ZIP" error
1252        message for entries between 2 GByte and 4 GByte in size.
1253      </action>
1254      <action issue="COMPRESS-145" type="fix" date="2011-07-23"
1255              due-tue="Patrick Dreyer">
1256        TarArchiveInputStream now detects sparse entries using the
1257        oldgnu format and properly reports it cannot extract their
1258        contents.
1259      </action>
1260      <action issue="COMPRESS-123" type="add" date="2011-07-23">
1261        ZipArchiveEntry has a new method getRawName that provides the
1262        original bytes that made up the name.  This may allow user
1263        code to detect the encoding.
1264      </action>
1265      <action issue="COMPRESS-130" type="fix" date="2011-07-20">
1266        The Javadoc for ZipArchiveInputStream#skip now matches the
1267        implementation, the code has been made more defensive.
1268      </action>
1269      <action issue="COMPRESS-140" type="fix" date="2011-07-20"
1270              due-to="Trejkaz">
1271        ArArchiveInputStream fails if entries contain only blanks for
1272        userId or groupId.
1273      </action>
1274      <action issue="COMPRESS-139" type="fix" date="2011-07-13">
1275        ZipFile may leak resources on some JDKs.
1276      </action>
1277      <action type="update" date="2011-04-18">
1278        ZipFile now implements finalize which closes the underlying
1279        file.
1280      </action>
1281      <action issue="COMPRESS-117" type="update" date="2011-03-23">
1282        Certain tar files not recognised by ArchiveStreamFactory.
1283      </action>
1284      <action issue="COMPRESS-125" type="fix" date="2011-03-23">
1285        BZip2CompressorInputStream throws IOException if underlying stream returns available() == 0.
1286        Removed the check.
1287      </action>
1288      <action issue="COMPRESS-127" type="fix" date="2011-03-23">
1289        Calling close() on inputStream returned by CompressorStreamFactory.createCompressorInputStream()
1290        does not close the underlying input stream.
1291      </action>
1292      <action issue="COMPRESS-122" type="add" date="2010-10-29">
1293        TarArchiveEntry provides access to the flags that determine
1294        whether it is an archived symbolic link, pipe or other
1295        "uncommon" file system object.
1296      </action>
1297      <action issue="COMPRESS-119" type="fix" date="2010-10-26">
1298        TarArchiveOutputStream#finish now writes all buffered data to the stream
1299      </action>
1300    </release>
1301    <release version="1.1" date="2010-08-13" description="Release 1.1">
1302      <action issue="COMPRESS-72" type="fix" date="2010-06-02">
1303       Move acknowledgements from NOTICE to README
1304      </action>
1305      <action issue="COMPRESS-113" type="fix" date="2010-06-02">
1306       TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
1307      </action>
1308      <action issue="COMPRESS-108" type="add" date="2010-05-23">
1309       Command-line interface to list archive contents.
1310       Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
1311      </action>
1312      <action issue="COMPRESS-118" type="fix" date="2010-05-17">
1313       TarUtils.parseName does not properly handle characters outside the range 0-127
1314      </action>
1315      <action issue="COMPRESS-112" type="update" date="2010-05-13">
1316       ArArchiveInputStream does not handle GNU extended filename records (//)
1317      </action>
1318      <action issue="COMPRESS-109" type="add" date="2010-05-10">
1319       Tar implementation does not support Pax headers
1320       Added support for reading pax headers.
1321       Note: does not support global pax headers
1322      </action>
1323      <action issue="COMPRESS-107" type="fix" date="2010-05-10">
1324       ArchiveStreamFactory does not recognise tar files created by Ant
1325      </action>
1326      <action issue="COMPRESS-110" type="fix" date="2010-05-09">
1327       Support "ustar" prefix field, which is used when file paths are longer
1328       than 100 characters.
1329      </action>
1330      <action type="update" date="2010-04-19" issue="COMPRESS-105">
1331       Document that the name of an ZipArchiveEntry determines whether
1332       an entry is considered a directory or not.
1333       If you don't use the constructor with the File argument the entry's
1334        name must end in a "/" in order for the entry to be known as a directory.
1335      </action>
1336      <action type="add" date="2010-03-19" issue="COMPRESS-103">
1337        ZipArchiveInputStream can optionally extract data that used
1338        the STORED compression method and a data descriptor.
1339        Doing so in a stream is not safe in general, so you have to
1340        explicitly enable the feature.  By default the stream will
1341        throw an exception if it encounters such an entry.
1342      </action>
1343      <action type="fix" date="2010-03-12" issue="COMPRESS-100">
1344        ZipArchiveInputStream will throw an exception if it detects an
1345        entry that uses a data descriptor for a STORED entry since it
1346        cannot reliably find the end of data for this "compression"
1347        method.
1348      </action>
1349      <action type="fix" date="2010-03-12" issue="COMPRESS-101">
1350        ZipArchiveInputStream should now properly read archives that
1351        use data descriptors but without the "unofficial" signature.
1352      </action>
1353      <action type="add" date="2010-03-09" issue="COMPRESS-98">
1354        The ZIP classes will throw specialized exceptions if any
1355        attempt is made to read or write data that uses zip features
1356        not supported (yet).
1357      </action>
1358      <action type="add" date="2010-03-08" issue="COMPRESS-99">
1359        ZipFile#getEntries returns entries in a predictable order -
1360        the order they appear inside the central directory.
1361        A new method getEntriesInPhysicalOrder returns entries in
1362        order of the entry data, i.e. the order ZipArchiveInputStream
1363        would see.
1364      </action>
1365      <action type="add" date="2010-02-19">
1366        The Archive*Stream and ZipFile classes now have
1367        can(Read|Write)EntryData methods that can be used to check
1368        whether a given entry's data can be read/written.
1369        The method currently returns false for ZIP archives if an
1370        entry uses an unsupported compression method or encryption.
1371      </action>
1372      <action type="add" date="2010-02-19" issue="COMPRESS-89">
1373        The ZIP classes now detect encrypted entries.
1374      </action>
1375      <action type="update" date="2010-02-18" issue="COMPRESS-79">
1376        Move DOS/Java time conversions into Zip utility class.
1377      </action>
1378      <action type="fix" date="2010-02-18" issue="COMPRESS-74">
1379        ZipArchiveInputStream failed to update the number of bytes
1380        read properly.
1381      </action>
1382      <action type="fix" date="2010-02-18">
1383        ArchiveInputStream has a new method getBytesRead that should
1384        be preferred over getCount since the later may truncate the
1385        number of bytes read for big archives.
1386      </action>
1387      <action type="fix" date="2010-02-18" issue="COMPRESS-85">
1388        The cpio archives created by CpioArchiveOutputStream couldn't
1389        be read by many existing native implementations because the
1390        archives contained multiple entries with the same inode/device
1391        combinations and weren't padded to a blocksize of 512 bytes.
1392      </action>
1393      <action type="fix" date="2010-02-16" issue="COMPRESS-73">
1394        ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
1395        more lenient when parsing extra fields.
1396      </action>
1397      <action issue="COMPRESS-75" type="update" date="2010-02-12">
1398       ZipArchiveInputStream does not show location in file where a problem occurred.
1399      </action>
1400      <action type="fix" date="2010-02-12" issue="COMPRESS-82">
1401        cpio is terribly slow.
1402        Documented that buffered streams are needed for performance
1403      </action>
1404      <action type="add" date="2010-02-12" issue="COMPRESS-97">
1405        Added autodetection of compression format to
1406        CompressorStreamFactory.
1407      </action>
1408      <action type="fix" date="2010-02-12">
1409        Improved exception message if the extra field data in ZIP
1410        archives cannot be parsed.
1411      </action>
1412      <action type="fix" date="2010-02-11" issue="COMPRESS-17">
1413        Tar format unspecified - current support documented.
1414      </action>
1415      <action type="add" issue="COMPRESS-95" date="2010-01-29"
1416              due-to="Joerg Bellmann">
1417        Improve ExceptionMessages in ArchiveStreamFactory
1418      </action>
1419      <action type="fix" issue="COMPRESS-94" date="2010-01-07"
1420              due-to="Anon Devs">
1421        ZipArchiveEntry's equals method was broken for entries created
1422        with the String-arg constructor.  This lead to broken ZIP
1423        archives if two different entries had the same hash code.
1424      </action>
1425      <action type="fix" issue="COMPRESS-87" date="2009-10-30"
1426              due-to="Antoni Mylka">
1427        ZipArchiveInputStream could repeatedly return 0 on read() when
1428        the archive was truncated.
1429      </action>
1430      <action type="fix" issue="COMPRESS-86" date="2009-10-08">
1431        Tar archive entries holding the file name for names longer
1432        than 100 characters in GNU longfile mode didn't properly
1433        specify they'd be using the "oldgnu" extension.
1434      </action>
1435      <action type="add" date="2009-08-25">
1436        A new constructor of TarArchiveEntry can create entries with
1437        names that start with slashes - the default is to strip
1438        leading slashes in order to create relative path names.
1439      </action>
1440      <action issue="COMPRESS-83" type="fix" date="2009-08-01">
1441        Delegate all read and write methods in GZip stream in order to
1442        speed up operations.
1443      </action>
1444      <action type="add" date="2009-08-01">
1445        ArchiveEntry now has a getLastModifiedDate method.
1446      </action>
1447      <action type="fix" date="2009-08-01">
1448        The ar and cpio streams now properly read and write last
1449        modified times.
1450      </action>
1451      <action issue="COMPRESS-81" type="fix" date="2009-06-30">
1452        TarOutputStream can leave garbage at the end of the archive
1453      </action>
1454      <action issue="COMPRESS-78" type="add" date="2009-06-30"
1455              due-to="Jukka Zitting">
1456        Add a BZip2Utils class modelled after GZipUtils
1457      </action>
1458    </release>
1459    <release version="1.0" date="2009-05-21" description="First Public Release">
1460      <action dev="all" type="add" date="2009-05-21">
1461        Initial release
1462      </action>
1463      <action dev="sgoeschl" type="fix">
1464        Updating the pom.xml for preparing a move to commons-proper
1465      </action>
1466    </release>
1467  </body>
1468</document>
1469