<?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.11" date="not released, yet"
             description="Release 1.11">
      <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>
