<?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>Apache Commons Compress Release Notes</title>
  </properties>
  <body>
    <release version="1.21" date="not released, yet (Java 8)"
             description="Release 1.21">
      <action type="update" date="2020-08-18">
        Update from Java 7 to 8.
      </action>
      <action type="update" date="2020-03-07"
              due-to="Peter Alfred Lee">
        Made sure ZstdCompressorOutputStream no longer used
        deprecated ZstOutputStream constructors.
        Github Pull Request #94.
      </action>
      <action issue="COMPRESS-504" type="update" date="2020-03-16">
        Make compression level of ParallelScatterZipCreator
        configurable via a new constructor.
      </action>
      <action issue="COMPRESS-505" type="fix" date="2020-03-24">
        Fix bugs in random access of 7z. Problems may happen
        in a mixture use of random access and sequential access
        of 7z.
        Github Pull Request #95.
      </action>
      <action issue="COMPRESS-510" type="fix" date="2020-04-18">
        Fix bugs in random access of 7z. Exceptions are thrown
        when reading the first entry multiple times by random
        access.
      </action>
      <action issue="COMPRESS-520" type="fix" date="2020-05-23" due-to="Robin Schimpf">
        Removed the PowerMock dependency.
      </action>
      <action issue="COMPRESS-516" type="fix" date="2020-05-23">
        Added improved checks to detect corrupted bzip2 streams and
        throw the expected IOException rather than obscure
        RuntimeExceptions.
        See also COMPRESS-519.
      </action>
      <action issue="COMPRESS-517" type="fix" date="2020-05-23">
        Improved parsing of X5455_ExtendedTimestamp ZIP extra field.
      </action>
      <action issue="COMPRESS-518" type="fix" date="2020-05-23">
        ZipArchiveInputStream and ZipFile will now throw an
        IOException rather than a RuntimeException if the zip64 extra
        field of an entry could not be parsed.
      </action>
      <action issue="COMPRESS-523" type="fix" date="2020-05-23">
        Improved detection of corrupt ZIP archives in ZipArchiveInputStream.
      </action>
      <action issue="COMPRESS-521" type="fix" date="2020-05-24">
        Added improved checks to detect corrupted deflate64 streams and
        throw the expected IOException rather than obscure
        RuntimeExceptions.
        See also COMPRESS-522, COMPRESS-525, COMPRESS-526, and COMPRESS-527.
      </action>
      <action issue="COMPRESS-515" type="fix" date="2020-05-22" due-to="ian-lavallee">
        Add the archive name in the exception in the constructor of
        ZipFIle to make it a more specific exception.
        Github Pull Request #102.
      </action>
      <action issue="COMPRESS-530" type="fix" date="2020-05-26">
        Throw IOException when it encounters a non-number while parsing pax header.
      </action>
      <action issue="COMPRESS-531" type="fix" date="2020-05-31">
        Throw IOException when a a tar archive contains a PAX header
        without any normal entry following it.
      </action>
      <action issue="COMPRESS-532" type="fix" date="2020-05-31">
        Added improved checks to detect corrupted IMPLODED streams and
        throw the expected IOException rather than obscure
        RuntimeExceptions.
      </action>
      <action issue="COMPRESS-529" type="fix" date="2020-06-01">
        Throw expected IOException instead of NumberFormatException if
        it encounters non-numbers when parsing pax headers for tarball.

        Throw IllegalArgumentException instead of RuntimeExceptions if
        the file name is longer than 100 bytes with the longFileMode
        of LONGFILE_ERROR, and address this in java docs.

        Throw IllegalArgumentException instead of RuntimeExceptions if
        the any of the numeric values of an entry exceeds the limits
        of a traditional tar header while bigNumberMode is
        BIGNUMBER_ERROR, and address this in java docs.
      </action>
      <action issue="COMPRESS-404" type="update" date="2020-06-08" due-to="theobisproject">
        Update the class of variable file in TarArchiveEntry from
        java.io.File to java.nio.file.Path. Corresponding constructors
        and methods are also modified/added.
        Github Pull Request #97.
      </action>
      <action issue="COMPRESS-539" type="update" date="2020-07-04" due-to="Robin Schimpf">
        Reuse the record buffer in TarArchiveInputStream.
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add SevenZOutputFile.write(InputStream).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add SevenZOutputFile.write(Path, OpenOption...).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add SevenZOutputFile.createArchiveEntry(Path, String, LinkOption...).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add ArArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add ArArchiveEntry(Path, String, LinkOption...).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add ctor CpioArchiveEntry(Path, String, LinkOption...).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add ctor CpioArchiveEntry(short, Path, String, LinkOption...).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add CpioArchiveEntry.setTime(FileTime).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add TarArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add ctor TarArchiveEntry(Path, String, LinkOption...).
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add IOUtils.EMPTY_LINK_OPTIONS.
      </action>
      <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
        Add Path support to ZipArchiveOutputStream #123.
      </action>
      <action type="update" date="2020-08-10" due-to="Dependabot" dev="ggregory">
        Update GitHub actions/checkout from v1 to v2.3.1 #114, #124.
      </action>
      <action type="update" date="2020-08-21" due-to="Dependabot" dev="ggregory">
        Update actions/setup-java from v1.4.0 to v1.4.1 #125.
      </action>
      <action type="update" date="2020-08-21" due-to="Dependabot" dev="ggregory">
        Update zstd-jni from 1.4.4-7 to 1.4.5-6 #118.
      </action>
      <action type="update" date="2020-08-21" due-to="Dependabot" dev="ggregory">
        Update tests slf4j-api from 1.7.26 to 1.7.30 #117.
      </action>
      <action type="update" date="2020-08-21" due-to="Dependabot" dev="ggregory">
        Update maven-pmd-plugin from 3.12.0 to 3.13.0 #115.
      </action>
      <action type="update" date="2020-08-21" due-to="Dependabot" dev="ggregory">
        Update maven-bundle-plugin from 3.5.1 to 5.1.1 #116.
      </action>
      <action issue="COMPRESS-543" type="fix" date="2020-08-10"
              due-to="wulf2333" dev="PeterLee">
        Fix for test fails on Windows. The tests are failing because the
        default charset is not UTF-8.
      </action>
      <action issue="COMPRESS-544" type="fix" date="2020-08-13"
              due-to="Aditya Prasad" dev="PeterLee">
        TarArchiveInputStream can not detect a truncated tar in skip()
        and skipRecordPadding().
      </action>
      <action issue="COMPRESS-542" type="fix" date="2020-08-15"
              due-to="theobisproject" dev="theobisproject">
        Make the memory allocation in SevenZFile.readFilesInfo a lazy
        allocation to avoid OOM when dealing some giant 7z archives.
        Github Pull Request #120.
      </action>
      <action issue="COMPRESS-546" type="fix" date="2020-08-15"
              due-to="Maksim Zuev" dev="PeterLee">
        ZipArchiveInputStream should throw an exception if a corrputed
        zip64 extra field is met.
      </action>
      <action type="fix" date="2020-08-22" dev="PeterLee">
        Add a new maven profile in pom.xml for JDK14+ to ignore the
        failing tests about Pack200.
      </action>
      <action issue="COMPRESS-548" type="fix" date="2020-08-24"
              due-to="Maksim Zuev" dev="PeterLee">
        Throw an IOException when reading the zip extra field if the
        length is too short.
      </action>
      <action issue="COMPRESS-554" type="fix" date="2020-09-01"
              due-to="Maksim Zuev" dev="PeterLee">
        Throw an decleared IOException if a null entry is met when
        reading a global pax header instead of a runtime NPE.
      </action>
      <action issue="COMPRESS-547" type="fix" date="2020-09-02"
              due-to="Maksim Zuev" dev="PeterLee">
        Add asserts for Arrays.copyOf in X0017_StrongEncryptionHeader.
      </action>
      <action issue="COMPRESS-550" type="add" date="2020-09-07"
              due-to="Scott Frederick" dev="PeterLee">
        Add writePreamble to ZipArchiveInputStream. This method could
        write raw data to zip archive before any entry was written to
        the zip archive.
        For most of the time, this is used to create self-extracting
        zip.
        Github Pull Request #127.
      </action>
      <action type="update" due-to="Dependabot" date="2020-09-08">Update actions/setup-java from v1.4.1 to v1.4.2 #133.</action>
      <action type="fix" date="2020-09-24" dev="PeterLee">
        Fix for the CFH signature detect in ZipArchiveInputStream.
        The problem could be reproduced by a zip archive with Data
        Descriptor and STORED, and without the Data Descriptor
        signature.
      </action>
    </release>
    <release version="1.20" date="2020-02-08"
             description="Release 1.20 (Java 7)">
      <action issue="COMPRESS-493" type="update" date="2019-08-27">
        Update optional library com.github.luben:zstd-jni from 1.4.0-1 to 1.4.4-7.
      </action>
      <action type="update" date="2019-08-27">
        Update tests from org.apache.felix:org.apache.felix.framework 6.0.2 to 6.0.3.
      </action>
      <action issue="COMPRESS-492" type="fix" date="2019-08-28">
        SevenZFile could throw NullPointerException rather than
        IOException for certain archives. In addition it now handles
        certain empty archives more gracefully.
      </action>
      <action issue="COMPRESS-491" type="fix" date="2019-09-01">
        Deflate64CompressorInputStream.read would return 0 for some
        inputs in violation of the InputStream.read contract.
      </action>
      <action issue="COMPRESS-495" type="remove" date="2019-10-12">
        Removed the extraction code from the example CLI class inside
        of the SevenZ package. Not only is it superseeded by the
        examples package, its implementation was vulnerable to the
        ZipSlip attack.
      </action>
      <action issue="COMPRESS-497" type="update" date="2019-10-12"
              due-to="Stefan Schlott">
        SevenZFile can now recover from a certain corruption that
        seems to happen occasionally when split archives are created.
      </action>
      <action issue="COMPRESS-342" type="update" date="2019-11-07"
              due-to="Peter Alfred Lee">
        Added random access support to SevenZFile.
      </action>
      <action issue="COMPRESS-477" type="update" date="2019-12-15"
              due-to="Peter Alfred Lee">
        Added support for split ZIP archives.
      </action>
      <action issue="COMPRESS-124" type="update" date="2020-01-01"
              due-to="Peter Alfred Lee">
        Added support for reading sparse entries to the TAR package.
      </action>
      <action issue="COMPRESS-499" type="fix" date="2020-01-04">
        SeekableInMemoryByteChannel's truncate didn't set position
        according to the spec in an edge case.
      </action>
      <action type="fix" due-to="Joseph Allemandou" date="2020-01-21">
        BZip2CompressorInputStream now incorporates a similar patch as
        the one that fixed CVE-2019-12900 in libbzip2.

        Commons Compress has not been vulnerable to this CVE as it
        would have rejected a file with too many selectors. With this
        patch Commons Compress will be able to read certain archives
        that would have caused errors in Compress 1.19.
      </action>
      <action type="update" date="2020-01-25">
        Update JUnit from 4.12 to 4.13.
      </action>
    </release>
    <release version="1.19" date="2019-08-27"
             description="Release 1.19
----------------------------------------

ZipArchiveInputStream and ZipFile will no longer throw an exception if
an extra field generally understood by Commons Compress is malformed
but rather turn them into UnrecognizedExtraField instances.
You can influence the way extra fields are parsed in more detail by
using the new getExtraFields(ExtraFieldParsingBehavior) method of
ZipArchiveEntry now.

Some of the ZIP extra fields related to strong encryption will now
throw ZipExceptions rather than ArrayIndexOutOfBoundsExceptions in
certain cases when used directly. There is no practical difference
when they are read via ZipArchiveInputStream or ZipFile.
">
      <action type="fix" date="2018-09-07">
        ZipArchiveInputStream could forget the compression level has
        changed under certain circumstances.
      </action>
      <action issue="COMPRESS-466" type="add" date="2018-10-07">
        It is now possible to skip parsing of local file headers when
        using ZipFile which may speed up reading the archive at the
        cost of potentially missing important information. See the
        javadocs of the ZipFile class for details.
      </action>
      <action issue="COMPRESS-469" type="add" date="2018-11-10">
        TarArchiveInputStream has a new constructor-arg lenient that
        can be used to accept certain broken archives.
      </action>
      <action issue="COMPRESS-470" type="fix" date="2018-11-18">
        Fixed another potential resource leak in
        ParallelScatterZipCreator#writeTo.
      </action>
      <action issue="COMPRESS-475" type="add" date="2018-12-15">
        ArjArchiveEntry and SevenZArchiveEntry now implement hashCode
        and equals.
      </action>
      <action type="fix" date="2019-02-18" due-to="Alex Bertram">
        ArArchiveInputStream could think it had hit EOF prematurely.
        Github Pull Request #74.
      </action>
      <action type="update" date="2019-04-16" due-to="Robin Schimpf"
              issue="COMPRESS-481">
        SevenZFile now provides a way to cap memory consumption for
        LZMA(2) compressed content.
        Github Pull Request #76.
      </action>
      <action type="update" date="2019-04-18"
              due-to="Rostislav Krasny" issue="COMPRESS-464">
        The ARJ package has been updated to contain constants for more
        recent specifications.
      </action>
      <action type="update" date="2019-04-30"
              issue="COMPRESS-484">
        Update optional library zstd-jni from 1.3.3-3 to 1.4.0-1.
      </action>
      <action type="update" date="2019-08-07"
              due-to="Hervé Boutemy, Tibor Digana"
              issue="COMPRESS-485">
        ParallelScatterZipCreator now writes the entries to the
        gathered output in the same order they have been added.
        Github Pull Requests #78 and #79.
      </action>
      <action type="fix" date="2019-08-08" issue="COMPRESS-490">
        Throw IOException rather than RuntimeExceptions for certain
        malformed LZ4 or Snappy inputs.
      </action>
      <action type="update" date="2019-08-09" issue="COMPRESS-486">
        The Expander and Archive example classes can leak resources
        they have wrapped around passed in streams or channels. The
        methods consuming streams and channels have been adapted to
        give the calling code a chance to deal with those wrapper
        resources.
      </action>
      <action type="update" date="2019-08-16" issue="COMPRESS-479">
        ZipArchiveInputStream and ZipFile no longer assume Commons
        Compress would understand extra fields better than the writer
        of the archive and silently turn extra fields that Commons
        Compress should understand into UnrecognizedExtraFields if
        parsing said fields fails.
        It is now possible to take more control over the extra field
        parsing process with a new overload of
        ZipArchiveEntry#getExtraFields.
      </action>
      <action type="fix" date="2019-08-18" issue="COMPRESS-482">
        ZipArchiveInputStream failed to read stored entries with a
        data descriptor if the data descriptor didn't use the
        signature invented by InfoZIP.
      </action>
      <action type="update" date="2019-08-18" issue="COMPRESS-483">
        ZipArchiveInputStream will now throw an exception if reading a
        stored entry with a data descriptor and the data descriptor
        doesn't match what it has actually read.

        The most common case for a situation like this is a stored ZIP
        archive inside of the archive ZipArchiveInputStream currently
        reads. In such a case ZipArchiveInputStream would happily
        extract the contained archive and stop once the central
        directory of the inner archive has been hit. This is a case
        where ZipArchiveInputStream simply can not be used and only
        ZipFile is able to read the archive.

        The only other explanation is a broken archive. So the
        exception prevents users from thinking they had successfully
        read the contents of the archive.
      </action>
      <action type="add" date="2019-08-18" issue="COMPRESS-231"
              due-to="Tim Underwood">
        Added a MultiReadOnlySeekableByteChannel class
        that can be used to concatenate the parts of a multi volume 7z
        archive so that SevenZFile can read them.
      </action>
      <action type="update" date="2019-08-20" issue="COMPRESS-478">
        The 7zip tools provide a default name for archive entries
        without name; SevenZFile returns a null name for such
        entries. A new method getDefaultName has been added to derive
        the same name the 7zip tools would use and an option has been
        added that sets SevenZArchiveEntry's name to the default name
        if it is not contained inside the archive.
      </action>
      <action type="fix" date="2019-08-20">
        NioZipEncoding#encode could enter an infinite loop for certain
        inputs.
      </action>
    </release>
    <release version="1.18" date="2018-08-16"
             description="Release 1.18
----------------------------------------

This release changes the OSGi Manifest entry Bundle-SymbolicName from
org.apache.commons.compress to org.apache.commons.commons-compress.
">
      <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>
