<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->

<!--
This file is also used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits. TBA how to use this with SVN.

To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=m.n]

The <action> type attribute can be add,update,fix,remove.
-->

<document>
  <properties>
    <title>commons-compress</title>
  </properties>
  <body>
    <release version="1.19" date="not released, yet"
             description="Release 1.19">
      <action type="fix" date="2018-09-07">
        ZipArchiveInputStream could forget the compression level has
        changed under certain circumstances.
      </action>
    </release>
    <release version="1.18" date="2018-08-16"
             description="Release 1.18">
      <action type="fix" date="2018-06-15" due-to="DidierLoiseau">
        The example Expander class has been vulnerable to a path
        traversal in the edge case that happens when the target
        directory has a sibling directory and the name of the target
        directory is a prefix of the sibling directory's name.
      </action>
      <action issue="COMPRESS-456" type="fix" date="2018-06-19">
        Changed the OSGi Import-Package to also optionally import
        javax.crypto so encrypted archives can be read.
      </action>
      <action issue="COMPRESS-457" type="fix" date="2018-07-01">
        Changed various implementations of the close method to better
        ensure all held resources get closed even if exceptions are
        thrown during the closing the stream.
      </action>
      <action issue="COMPRESS-455" type="fix" date="2018-07-01">
        ZipArchiveInputStream can now detect the APK Signing Block
        used in signed Android APK files and treats it as an "end of
        archive" marker.
      </action>
      <action issue="COMPRESS-459" type="fix" date="2018-07-11"
              due-to="Jens Reimann">
        The cpio streams didn't handle archives using a multi-byte
        encoding properly.
      </action>
      <action issue="COMPRESS-460" type="add" date="2018-07-28"
              due-to="Carmi Grushko">
        It is now possible to specify the arguments of zstd-jni's
        ZstdOutputStream constructors via Commons Compress as well.
      </action>
      <action issue="COMPRESS-463" type="fix" date="2018-08-09">
        ZipArchiveInputStream#read would silently return -1 on a
        corrupted stored entry and even return > 0 after hitting the
        end of the archive.
      </action>
      <action issue="COMPRESS-462" type="fix" date="2018-08-10">
        ArArchiveInputStream#read would allow to read from the stream
        without opening an entry at all.
      </action>
    </release>
    <release version="1.17" date="2018-06-03"
             description="Release 1.17">
      <action type="fix" date="2018-02-06">
        Removed the objenesis dependency from the pom as it is not
        needed at all.
      </action>
      <action issue="COMPRESS-446" type="fix" date="2018-03-29">
        Fixed resource leak in ParallelScatterZipCreator#writeTo.
      </action>
      <action type="update" date="2018-04-01" due-to="Marchenko Sergey">
        Fixed some code examples.
        Github Pull Request #63.
      </action>
      <action issue="COMPRESS-447" type="fix" date="2018-04-22">
        Certain errors when parsing ZIP extra fields in corrupt
        archives are now turned into ZipException, they used to
        manifest as ArrayIndexOutOfBoundsException before.
      </action>
      <action issue="COMPRESS-445" type="update" date="2018-04-22"
              due-to="Andreas Beeker">
        The streams returned by ZipFile and most other decompressing
        streams now provide information about the number of compressed
        and uncompressed bytes read so far. This may be used to detect
        a ZipBomb if the compression ratio exceeds a certain
        threshold, for example.
        For SevenZFile a new method returns the statistics for the
        current entry.
      </action>
      <action issue="COMPRESS-443" type="add" date="2018-04-25">
        Added a unit test that is supposed to fail if we break the
        OSGi manifest entries again.
      </action>
      <action issue="COMPRESS-449" type="add" date="2018-05-02">
        Add a new SkipShieldingInputStream class that can be used with
        streams that throw an IOException when skip is invoked.
      </action>
      <action issue="COMPRESS-451" type="fix" date="2018-05-04">
        IOUtils.copy now verifies the buffer size is bigger than 0.
      </action>
      <action issue="COMPRESS-452" type="add" date="2018-05-09">
        New constructors have been added to SevenZFile that accept
        char[]s rather than byte[]s in order to avoid a common error
        of using the wrong encoding when creating the byte[].  This
        change may break source compatibility for client code that
        uses one of the constructors expecting a password and passes
        in null as password. We recommend to change the code to use a
        constructor without password argument.
      </action>
      <action issue="COMPRESS-453" type="update" date="2018-05-24">
        Added a workaround for a bug in AdoptOpenJDK for S/390 to
        BZip2CompressorInputStream.
      </action>
      <action issue="COMPRESS-454" type="fix" date="2018-05-30">
        ZipArchiveInputStream failed to read some files with stored
        entries using a data descriptor.
      </action>
    </release>
    <release version="1.16.1" date="2018-02-10"
             description="Release 1.16.1">
      <action issue="COMPRESS-442" type="fix" date="2018-02-06">
        Fixed the OSGi manifest entry for imports that has been broken
        in 1.16.
      </action>
    </release>
    <release version="1.16" date="2018-02-05"
             description="Release 1.16">
      <action issue="COMPRESS-423" type="add" date="2017-10-17"
              due-to="Andre F de Miranda">
        Add read-only support for Zstandard compression based on the
        Zstd-jni project.
      </action>
      <action issue="COMPRESS-425" type="add" date="2017-10-22">
        Added auto-detection for Zstandard compressed streams.
      </action>
      <action issue="COMPRESS-430" type="fix" date="2017-11-25"
              due-to="Bruno P. Kinoshita">
        Synchronized iteration over a synchronizedList in ParallelScatterZipCreator.
      </action>
      <action issue="COMPRESS-432" type="fix" date="2017-12-22">
        ZipFile could get stuck in an infinite loop when parsing ZIP
        archives with certain strong encryption headers.
      </action>
      <action issue="COMPRESS-435" type="update" date="2017-12-27"
              due-to="BELUGA BEHR">
        Replaces instanceof checks with a type marker in LZ77 support code.
      </action>
      <action issue="COMPRESS-426" type="add" date="2017-12-28">
        Added write-support for Zstandard compression.
      </action>
      <action issue="COMPRESS-424" type="fix" date="2017-12-30">
        Added improved checks to detect corrupted bzip2 streams and
        throw the expected IOException rather than obscure
        RuntimeExceptions.
      </action>
      <action type="update" date="2018-01-04">
        Updated XZ for Java dependency to 1.8 in order to pick up bug
        fix to LZMA2InputStream's available method.
      </action>
      <action type="update" date="2018-01-05" issue="COMPRESS-429"
              due-to="Damiano Albani">
        ZipArchiveEntry now exposes how the name or comment have been
        determined when the entry was read.
      </action>
      <action issue="COMPRESS-380" type="add" date="2018-01-09"
              due-to="Christian Marquez Grabia">
        Added read-only DEFLATE64 support to ZIP archives and as
        stand-alone CompressorInputStream.
      </action>
      <action issue="COMPRESS-438" type="update" date="2018-01-10">
        ZipFile.getInputStream will now always buffer the stream
        internally in order to improve read performance.
      </action>
      <action issue="COMPRESS-440" type="update" date="2018-01-12"
              due-to="Dawid Weiss">
        Speed improvement for DEFLATE64 decompression.
      </action>
      <action issue="COMPRESS-437" type="add" date="2018-01-13">
        Added read-only DEFLATE64 support to 7z archives.
      </action>
      <action issue="COMPRESS-436" type="update" date="2018-01-14">
        Added a few extra sanity checks for the rarer compression
        methods used in ZIP archives.
      </action>
      <action issue="COMPRESS-441" type="update" date="2018-01-14">
        Simplified the special handling for the dummy byte required by
        zlib when using java.util.zip.Inflater.
      </action>
      <action type="update" date="2018-01-18" due-to="Shahab Kondri">
        Various code cleanups.
        Github Pull Request #61.
      </action>
      <action type="update" date="2018-01-29">
        TarArchiveEntry's preserveLeadingSlashes constructor argument
        has been renamed and can now also be used to preserve the
        drive letter on Windows.
      </action>
    </release>
    <release version="1.15" date="2017-10-17"
             description="Release 1.15
----------------------------------------

TarArchiveOutputStream now ensures record size is 512 and block size is
a multiple of 512 as any other value would create invalid tar
archives. This may break compatibility for code that deliberately
wanted to create such files.">
      <action issue="COMPRESS-394" type="fix" date="2017-05-22">
        Make sure "version needed to extract" in local file header and
        central directory of a ZIP archive agree with each other.
        Also ensure the version is set to 2.0 if DEFLATE is used.
      </action>
      <action issue="COMPRESS-395" type="fix" date="2017-05-22">
        Don't use a data descriptor in ZIP archives when copying a raw
        entry that already knows its size and CRC information.
      </action>
      <action issue="COMPRESS-413" type="fix" date="2017-05-22" due-to="Simon Spero">
        Travis build redundantly repeats compilation and tests redundantly #43.      
      </action>
      <action issue="COMPRESS-397" type="add" date="2017-05-22">
        Added magic MANIFEST entry Automatic-Module-Name so the module
        name will be org.apache.commons.compress when the jar is used
        as an automatic module in Java9.
      </action>
      <action issue="COMPRESS-396" type="fix" date="2017-05-23">
        The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
        Java.
      </action>
      <action issue="COMPRESS-406" type="fix" date="2017-06-12"
              due-to="Simon Spero">
        BUILDING.md now passes the RAT check.
      </action>
      <action issue="COMPRESS-405" type="add" date="2017-06-15"
              due-to="Simon Spero ">
        Added a new utility class FixedLengthBlockOutputStream that
        can be used to ensure writing always happens in blocks of a
        given size.
      </action>
      <action issue="COMPRESS-412" type="fix" date="2017-06-17"
              due-to="Michael Hausegger">
        Made sure ChecksumCalculatingInputStream receives valid
        checksum and input stream instances via the constructor.
      </action>
      <action issue="COMPRESS-407" type="fix" date="2017-06-24"
              due-to="Simon Spero ">
        TarArchiveOutputStream now verifies the block and record sizes
        specified at construction time are compatible with the tar
        specification. In particular 512 is the only record size
        accepted and the block size must be a multiple of 512.
        At the same time the default block size in
        TarArchiveOutputStream has been changed from 10240 to 512
        bytes.
      </action>
      <action issue="COMPRESS-400" type="add" date="2017-06-26"
              due-to="Simon Spero ">
        It is now possible to specify/read custom PAX headers when
        writing/reading tar archives.
      </action>
      <action issue="COMPRESS-415" type="fix" date="2017-06-27">
        Fixed class names of CpioArchiveEntry and
        CpioArchiveInputStream in various Javadocs.
      </action>
      <action issue="COMPRESS-416" type="fix" date="2017-07-04"
              due-to="Simon Spero ">
        The code of the extended timestamp zip extra field incorrectly
        assumed the time was stored as unsigned 32-bit int and thus
        created incorrect results for years after 2037.
      </action>
      <action issue="COMPRESS-410" type="fix" date="2017-07-05"
              due-to="Simon Spero ">
        Removed ZipEncoding code that became obsolete when we started
        to require Java 5 as baseline long ago.
      </action>
      <action issue="COMPRESS-417" type="fix" date="2017-07-19">
        The tar package will no longer try to parse the major and
        minor device numbers unless the entry represents a character
        or block special file.
      </action>
      <action issue="COMPRESS-421" type="fix" date="2017-10-06"
              due-to="Roel Spilker">
        When reading tar headers with name fields containing embedded
        NULs, the name will now be terminated at the first NUL byte.
      </action>
      <action issue="COMPRESS-409" type="fix" date="2017-10-08">
        Simplified TarArchiveOutputStream by replacing the internal
        buffering with new class FixedLengthBlockOutputStream.
      </action>
    </release>
    <release version="1.14" date="2017-05-14"
             description="Release 1.14">
      <action issue="COMPRESS-378" type="fix" date="2017-01-09">
        SnappyCompressorInputStream slides the window too early
        leading to ArrayIndexOutOfBoundsExceptions for some streams.
      </action>
      <action issue="COMPRESS-246" type="add" date="2017-01-10">
        Added write support for Snappy.
      </action>
      <action issue="COMPRESS-358" type="update" date="2017-01-10">
        The blocksize for FramedSnappyCompressorInputStream can now be
        configured as some IWA files seem to be using blocks larger
        than the default 32k.
      </action>
      <action issue="COMPRESS-379" type="fix" date="2017-01-15"
              due-to="Guillaume Boué">
        ZipArchiveEntry#isUnixSymlink now only returns true if the
        corresponding link flag is the only file-type flag set.
      </action>
      <action issue="COMPRESS-271" type="add" date="2017-02-07">
        Added support for LZ4 (block and frame format).
      </action>
      <action type="update" date="2017-02-15" due-to="Thomas Meyer">
        BZip2CompressorInputstream now uses BitInputStream internally.
        Pull Request #13.
      </action>
      <action type="fix" date="2017-03-29" due-to="Daniel Collin">
        Fixed an integer overflow in CPIO's CRC calculation.
        Pull Request #17.
      </action>
      <action issue="COMPRESS-385" type="add" date="2017-04-18">
        Add static detect(InputStream in) to CompressorStreamFactory
        and ArchiveStreamFactory
      </action>
      <action issue="COMPRESS-387" type="fix" date="2017-04-18">
        Make unit tests work on Windows paths with spaces in their names.
      </action>
      <action issue="COMPRESS-388" type="update" date="2017-04-25"
              due-to="Zbynek Vyskovsky">
        Improved performance for concurrent reads from ZipFile when
        reading from a file.
      </action>
      <action issue="COMPRESS-382" type="add" date="2017-04-25"
              due-to="Tim Allison">
        Added a way to limit amount of memory ZCompressorStream may
        use.
      </action>
      <action issue="COMPRESS-386" type="add" date="2017-04-25"
              due-to="Tim Allison">
        Added a way to limit amount of memory ZCompressorStream may
        use.
      </action>
      <action issue="COMPRESS-382" type="add" date="2017-04-25"
              due-to="Tim Allison">
        Added a way to limit amount of memory LZMACompressorStream and
        XZCompressorInputStream may use.
      </action>
      <action issue="COMPRESS-389" type="fix" date="2017-04-26">
        Internal location pointer in ZipFile could get incremented
        even if nothing had been read.
      </action>
      <action issue="COMPRESS-392" type="add" date="2017-05-02" due-to="Philippe Mouawad">
        Add Brotli decoder based on the Google Brotli library.
      </action>
      <action issue="COMPRESS-390" type="add" date="2017-05-04"
              due-to="Zbynek Vyskovsky">
        ZipEntry now exposes its data offset.
      </action>
      <action issue="COMPRESS-393" type="fix" date="2017-05-07">
        LZMACompressorOutputStream#flush would throw an exception
        rather than be the NOP it promised to be.
      </action>
      <action issue="COMPRESS-391" type="add" date="2017-05-11"
              due-to="Zbynek Vyskovsky">
        Using ZipArchiveEntry's setAlignment it is now possible to
        ensure the data offset of an entry starts at a file position
        that at word or page boundaries.
        A new extra field has been added for this purpose.
      </action>
    </release>
    <release version="1.13" date="2016-12-29"
             description="Release 1.13 - API compatible to 1.12 but requires Java 7 at runtime.">
      <action issue="COMPRESS-360" type="update" date="2016-06-25" dev="ggregory">
        Update Java requirement from 6 to 7.
      </action>
      <action issue="COMPRESS-363" type="fix" date="2016-07-01">
        BitInputStream could return bad results when overflowing
        internally - if two consecutive reads tried to read more than
        64 bits.
      </action>
      <action issue="COMPRESS-366" type="update" date="2016-10-07">
        Clarified which TarArchiveEntry methods are useless for
        entries read from an archive.
      </action>
      <action issue="COMPRESS-364" type="fix" date="2016-10-07"
              due-to="Mike Mole">
        ZipArchiveInputStream.closeEntry does not properly advance to
        next entry if there are junk bytes at end of data section
      </action>
      <action issue="COMPRESS-327" type="add" date="2016-10-12">
        SevenZFile, SevenZOutputFile, ZipFile and
        ZipArchiveOutputStream can now work on non-file resources if
        they can be accessed via SeekableByteChannel.
      </action>
      <action issue="COMPRESS-368" type="add" date="2016-11-15">
        Allow compressor extensions through a standard JRE ServiceLoader.
      </action>
      <action issue="COMPRESS-369" type="add" date="2016-11-15">
        Allow archive extensions through a standard JRE ServiceLoader.
      </action>
      <action issue="COMPRESS-373" type="add" date="2016-11-29">
        Add write support for the legacy LZMA format, this requires XZ
        for Java 1.6.
      </action>
      <action issue="COMPRESS-374" type="add" date="2016-11-29">
        Add write support for the legacy LZMA stream to 7z, this
        requires XZ for Java 1.6.
      </action>
      <action issue="COMPRESS-375" type="add" date="2016-12-04"
              due-to="Plamen Totev">
        Allow the clients of ParallelScatterZipCreator to provide
        ZipArchiveEntryRequestSupplier.
      </action>
      <action issue="COMPRESS-367" type="fix" date="2016-12-09"
              due-to="Mike Mole">
        ZipArchiveInputStream now throws an Exception if it encounters
        a broken ZIP archive rather than signaling end-of-archive.
      </action>
      <action issue="COMPRESS-377" type="fix" date="2016-12-20">
        ScatterZipOutputStream didn't close the StreamCompressor
        causing a potential resource leak.
      </action>
      <action issue="COMPRESS-372" type="add" date="2016-12-20">
        Add a version-independent link to the API docs of the latest
        release.
      </action>
    </release>
    <release version="1.12" date="2016-06-21"
             description="Release 1.12 - API compatible to 1.11 but requires Java 6 at runtime.
------------



Release 1.12 changes the behavior of BZip2CompressorOutputStream's
finalize method so that it no longer invokes finish. This is going to
break code that relied on the finalizer to clean up an unfinished
stream. The code will need to be changed to call finish or
close itself. Note that a finalizer is not guaranteed to run, so
the feature was not 100% effective in any case.
">
      <action issue="COMPRESS-349" type="update" date="2016-04-09" dev="ggregory">
        Update requirement from Java 5 to 6.
      </action>
      <action issue="COMPRESS-350" type="update" date="2016-04-09" dev="ggregory">
        TarArchiveEntry wastefully allocates empty arrays.
      </action>
      <action issue="COMPRESS-348" type="fix" date="2016-04-24">
        SevenZFile.read() throws an IllegalStateException for empty entries.
      </action>
      <action issue="COMPRESS-353" type="update" date="2016-05-06" dev="ggregory">
        Javadoc for BZip2CompressorInputStream(InputStream, boolean) should refer to IOEx, not NPE.
      </action>
      <action issue="COMPRESS-354" type="update" date="2016-05-16">
        PureJavaCrc32C in the snappy package is now final so it is now
        safe to call a virtual method inside the constructor.
      </action>
      <action issue="COMPRESS-355" type="fix" date="2016-05-20"
              due-to="Jeremy Gustie">
        TarArchiveInputStream failed to parse PAX headers that
        included blank lines.
      </action>
      <action issue="COMPRESS-356" type="fix" date="2016-05-20"
              due-to="Jeremy Gustie">
        TarArchiveInputStream failed to parse PAX headers whose tar
        entry name ended with a slash.
      </action>
      <action issue="COMPRESS-352" type="add" date="2016-05-22">
        FramedSnappyCompressorInputStream now supports the dialect of
        Snappy used by the IWA files contained within the zip archives
        used in Apple's iWork 13 files.
      </action>
      <action issue="COMPRESS-351" type="update" date="2016-06-07">
        ZipArchiveInputStream and CpioArchiveInputStream could throw
        exceptions who's messages contained potentially corrupt entry
        names read from a broken archive. They will now sanitize the
        names by replacing unprintable characters and restricting the
        length to 255 characters.
      </action>
      <action issue="COMPRESS-357" type="update" date="2016-06-15">
        BZip2CompressorOutputStream no longer tries to finish the
        output stream in finalize. This is a breaking change for code
        that relied on the finalizer.
      </action>
    </release>
    <release version="1.11" date="2016-04-06"
             description="Release 1.11">
      <action issue="COMPRESS-347" type="add" date="2016-03-23">
        TarArchiveInputStream now supports reading global PAX headers.
      </action>
      <action issue="COMPRESS-346" type="add" date="2016-03-23">
        The PAX headers for sparse entries written by star are now
        applied.
      </action>
      <action issue="COMPRESS-345" type="add" date="2016-03-23">
        GNU sparse files using one of the PAX formats are now
        detected, but cannot be extracted.
      </action>
      <action issue="COMPRESS-344" type="fix" date="2016-03-22">
        ArArchiveInputStream can now read GNU extended names that are
        terminated with a NUL byte rather than a linefeed.
      </action>
      <action issue="COMPRESS-341" type="add" date="2016-03-20">
        New method SevenZFile.getEntries can be used to list the
        contents of a 7z archive.
      </action>
      <action issue="COMPRESS-343" type="fix" date="2016-03-17"
              due-to="Rene Preissel">
        Native Memory Leak in Sevenz-DeflateDecoder.
      </action>
      <action type="add" date="2016-03-05"
              due-to="Matt Hovey">
        When using Zip64Mode.Always also use ZIP64 extensions inside
        the central directory.
        GitHub Pull Request #10
      </action>
      <action issue="COMPRESS-340" type="fix" date="2016-02-24"
              due-to="Dawid Weiss">
        SevenZFile will now only try to drain an entry's content when
        moving on to the next entry if data is read from the next
        entry. This should improve performance for applications that
        try to skip over entries.
      </action>
      <action issue="COMPRESS-336" type="fix" date="2016-02-14">
        file names of tar archives using the xstar format are now
        parsed properly.
      </action>
      <action issue="COMPRESS-335" type="fix" date="2016-02-05">
        checksums of tars that pad the checksum field to the left are
        now calculated properly.
      </action>
      <action issue="COMPRESS-334" type="fix" date="2016-02-05"
              due-to="Jeremy Gustie">
        ArArchiveInputStream failed to read past the first entry when
        BSD long names have been used.
      </action>
      <action issue="COMPRESS-333" type="fix" date="2016-02-03" due-to="Dawid Weiss">
        Added buffering for random access which speeds up 7Z support.
      </action>
      <action issue="COMPRESS-331" type="fix" date="2016-01-31">
        The checksum validation of TararchiveEntry is now as strict as
        the validation of GNU tar, which eliminates a few cases of
        false positives of ArchiveStreamFactory.
        This behavior is a breaking change since the check has become
        more strict but any archive that fails the checksum test now
        would also fail it when extracted with other tools and must be
        considered an invalid archive.
      </action>
      <action issue="COMPRESS-323" type="add" date="2016-01-29">
        ZipFile.getRawInputStream() is now part of the public API
      </action>
      <action issue="COMPRESS-332" type="fix" date="2016-01-29">
        SnappyCompressorInputStream and
        FramedSnappyCompressorInputStream returned 0 at the end of the
        stream under certain circumstances.
      </action>
      <action type="add" date="2016-01-27" due-to="Jason van Zyl">
        Allow byte-for-byte replication of Zip entries.
        GitHub Pull Request #6.
      </action>
      <action issue="COMPRESS-328" type="add" date="2016-01-15">
        TarArchiveEntry's preserveLeadingSlashes is now a property and used
        on later calls to setName, too.
        This behavior is a breaking change.
      </action>
      <action issue="COMPRESS-326" type="fix" date="2015-10-24">
        Adjusted unit test to updates in Java8 and later that change
        the logic of ZipEntry#getTime.
      </action>
      <action issue="COMPRESS-324" type="fix" date="2015-10-06">
        TarArchiveOutputStream will now recognize GNU long name and
        link entries even if the special entry has a different name
        than GNU tar uses itself.  This seems to be the case for
        archives created by star.
      </action>
      <action issue="COMPRESS-321" type="fix" date="2015-08-22">
        ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
        fields are read from the central directory.
      </action>
      <action type="add" date="2015-11-11" due-to="Sören Glimm">
        Added read-only support for bzip2 compression used inside of
        ZIP archives.
        GitHub Pull Request #4.
      </action>
    </release>

    <release version="1.10" date="2015-08-18"
             description="Release 1.10
------------



Release 1.10 moves the former
org.apache.commons.compress.compressors.z._internal_ package which
breaks backwards compatibility for code which used the old package.
This also changes the superclass of ZCompressorInputStream.
">

      <action issue="COMPRESS-317" type="fix" date="2015-06-09"
              due-to="Lucas Werkmeister">
        ArrayIndexOutOfBoundsException when ZIP extra fields are read
        and the entry contains an UnparseableExtraField.
      </action>
      <action issue="COMPRESS-316" type="add" date="2015-05-23"
              due-to="Nick Burch">
        CompressorStreamFactory can now auto-detect DEFLATE streams
        with ZLIB header.
      </action>
      <action issue="COMPRESS-314" type="fix" date="2015-05-08">
        TarArchiveInputStream can now read entries with group or
        user ids &gt; 0x80000000.
      </action>
      <action issue="COMPRESS-315" type="fix" date="2015-05-06">
        TarArchiveOutputStream can now write entries with group or
        user ids &gt; 0x80000000.
      </action>
      <action issue="COMPRESS-313" type="add" date="2015-03-30">
        CompressorStreamFactory can now auto-detect LZMA streams.
      </action>
      <action issue="COMPRESS-312" type="fix" date="2015-03-28">
        TarArchiveEntry's constructor with a File and a String arg
        didn't normalize the name.
      </action>
      <action issue="COMPRESS-308" type="fix" date="2015-02-20">
        ZipEncodingHelper no longer reads system properties directly
        to determine the default charset.
      </action>
      <action issue="COMPRESS-309" type="fix" date="2015-02-20">
        BZip2CompressorInputStream#read would return -1 when asked to
        read 0 bytes.
      </action>
      <action issue="COMPRESS-306" type="fix" date="2015-02-17">
        ArchiveStreamFactory fails to pass on the encoding when creating some streams.
        * ArjArchiveInputStream
        * CpioArchiveInputStream
        * DumpArchiveInputStream
        * JarArchiveInputStream
        * TarArchiveInputStream
        * JarArchiveOutputStream
      </action>
      <action issue="COMPRESS-302" type="fix" date="2015-02-16">
        Restore immutability/thread-safety to ArchiveStreamFactory.
        The class is now immutable provided that the method setEntryEncoding is not used.
        The class is thread-safe.
      </action>
      <action issue="COMPRESS-303" type="fix" date="2015-02-16">
        Restore immutability/thread-safety to CompressorStreamFactory.
        The class is now immutable provided that the method setDecompressConcatenated is not used.
        The class is thread-safe.
      </action>
      <action issue="COMPRESS-298" type="fix" date="2015-01-20">
        SevenZFile now throws the specific PasswordRequiredException
        when it encounters an encrypted stream but no password has
        been specified.
      </action>
      <action issue="COMPRESS-290" type="fix" date="2015-01-13"
              due-to="Kristian Rosenvold">
        Improved error message when tar encounters a groupId that is
        too big to write without using the STAR or POSIX format.
      </action>
      <action issue="COMPRESS-296" type="add" date="2015-01-10"
              due-to="Kristian Rosenvold">
        Added support for parallel compression. This low-level API allows
        a client to build a zip/jar file by using the class
        org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.

        Zip documentation updated with further notes about parallel features.

        Please note that some aspects of jar creation need to be
        handled by client code and is not part of commons-compress for this
        release.
      </action>
      <action type="add" date="2014-12-24"
              due-to="Kristian Rosenvold">
        Cut overall object instantiation in half by changing file
        header generation algorithm, for a 10-15 percent performance
        improvement.

        Also extracted two private methods createLocalFileHeader
        and createCentralFileHeader in ZipArchiveOutputStream.
        These may have some interesting additional usages in the
        near future.
      </action>
      <action issue="COMPRESS-297" type="fix" date="2014-12-22">
        ZipFile logs a warning in its finalizer when its constructor
        has thrown an exception reading the file - for example if the
        file doesn't exist.
      </action>
      <action issue="COMPRESS-295" type="add" date="2014-12-18"
              due-to="Kristian Rosenvold">
        New methods in ZipArchiveOutputStream and ZipFile allows
        entries to be copied from one archive to another without
        having to re-compress them.
      </action>
      <action type="update" date="2014-10-28"
              due-to="Damjan Jovanovic">
        Moved the package
        org.apache.commons.compress.compressors.z._internal_ to
        org.apache.commons.compress.compressors.lzw and made it part
        of the API that is officially supported.  This will break
        existing code that uses the old package.
      </action>
    </release>

    <release version="1.9" date="2014-10-09"
             description="Release 1.9">
      <action type="add" date="2014-06-14" issue="COMPRESS-263"
              due-to="Matthias Stevens">
        Added support for DEFLATE streams without any gzip framing.
      </action>
      <action type="fix" date="2014-08-14" issue="COMPRESS-287">
        When reading 7z files unknown file properties and properties
        of type kDummy are now ignored.
      </action>
      <action type="fix" date="2014-08-21" issue="COMPRESS-286">
        Expanding 7z archives using LZMA compression could cause an
        EOFException.
      </action>
      <action type="update" date="2014-08-31" issue="COMPRESS-285">
        Checking for XZ for Java may be expensive.  The result will
        now be cached outside of an OSGi environment.  You can use the
        new XZUtils#setCacheXZAvailability to overrride this default
        behavior.
      </action>
      <action type="fix" date="2014-09-19" issue="COMPRESS-289"
              due-to="Bob Robertson">
        Long-Name and -link or PAX-header entries in TAR archives
        always had the current time as last modfication time, creating
        archives that are different at the byte level each time an
        archive was built.
      </action>
    </release>

    <release version="1.8.1" date="2014-05-14"
             description="Release 1.8.1">
      <action type="update" date="2014-03-19">
        The dependency on org.tukaani:xz is now marked as optional.
      </action>
      <action type="fix" date="2014-03-28" issue="COMPRESS-270">
        The snappy, ar and tar inputstreams might fail to read from a
        non-buffered stream in certain cases.
      </action>
      <action type="add" date="2014-04-12" issue="COMPRESS-272">
        CompressorStreamFactory can now auto-detect Unix compress
        (".Z") streams.
      </action>
      <action type="fix" date="2014-04-12" issue="COMPRESS-277">
        IOUtils#skip might skip fewer bytes than requested even though
        more could be read from the stream.
      </action>
      <action type="fix" date="2014-04-13" issue="COMPRESS-276">
        ArchiveStreams now validate there is a current entry before
        reading or writing entry data.
      </action>
      <action type="fix" date="2014-04-13">
        ArjArchiveInputStream#canReadEntryData tested the current
        entry of the stream rather than its argument.
      </action>
      <action type="fix" date="2014-04-13" issue="COMPRESS-274">
        ChangeSet#delete and deleteDir now properly deal with unnamed
        entries.
      </action>
      <action type="fix" date="2014-04-18" issue="COMPRESS-273">
        Added a few null checks to improve robustness.
      </action>
      <action type="fix" date="2014-04-19" issue="COMPRESS-278">
        TarArchiveInputStream failed to read archives with empty
        gid/uid fields.
      </action>
      <action type="fix" date="2014-04-27" issue="COMPRESS-279">
        TarArchiveInputStream now again throws an exception when it
        encounters a truncated archive while reading from the last
        entry.
      </action>
      <action type="fix" date="2014-05-02" issue="COMPRESS-280"
              due-to="BELUGA BEHR">
        Adapted TarArchiveInputStream#skip to the modified
        IOUtils#skip method.
      </action>
    </release>
    <release version="1.8" date="2014-03-12"
             description="Release 1.8">
      <action issue="COMPRESS-253" type="fix" date="2014-01-20">
        BZip2CompressorInputStream read fewer bytes than possible from
        a truncated stream.
      </action>
      <action issue="COMPRESS-253" type="fix" date="2014-01-22">
        SevenZFile failed claiming the dictionary was too large when
        archives used LZMA compression for headers and content and
        certain non-default dictionary sizes.
      </action>
      <action issue="COMPRESS-259" type="fix" date="2014-01-24">
        CompressorStreamFactory.createCompressorInputStream with
        explicit compression did not honor decompressConcatenated
      </action>
      <action issue="COMPRESS-260" type="add" date="2014-02-20">
        GzipCompressorInputStream now provides access to the same
        metadata that can be provided via GzipParameters when writing
        a gzip stream.
      </action>
      <action issue="COMPRESS-262" type="fix" date="2014-02-21">
        TarArchiveInputStream will now read archives created by tar
        implementations that encode big numbers by not adding a
        trailing NUL.
      </action>
      <action issue="COMPRESS-264" type="fix" date="2014-02-21">
        ZipArchiveInputStream would return NUL bytes for the first 512
        bytes of a STORED entry if it was the very first entry of the
        archive.
      </action>
      <action issue="COMPRESS-265" type="fix" date="2014-02-22">
        When writing PAX/POSIX headers for TAR entries with
        backslashes or certain non-ASCII characters in their name
        TarArchiveOutputStream could fail.
      </action>
      <action issue="COMPRESS-267" type="fix" date="2014-02-22">
        ArchiveStreamFactory now throws a StreamingNotSupported - a
        new subclass of ArchiveException - if it is asked to read from
        or write to a stream and Commons Compress doesn't support
        streaming for the format.  This currently only applies to the
        7z format.
      </action>
      <action issue="COMPRESS-266" type="add" date="2014-02-25">
        SevenZOutputFile now supports chaining multiple
        compression/encryption/filter methods and passing options to
        the methods.
      </action>
      <action issue="COMPRESS-261" type="add" date="2014-02-26">
        The (compression) method(s) can now be specified per entry in
        SevenZOutputFile.
      </action>
      <action issue="COMPRESS-258" type="add" date="2014-02-26">
        SevenZArchiveEntry "knows" which method(s) have been used to
        write it to the archive.
      </action>
      <action type="add" date="2014-02-28">
        The 7z package now supports the delta filter as method.
      </action>
      <action issue="COMPRESS-257" type="add" date="2014-03-03">
        The 7z package now supports BCJ filters for several platforms.
        You will need a version &gt;= 1.5 of XZ for Java to read archives
        using BCJ, though.
      </action>
    </release>
    <release version="1.7" date="2014-01-20"
             description="Release 1.7">
      <action issue="COMPRESS-241" type="fix" date="2013-10-27">
        SevenZOutputFile#closeArchiveEntry throws an exception when
        using LZMA2 compression on Java8.
      </action>
      <action issue="COMPRESS-147" type="add" date="2013-11-07"
              due-to="BELUGA BEHR">
        Read-Only support for Snappy compression.
      </action>
      <action issue="COMPRESS-244" type="fix" date="2013-11-27"
              due-to="Nico Kruber">
        7z reading of big 64bit values could be wrong.
      </action>
      <action issue="COMPRESS-243" type="add" date="2013-11-30"
              due-to="Damjan Jovanovic">
        Read-Only support for .Z compressed files.
      </action>
      <action type="add" date="2013-12-06" due-to="Damjan Jovanovic">
        ZipFile and ZipArchiveInputStream now support reading entries compressed using the
        SHRINKING method.
      </action>
      <action issue="COMPRESS-245" type="fix" date="2013-12-06">
        TarArchiveInputStream could fail to read an archive completely.
      </action>
      <action issue="COMPRESS-242" type="fix" date="2013-12-08">
        The time-setters in X5455_ExtendedTimestamp now set the
        corresponding flags explicitly - i.e. they set the bit if the
        valus is not-null and reset it otherwise.  This may cause
        incompatibilities if you use setFlags to unset a bit and later
        set the time to a non-null value - the flag will now be set.
      </action>
      <action issue="COMPRESS-250" type="add" date="2013-12-16" due-to="Emmanuel Bourg">
        GzipCompressorOutputStream now supports setting the compression level and the header metadata
        (filename, comment, modification time, operating system and extra flags)
      </action>
      <action issue="COMPRESS-115" type="add" date="2013-12-19" due-to="Emmanuel Bourg">
        ZipFile and ZipArchiveInputStream now support reading entries compressed using the IMPLODE method.
      </action>
      <action issue="COMPRESS-252" type="fix" date="2013-12-20">
        SevenZOutputFile would create invalid archives if more than
        six empty files or directories were included.
      </action>
      <action type="add" date="2013-12-20">
        ZipFile and the 7z file classes now implement Closeable and
        can be used in try-with-resources constructs.
      </action>
    </release>
    <release version="1.6" date="2013-10-26"
             description="Release 1.6">
      <action type="fix" date="2013-04-25" issue="COMPRESS-223"
              due-to="Jeremy Gustie">
        TarBuffer.tryToConsumeSecondEOFRecord could throw a
        NullPointerException
      </action>
      <action type="add" date="2013-05-07" issue="COMPRESS-54"
              due-to="Damjan Jovanovic">
        Added support for 7z archives.  Most compression algorithms
        can be read and written, LZMA and encryption are only
        supported when reading.
      </action>
      <action type="add" date="2013-05-19" issue="COMPRESS-226"
              due-to="Damjan Jovanovic">
        Added read-only support for ARJ archives that don't use
        compression.
      </action>
      <action type="fix" date="2013-05-26" issue="COMPRESS-228">
        Parsing of zip64 extra fields has become more lenient in order
        to be able to read archives created by DotNetZip and maybe
        other archivers as well.
      </action>
      <action type="fix" date="2013-06-03" issue="COMPRESS-229"
              due-to="Christoph Gysin">
        TAR will now properly read the names of symbolic links with
        long names that use the GNU variant to specify the long file
        name.
      </action>
      <action type="fix" date="2013-06-04" issue="COMPRESS-227">
        ZipFile#getInputStream could return null if the archive
        contained duplicate entries.
        The class now also provides two new methods to obtain all
        entries of a given name rather than just the first one.
      </action>
      <action type="update" date="2013-07-08" issue="COMPRESS-232"
              due-to="BELUGA BEHR">
        Readabilty patch to TarArchiveInputStream.
      </action>
      <action type="update" date="2013-08-08" issue="COMPRESS-234"
              due-to="BELUGA BEHR">
        Performance improvements to TarArchiveInputStream, in
        particular to the skip method.
      </action>
      <action type="fix" date="2013-08-08" issue="COMPRESS-236"
              due-to="Andrew Duffy">
        CpioArchiveInputStream failed to read archives created by
        Redline RPM.
      </action>
      <action type="fix" date="2013-08-09" issue="COMPRESS-237"
              due-to="Emmanuel Bourg">
        TarArchiveOutputStream now properly handles link names that
        are too long to fit into a traditional TAR header.
      </action>
      <action type="add" date="2013-08-10">
        DumpArchiveInputStream now supports an encoding parameter that
        can be used to specify the encoding of file names.
      </action>
      <action type="add" date="2013-08-10">
        The CPIO streams now support an encoding parameter that can be
        used to specify the encoding of file names.
      </action>
      <action type="add" date="2013-09-22" issue="COMPRESS-111">
        Read-only support for LZMA standalone compression has been added.
      </action>
      <action type="fix" date="2013-10-04" issue="COMPRESS-239">
        The auto-detecting create*InputStream methods of Archive and
        CompressorStreamFactory could fail to detect the format of
        blocking input streams.
      </action>
      <action type="fix" date="2013-10-21" issue="COMPRESS-240"
              due-to="Gary Gregory">
        ZipEncodingHelper.isUTF8(String) does not check all UTF-8 aliases.
      </action>
    </release>
    <release version="1.5" date="2013-03-14"
             description="Release 1.5">
      <action type="fix" date="2012-02-19" issue="COMPRESS-218"
              due-to="Gili">
        Typo in CompressorStreamFactory Javadoc
      </action>
      <action type="update" date="2012-07-08" issue="COMPRESS-188"
              due-to="Harald Kuhn">
        Improved exception message if a zip archive cannot be read
        because of an unsupported compression method.
      </action>
      <action type="update" date="2012-07-07" issue="COMPRESS-192"
              due-to="Jukka Zitting">
        ArchiveStreamFactory has a setting for file name encoding that
        sets up encoding for ZIP and TAR streams.
      </action>
      <action type="fix" date="2012-07-07" issue="COMPRESS-191"
              due-to="Jukka Zitting">
        ArchiveStreamFactory's tar stream detection created false
        positives for AIFF files.
      </action>
      <action type="update" date="2012-07-07" issue="COMPRESS-191"
              due-to="Jukka Zitting">
        TarArchiveEntry now has a method to verify its checksum.
      </action>
      <action type="fix" date="2012-12-27" issue="COMPRESS-199"
              due-to="Jukka Zitting">
        XZ for Java didn't provide an OSGi bundle.  Compress'
        dependency on it has now been marked optional so Compress
        itself can still be used in an OSGi context.
      </action>
      <action type="fix" date="2012-12-27" issue="COMPRESS-200"
              due-to="Christian Schlichtherle">
        When specifying the encoding explicitly TarArchiveOutputStream
        would write unreadable names in GNU mode or even cause errors
        in POSIX mode for file names longer than 66 characters.
      </action>
      <action type="fix" date="2012-12-27" issue="COMPRESS-203">
        Writing TAR PAX headers failed if the generated entry name
        ended with a "/".
      </action>
      <action type="fix" date="2012-12-28" issue="COMPRESS-189"
              due-to="Daniel Lowe">
        ZipArchiveInputStream sometimes failed to provide input to the
        Inflater when it needed it, leading to reads returning 0.
      </action>
      <action type="update" date="2013-01-01">
        Split/spanned ZIP archives are now properly detected by
        ArchiveStreamFactory but will cause an
        UnsupportedZipFeatureException when read.
      </action>
      <action type="update" date="2013-01-01" issue="COMPRESS-208">
        ZipArchiveInputStream now reads archives that start with a
        "PK00" signature.  Archives with this signatures are created
        when the archiver was willing to split the archive but in the
        end only needed a single segment - so didn't split anything.
      </action>
      <action type="update" date="2013-01-01" issue="COMPRESS-201">
        TarArchiveEntry has a new constructor that allows setting
        linkFlag and preserveLeadingSlashes at the same time.
      </action>
      <action type="update" date="2013-01-01" issue="COMPRESS-159">
        ChangeSetPerformer has a new perform overload that uses a
        ZipFile instance as input.
      </action>
      <action type="fix" date="2013-01-04" issue="COMPRESS-212">
        TarArchiveInputStream ignored the encoding for GNU long name
        entries.
      </action>
      <action type="update" date="2013-01-05" issue="COMPRESS-172"
              due-to="Thomas Mair">
        Garbage collection pressure has been reduced by reusing
        temporary byte arrays in classes.
      </action>
        <action type="update" date="2013-01-08" issue="COMPRESS-210"
                due-to="Julius Davies">
          Can now handle zip extra field 0x5455 - Extended Timestamp.
        </action>
        <action type="update" date="2013-01-07" issue="COMPRESS-211"
                due-to="Julius Davies">
          handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
        </action>
        <action type="update" date="2013-01-07" issue="COMPRESS-213"
                due-to="Julius Davies">
            ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
        </action>
        <action type="update" date="2013-01-14" issue="COMPRESS-214"
                due-to="Julius Davies">
            better support for unix symlinks in ZipFile entries
        </action>
        <action type="update" date="2013-01-19" issue="COMPRESS-215"
                due-to="Robin Power">
          ZipFile's initialization has been improved for non-Zip64
          archives.
        </action>
        <action type="fix" date="2013-01-20" issue="COMPRESS-206"
                due-to="Peter De Maeyer">
          TarArchiveInputStream could leave the second EOF record
          inside the stream it had just finished reading.
        </action>
        <action type="fix" date="2013-01-20">
          DumpArchiveInputStream no longer implicitly closes the
          original input stream when it reaches the end of the
          archive.
        </action>
        <action type="fix" date="2013-01-22">
          ZipArchiveInputStream now consumes the remainder of the
          archive when getNextZipEntry returns null.
        </action>
        <action type="fix" date="2013-01-27" issue="COMPRESS-205"
                due-to="Daniel Lowe">
          Unit tests could fail if the source tree was checked out to
          a directory tree containign spaces.
        </action>
        <action type="update" date="2013-01-31">
          Updated XZ for Java dependency to 1.2 as this version
          provides proper OSGi manifest attributes.
        </action>
        <action type="fix" date="2013-02-20" issue="COMPRESS-219">
          Fixed a potential ArrayIndexOutOfBoundsException when
          reading STORED entries from ZipArchiveInputStream.
        </action>
        <action type="fix" date="2013-03-07" issue="COMPRESS-221">
          CompressorStreamFactory can now be used without XZ for Java
          being available.
        </action>
        <action type="add" date="2013-03-07" issue="COMPRESS-220">
          CompressorStreamFactory has an option to create
          decompressing streams that decompress the full input for
          formats that support multiple concatenated streams.
        </action>
    </release>
    <release version="1.4.1" date="2012-05-23"
             description="Release 1.4.1">
      <action type="fix" date="2012-05-20">
        Ported libbzip2's fallback sort algorithm to
        BZip2CompressorOutputStream to speed up compression in certain
        edge cases.
        Using specially crafted inputs this can be used as a denial
        of service attack.  See the security reports page for details.
      </action>
    </release>
    <release version="1.4" date="2012-04-11"
             description="Release 1.4">
      <action issue="COMPRESS-183" type="fix" date="2012-03-24">
        The tar package now allows the encoding of file names to be
        specified and can optionally use PAX extension headers to
        write non-ASCII file names.
        The stream classes now write (or expect to read) archives that
        use the platform's native encoding for file names.  Apache
        Commons Compress 1.3 used to strip everything but the lower
        eight bits of each character which effectively only worked for
        ASCII and ISO-8859-1 file names.
        This new default behavior is a breaking change.
      </action>
      <action issue="COMPRESS-184" type="fix" date="2012-03-23">
        TarArchiveInputStream failed to parse PAX headers that
        contained non-ASCII characters.
      </action>
      <action issue="COMPRESS-182" type="update" date="2012-03-02">
        The tar package can now write archives that use star/GNU/BSD
        extensions or use the POSIX/PAX variant to store numeric
        values that don't fit into the traditional header fields.
      </action>
      <action issue="COMPRESS-181" type="update" date="2012-03-02">
        Added a workaround for a Bug some tar implementations that add
        a NUL byte as first byte in numeric header fields.
      </action>
      <action issue="COMPRESS-176" type="update" date="2012-02-28">
        Added a workaround for a Bug in WinZIP which uses backslashes
        as path separators in Unicode Extra Fields.
      </action>
      <action issue="COMPRESS-131" type="update" date="2012-02-23">
        ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
      </action>
      <action issue="COMPRESS-178" type="fix" date="2012-02-23">
        TarArchiveInputStream throws IllegalArgumentException instead of IOException
      </action>
      <action issue="COMPRESS-179" type="fix" date="2012-02-23">
        TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
      </action>
      <action issue="COMPRESS-175" type="fix" date="2012-02-22">
        GNU Tar sometimes uses binary encoding for UID and GID
      </action>
      <action issue="COMPRESS-171" type="fix" date="2012-01-29">
        ArchiveStreamFactory.createArchiveInputStream would claim
        short text files were TAR archives.
      </action>
      <action issue="COMPRESS-156" type="add" date="2011-11-02">
        Support for the XZ format has been added.
      </action>
      <action issue="COMPRESS-146" type="update" date="2011-11-07">
        BZip2CompressorInputStream now optionally supports reading of
        concatenated .bz2 files.
      </action>
      <action issue="COMPRESS-154" type="update" date="2011-11-09">
        GZipCompressorInputStream now optionally supports reading of
        concatenated .gz files.
      </action>
      <action issue="COMPRESS-164" type="fix" date="2011-12-05">
        ZipFile didn't work properly for archives using unicode extra
        fields rather than UTF-8 filenames and the EFS-Flag.
      </action>
      <action issue="COMPRESS-16" type="update" date="2011-12-07">
        The tar package can now read archives that use star/GNU/BSD
        extensions for files that are longer than 8 GByte as well as
        archives that use the POSIX/PAX variant.
      </action>
      <action issue="COMPRESS-165" type="update" date="2011-12-08">
        The tar package can now write archives that use star/GNU/BSD
        extensions for files that are longer than 8 GByte as well as
        archives that use the POSIX/PAX variant.
      </action>
      <action issue="COMPRESS-166" type="update" date="2011-12-08">
        The tar package can now use the POSIX/PAX variant for writing
        entries with names longer than 100 characters.
      </action>
      <action issue="COMPRESS-169" type="fix" date="2011-12-22">
        For corrupt archives ZipFile would throw a RuntimeException in
        some cases and an IOException in others.  It will now
        consistently throw an IOException.
      </action>
    </release>
    <release version="1.3" date="2011-11-01"
             description="Release 1.3 - API compatible to 1.2 but requires Java5 at runtime">
      <action issue="COMPRESS-142" type="add" date="2011-09-14">
        Support for the Pack200 format has been added.
      </action>
      <action issue="COMPRESS-132" type="add" date="2011-08-17">
        Read-only support for the format used by the Unix dump(8) tool
        has been added.
      </action>
      <action issue="COMPRESS-36" type="update" date="2011-08-15">
        The ZIP package now supports Zip64 extensions.
      </action>
      <action issue="COMPRESS-144" type="update" date="2011-08-08">
        The AR package now supports the BSD dialect of storing file
        names longer than 16 chars (both reading and writing).
      </action>
      <action type="fix" date="2011-08-08">
        BZip2CompressorInputStream's getBytesRead method always
        returned 0.
      </action>
      <action issue="COMPRESS-152" type="fix" date="2011-08-03">
        ZipArchiveInputStream and ZipArchiveOutputStream could leak
        resources on some JDKs.
      </action>
      <action issue="COMPRESS-160" type="fix" date="2011-10-23">
        TarArchiveOutputStream's getBytesWritten method didn't count
        correctly.
      </action>
    </release>
    <release version="1.2" date="2011-07-31"
             description="Release 1.2 - a bugfix release, the last release expected to be compatible with Java 1.4">
      <action issue="COMPRESS-129" type="fix" date="2011-07-26">
        ZipArchiveInputStream could fail with a "Truncated ZIP" error
        message for entries between 2 GByte and 4 GByte in size.
      </action>
      <action issue="COMPRESS-145" type="fix" date="2011-07-23"
              due-tue="Patrick Dreyer">
        TarArchiveInputStream now detects sparse entries using the
        oldgnu format and properly reports it cannot extract their
        contents.
      </action>
      <action issue="COMPRESS-123" type="add" date="2011-07-23">
        ZipArchiveEntry has a new method getRawName that provides the
        original bytes that made up the name.  This may allow user
        code to detect the encoding.
      </action>
      <action issue="COMPRESS-130" type="fix" date="2011-07-20">
        The Javadoc for ZipArchiveInputStream#skip now matches the
        implementation, the code has been made more defensive.
      </action>
      <action issue="COMPRESS-140" type="fix" date="2011-07-20"
              due-to="Trejkaz">
        ArArchiveInputStream fails if entries contain only blanks for
        userId or groupId.
      </action>
      <action issue="COMPRESS-139" type="fix" date="2011-07-13">
        ZipFile may leak resources on some JDKs.
      </action>
      <action type="update" date="2011-04-18">
        ZipFile now implements finalize which closes the underlying
        file.
      </action>
      <action issue="COMPRESS-117" type="update" date="2011-03-23">
        Certain tar files not recognised by ArchiveStreamFactory.
      </action>
      <action issue="COMPRESS-125" type="fix" date="2011-03-23">
        BZip2CompressorInputStream throws IOException if underlying stream returns available() == 0.
        Removed the check.
      </action>
      <action issue="COMPRESS-127" type="fix" date="2011-03-23">
        Calling close() on inputStream returned by CompressorStreamFactory.createCompressorInputStream()
        does not close the underlying input stream.
      </action>
      <action issue="COMPRESS-122" type="add" date="2010-10-29">
        TarArchiveEntry provides access to the flags that determine
        whether it is an archived symbolic link, pipe or other
        "uncommon" file system object.
      </action>
      <action issue="COMPRESS-119" type="fix" date="2010-10-26">
        TarArchiveOutputStream#finish now writes all buffered data to the stream
      </action>
    </release>
    <release version="1.1" date="2010-08-13" description="Release 1.1">
      <action issue="COMPRESS-72" type="fix" date="2010-06-02">
       Move acknowledgements from NOTICE to README
      </action>
      <action issue="COMPRESS-113" type="fix" date="2010-06-02">
       TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
      </action>
      <action issue="COMPRESS-108" type="add" date="2010-05-23">
       Command-line interface to list archive contents.
       Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
      </action>
      <action issue="COMPRESS-118" type="fix" date="2010-05-17">
       TarUtils.parseName does not properly handle characters outside the range 0-127
      </action>
      <action issue="COMPRESS-112" type="update" date="2010-05-13">
       ArArchiveInputStream does not handle GNU extended filename records (//)
      </action>
      <action issue="COMPRESS-109" type="add" date="2010-05-10">
       Tar implementation does not support Pax headers
       Added support for reading pax headers.
       Note: does not support global pax headers
      </action>
      <action issue="COMPRESS-107" type="fix" date="2010-05-10">
       ArchiveStreamFactory does not recognise tar files created by Ant
      </action>
      <action issue="COMPRESS-110" type="fix" date="2010-05-09">
       Support "ustar" prefix field, which is used when file paths are longer
       than 100 characters.
      </action>
      <action type="update" date="2010-04-19" issue="COMPRESS-105">
       Document that the name of an ZipArchiveEntry determines whether
       an entry is considered a directory or not.
       If you don't use the constructor with the File argument the entry's
        name must end in a "/" in order for the entry to be known as a directory.
      </action>
      <action type="add" date="2010-03-19" issue="COMPRESS-103">
        ZipArchiveInputStream can optionally extract data that used
        the STORED compression method and a data descriptor.
        Doing so in a stream is not safe in general, so you have to
        explicitly enable the feature.  By default the stream will
        throw an exception if it encounters such an entry.
      </action>
      <action type="fix" date="2010-03-12" issue="COMPRESS-100">
        ZipArchiveInputStream will throw an exception if it detects an
        entry that uses a data descriptor for a STORED entry since it
        cannot reliably find the end of data for this "compression"
        method.
      </action>
      <action type="fix" date="2010-03-12" issue="COMPRESS-101">
        ZipArchiveInputStream should now properly read archives that
        use data descriptors but without the "unofficial" signature.
      </action>
      <action type="add" date="2010-03-09" issue="COMPRESS-98">
        The ZIP classes will throw specialized exceptions if any
        attempt is made to read or write data that uses zip features
        not supported (yet).
      </action>
      <action type="add" date="2010-03-08" issue="COMPRESS-99">
        ZipFile#getEntries returns entries in a predictable order -
        the order they appear inside the central directory.
        A new method getEntriesInPhysicalOrder returns entries in
        order of the entry data, i.e. the order ZipArchiveInputStream
        would see.
      </action>
      <action type="add" date="2010-02-19">
        The Archive*Stream and ZipFile classes now have
        can(Read|Write)EntryData methods that can be used to check
        whether a given entry's data can be read/written.
        The method currently returns false for ZIP archives if an
        entry uses an unsupported compression method or encryption.
      </action>
      <action type="add" date="2010-02-19" issue="COMPRESS-89">
        The ZIP classes now detect encrypted entries.
      </action>
      <action type="update" date="2010-02-18" issue="COMPRESS-79">
        Move DOS/Java time conversions into Zip utility class.
      </action>
      <action type="fix" date="2010-02-18" issue="COMPRESS-74">
        ZipArchiveInputStream failed to update the number of bytes
        read properly.
      </action>
      <action type="fix" date="2010-02-18">
        ArchiveInputStream has a new method getBytesRead that should
        be preferred over getCount since the later may truncate the
        number of bytes read for big archives.
      </action>
      <action type="fix" date="2010-02-18" issue="COMPRESS-85">
        The cpio archives created by CpioArchiveOutputStream couldn't
        be read by many existing native implementations because the
        archives contained multiple entries with the same inode/device
        combinations and weren't padded to a blocksize of 512 bytes.
      </action>
      <action type="fix" date="2010-02-16" issue="COMPRESS-73">
        ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
        more lenient when parsing extra fields.
      </action>
      <action issue="COMPRESS-75" type="update" date="2010-02-12">
       ZipArchiveInputStream does not show location in file where a problem occurred.
      </action>
      <action type="fix" date="2010-02-12" issue="COMPRESS-82">
        cpio is terribly slow.
        Documented that buffered streams are needed for performance
      </action>
      <action type="add" date="2010-02-12" issue="COMPRESS-97">
        Added autodetection of compression format to
        CompressorStreamFactory.
      </action>
      <action type="fix" date="2010-02-12">
        Improved exception message if the extra field data in ZIP
        archives cannot be parsed.
      </action>
      <action type="fix" date="2010-02-11" issue="COMPRESS-17">
        Tar format unspecified - current support documented.
      </action>
      <action type="add" issue="COMPRESS-95" date="2010-01-29"
              due-to="Joerg Bellmann">
        Improve ExceptionMessages in ArchiveStreamFactory
      </action>
      <action type="fix" issue="COMPRESS-94" date="2010-01-07"
              due-to="Anon Devs">
        ZipArchiveEntry's equals method was broken for entries created
        with the String-arg constructor.  This lead to broken ZIP
        archives if two different entries had the same hash code.
      </action>
      <action type="fix" issue="COMPRESS-87" date="2009-10-30"
              due-to="Antoni Mylka">
        ZipArchiveInputStream could repeatedly return 0 on read() when
        the archive was truncated.
      </action>
      <action type="fix" issue="COMPRESS-86" date="2009-10-08">
        Tar archive entries holding the file name for names longer
        than 100 characters in GNU longfile mode didn't properly
        specify they'd be using the "oldgnu" extension.
      </action>
      <action type="add" date="2009-08-25">
        A new constructor of TarArchiveEntry can create entries with
        names that start with slashes - the default is to strip
        leading slashes in order to create relative path names.
      </action>
      <action issue="COMPRESS-83" type="fix" date="2009-08-01">
        Delegate all read and write methods in GZip stream in order to
        speed up operations.
      </action>
      <action type="add" date="2009-08-01">
        ArchiveEntry now has a getLastModifiedDate method.
      </action>
      <action type="fix" date="2009-08-01">
        The ar and cpio streams now properly read and write last
        modified times.
      </action>
      <action issue="COMPRESS-81" type="fix" date="2009-06-30">
        TarOutputStream can leave garbage at the end of the archive
      </action>
      <action issue="COMPRESS-78" type="add" date="2009-06-30"
              due-to="Jukka Zitting">
        Add a BZip2Utils class modelled after GZipUtils
      </action>
    </release>
    <release version="1.0" date="2009-05-21" description="First Public Release">
      <action dev="all" type="add" date="2009-05-21">
        Initial release
      </action>
      <action dev="sgoeschl" type="fix">
        Updating the pom.xml for preparing a move to commons-proper
      </action>
    </release>
  </body>
</document>
