<?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.
-->
<!DOCTYPE document
[
<!ELEMENT document (properties?, release+)>
<!ELEMENT properties (title)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT release (action*)>
<!ELEMENT action (#PCDATA)>
<!ATTLIST release
          version CDATA #REQUIRED
          date CDATA #REQUIRED
          description CDATA #IMPLIED>
<!ATTLIST action
          issue CDATA #IMPLIED
          type (add|fix|remove|update) #REQUIRED
          breaks-bwc (true|false) #IMPLIED>
]
>
  <document>
    <properties>
      <title>Apache Compress Ant Library</title>
    </properties>

    <release version="1.1" date="2011-11-05">
      <action type="update" breaks-bwc="true">
        The Apache Compress Antlib now requires Apache Commons
        Compress 1.3 which in turn requires Java5 at runtime.
        This change allows the Compress Antlib to support Zip64
        extensions.
      </action>
      <action type="add">
        Support for pack200 compression has been added.
      </action>
      <action type="add">
        The new pack200normalize task allows you to prepare JAR
        archives so they can be signed and compressed with pack200 and
        the signature will still be valid after uncompressing them
        again.
      </action>
      <action type="add">
        Read-only support for the Unix dump format has been added in
        the form of an &lt;undump&gt; task and corresponding
        &lt;dumpentry&gt; and &lt;dumpfileset&gt; resources.
      </action>
      <action type="update">
        A new attribute zip64Mode provides finer grained control over
        whether Zip64 extensions will be used in the &lt;zip&gt; task.
      </action>
      <action type="update">
        The &lt;zip&gt; task has a new attribute zip64Mode that
        controls whether Zip64 extended information is written to the
        archive.
      </action>
      <action type="update">
        The &lt;ar&gt; task now optionally suppports writing entries
        with names longer than 16 characters using the BSD variant of
        AR archives.
      </action>
      <action type="add">
        The unarchiving tasks and fileset types share a new attribute
        skipUnreadableEntries that can be used to ignore archive
        entries that Apache Commons Compress knows it cannot handle
        (like encrypted ZIP entries or sparse files in GNU tar
        archives).
      </action>
      <action type="update">
        The preserveLeadingSlashes attribute of the &lt;tar&gt; task
        now works as expected.
      </action>
    </release>
  </document>
