<?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.13" date="not released, yet" 
             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>
    </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>
