You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/11/12 21:12:38 UTC

(commons-compress) branch master updated: Prepare for the next release candidate

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git


The following commit(s) were added to refs/heads/master by this push:
     new 5ecccd983 Prepare for the next release candidate
5ecccd983 is described below

commit 5ecccd9838f050073bb834ff7024d82291a7bf1b
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Nov 12 16:11:42 2023 -0500

    Prepare for the next release candidate
---
 NOTICE.txt                          |   50 -
 README.md                           |   78 +-
 RELEASE-NOTES.txt                   |   88 ++
 pom.xml                             |    1 +
 src/changes/changes.xml             |    2 +-
 src/changes/release-notes.vm        | 1736 +----------------------------------
 src/site/xdoc/download_compress.xml |   26 +-
 src/site/xdoc/mail-lists.xml        |   38 +-
 8 files changed, 173 insertions(+), 1846 deletions(-)

diff --git a/NOTICE.txt b/NOTICE.txt
index 296602a8c..0492ed0f8 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -3,53 +3,3 @@ Copyright 2002-2023 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (https://www.apache.org/).
-
----
-
-The files in the package org.apache.commons.compress.archivers.sevenz
-were derived from the LZMA SDK, version 9.20 (C/ and CPP/7zip/),
-which has been placed in the public domain:
-
-"LZMA SDK is placed in the public domain." (http://www.7-zip.org/sdk.html)
-
----
-
-The test file lbzip2_32767.bz2 has been copied from libbzip2's source
-repository:
-
-This program, "bzip2", the associated library "libbzip2", and all
-documentation, are copyright (C) 1996-2019 Julian R Seward.  All
-rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. The origin of this software must not be misrepresented; you must 
-   not claim that you wrote the original software.  If you use this 
-   software in a product, an acknowledgment in the product 
-   documentation would be appreciated but is not required.
-
-3. Altered source versions must be plainly marked as such, and must
-   not be misrepresented as being the original software.
-
-4. The name of the author may not be used to endorse or promote 
-   products derived from this software without specific prior written 
-   permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Julian Seward, jseward@acm.org
diff --git a/README.md b/README.md
index 6a7b513be..5e87cb560 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,7 @@ Apache Commons Compress
 [![Java CI](https://github.com/apache/commons-compress/actions/workflows/maven.yml/badge.svg)](https://github.com/apache/commons-compress/actions/workflows/maven.yml)
 [![Coverage Status](https://codecov.io/gh/apache/commons-compress/branch/master/graph/badge.svg)](https://app.codecov.io/gh/apache/commons-compress)
 [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.commons/commons-compress/badge.svg?gav=true)](https://maven-badges.herokuapp.com/maven-central/org.apache.commons/commons-compress/?gav=true)
-[![Javadocs](https://javadoc.io/badge/org.apache.commons/commons-compress/1.24.0.svg)](https://javadoc.io/doc/org.apache.commons/commons-compress/1.24.0)
+[![Javadocs](https://javadoc.io/badge/org.apache.commons/commons-compress/1.25.0.svg)](https://javadoc.io/doc/org.apache.commons/commons-compress/1.25.0)
 [![CodeQL](https://github.com/apache/commons-compress/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/apache/commons-compress/actions/workflows/codeql-analysis.yml)
 [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/apache/commons-compress/badge)](https://api.securityscorecards.dev/projects/github.com/apache/commons-compress)
 
@@ -62,8 +62,8 @@ More information can be found on the [Apache Commons Compress homepage](https://
 The [Javadoc](https://commons.apache.org/proper/commons-compress/apidocs) can be browsed.
 Questions related to the usage of Apache Commons Compress should be posted to the [user mailing list][ml].
 
-Where can I get the latest release?
------------------------------------
+Getting the latest release
+--------------------------
 You can download source and binaries from our [download page](https://commons.apache.org/proper/commons-compress/download_compress.cgi).
 
 Alternatively, you can pull it from  the central Maven repositories:
@@ -72,17 +72,25 @@ Alternatively, you can pull it from  the central Maven repositories:
 <dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-compress</artifactId>
-  <version>1.24.0</version>
+  <version>1.25.0</version>
 </dependency>
 ```
 
+Building
+--------
+
+Building requires a Java JDK and [Apache Maven](https://maven.apache.org/). 
+The required Java version is found in the `pom.xml` as the `maven.compiler.source` property.
+
+From a command shell, run `mvn` without arguments to invoke the default Maven goal to run all tests and checks.
+
 Contributing
 ------------
 
 We accept Pull Requests via GitHub. The [developer mailing list](https://commons.apache.org/mail-lists.html) is the main channel of communication for contributors.
 There are some guidelines which will make applying PRs easier for us:
 + No tabs! Please use spaces for indentation.
-+ Respect the code style.
++ Respect the existing code style for each file.
 + Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change.
 + Provide JUnit tests for your changes and make sure your changes don't break any existing tests by running ```mvn```.
 
@@ -91,13 +99,13 @@ You can learn more about contributing via GitHub in our [contribution guidelines
 
 License
 -------
-This code is under the [Apache License v2](https://www.apache.org/licenses/LICENSE-2.0).
+This code is licensed under the [Apache License v2](https://www.apache.org/licenses/LICENSE-2.0).
 
 See the `NOTICE.txt` file for required notices and attributions.
 
-Donations
----------
-You like Apache Commons Compress? Then [donate back to the ASF](https://www.apache.org/foundation/contributing.html) to support the development.
+Donating
+--------
+You like Apache Commons Compress? Then [donate back to the ASF](https://www.apache.org/foundation/contributing.html) to support development.
 
 Additional Resources
 --------------------
@@ -111,54 +119,4 @@ Additional Resources
 Apache Commons Components
 -------------------------
 
-| Component | GitHub Repository | Apache Homepage |
-| --------- | ----------------- | ----------------|
-| Apache Commons BCEL | [commons-bcel](https://github.com/apache/commons-bcel) | [commons-bcel](https://commons.apache.org/proper/commons-bcel) |
-| Apache Commons Beanutils | [commons-beanutils](https://github.com/apache/commons-beanutils) | [commons-beanutils](https://commons.apache.org/proper/commons-beanutils) |
-| Apache Commons BSF | [commons-bsf](https://github.com/apache/commons-bsf) | [commons-bsf](https://commons.apache.org/proper/commons-bsf) |
-| Apache Commons Build-plugin | [commons-build-plugin](https://github.com/apache/commons-build-plugin) | [commons-build-plugin](https://commons.apache.org/proper/commons-build-plugin) |
-| Apache Commons Chain | [commons-chain](https://github.com/apache/commons-chain) | [commons-chain](https://commons.apache.org/proper/commons-chain) |
-| Apache Commons CLI | [commons-cli](https://github.com/apache/commons-cli) | [commons-cli](https://commons.apache.org/proper/commons-cli) |
-| Apache Commons Codec | [commons-codec](https://github.com/apache/commons-codec) | [commons-codec](https://commons.apache.org/proper/commons-codec) |
-| Apache Commons Collections | [commons-collections](https://github.com/apache/commons-collections) | [commons-collections](https://commons.apache.org/proper/commons-collections) |
-| Apache Commons Compress | [commons-compress](https://github.com/apache/commons-compress) | [commons-compress](https://commons.apache.org/proper/commons-compress) |
-| Apache Commons Configuration | [commons-configuration](https://github.com/apache/commons-configuration) | [commons-configuration](https://commons.apache.org/proper/commons-configuration) |
-| Apache Commons Crypto | [commons-crypto](https://github.com/apache/commons-crypto) | [commons-crypto](https://commons.apache.org/proper/commons-crypto) |
-| Apache Commons CSV | [commons-csv](https://github.com/apache/commons-csv) | [commons-csv](https://commons.apache.org/proper/commons-csv) |
-| Apache Commons Daemon | [commons-daemon](https://github.com/apache/commons-daemon) | [commons-daemon](https://commons.apache.org/proper/commons-daemon) |
-| Apache Commons DBCP | [commons-dbcp](https://github.com/apache/commons-dbcp) | [commons-dbcp](https://commons.apache.org/proper/commons-dbcp) |
-| Apache Commons Dbutils | [commons-dbutils](https://github.com/apache/commons-dbutils) | [commons-dbutils](https://commons.apache.org/proper/commons-dbutils) |
-| Apache Commons Digester | [commons-digester](https://github.com/apache/commons-digester) | [commons-digester](https://commons.apache.org/proper/commons-digester) |
-| Apache Commons Email | [commons-email](https://github.com/apache/commons-email) | [commons-email](https://commons.apache.org/proper/commons-email) |
-| Apache Commons Exec | [commons-exec](https://github.com/apache/commons-exec) | [commons-exec](https://commons.apache.org/proper/commons-exec) |
-| Apache Commons Fileupload | [commons-fileupload](https://github.com/apache/commons-fileupload) | [commons-fileupload](https://commons.apache.org/proper/commons-fileupload) |
-| Apache Commons Functor | [commons-functor](https://github.com/apache/commons-functor) | [commons-functor](https://commons.apache.org/proper/commons-functor) |
-| Apache Commons Geometry | [commons-geometry](https://github.com/apache/commons-geometry) | [commons-geometry](https://commons.apache.org/proper/commons-geometry) |
-| Apache Commons Graph | [commons-graph](https://github.com/apache/commons-graph) | [commons-graph](https://commons.apache.org/proper/commons-graph) |
-| Apache Commons Imaging | [commons-imaging](https://github.com/apache/commons-imaging) | [commons-imaging](https://commons.apache.org/proper/commons-imaging) |
-| Apache Commons IO | [commons-io](https://github.com/apache/commons-io) | [commons-io](https://commons.apache.org/proper/commons-io) |
-| Apache Commons JCI | [commons-jci](https://github.com/apache/commons-jci) | [commons-jci](https://commons.apache.org/proper/commons-jci) |
-| Apache Commons JCS | [commons-jcs](https://github.com/apache/commons-jcs) | [commons-jcs](https://commons.apache.org/proper/commons-jcs) |
-| Apache Commons Jelly | [commons-jelly](https://github.com/apache/commons-jelly) | [commons-jelly](https://commons.apache.org/proper/commons-jelly) |
-| Apache Commons Jexl | [commons-jexl](https://github.com/apache/commons-jexl) | [commons-jexl](https://commons.apache.org/proper/commons-jexl) |
-| Apache Commons Jxpath | [commons-jxpath](https://github.com/apache/commons-jxpath) | [commons-jxpath](https://commons.apache.org/proper/commons-jxpath) |
-| Apache Commons Lang | [commons-lang](https://github.com/apache/commons-lang) | [commons-lang](https://commons.apache.org/proper/commons-lang) |
-| Apache Commons Logging | [commons-logging](https://github.com/apache/commons-logging) | [commons-logging](https://commons.apache.org/proper/commons-logging) |
-| Apache Commons Math | [commons-math](https://github.com/apache/commons-math) | [commons-math](https://commons.apache.org/proper/commons-math) |
-| Apache Commons Net | [commons-net](https://github.com/apache/commons-net) | [commons-net](https://commons.apache.org/proper/commons-net) |
-| Apache Commons Numbers | [commons-numbers](https://github.com/apache/commons-numbers) | [commons-numbers](https://commons.apache.org/proper/commons-numbers) |
-| Apache Commons Parent | [commons-parent](https://github.com/apache/commons-parent) | [commons-parent](https://commons.apache.org/proper/commons-parent) |
-| Apache Commons Pool | [commons-pool](https://github.com/apache/commons-pool) | [commons-pool](https://commons.apache.org/proper/commons-pool) |
-| Apache Commons Proxy | [commons-proxy](https://github.com/apache/commons-proxy) | [commons-proxy](https://commons.apache.org/proper/commons-proxy) |
-| Apache Commons RDF | [commons-rdf](https://github.com/apache/commons-rdf) | [commons-rdf](https://commons.apache.org/proper/commons-rdf) |
-| Apache Commons Release-plugin | [commons-release-plugin](https://github.com/apache/commons-release-plugin) | [commons-release-plugin](https://commons.apache.org/proper/commons-release-plugin) |
-| Apache Commons Rng | [commons-rng](https://github.com/apache/commons-rng) | [commons-rng](https://commons.apache.org/proper/commons-rng) |
-| Apache Commons Scxml | [commons-scxml](https://github.com/apache/commons-scxml) | [commons-scxml](https://commons.apache.org/proper/commons-scxml) |
-| Apache Commons Signing | [commons-signing](https://github.com/apache/commons-signing) | [commons-signing](https://commons.apache.org/proper/commons-signing) |
-| Apache Commons Skin | [commons-skin](https://github.com/apache/commons-skin) | [commons-skin](https://commons.apache.org/proper/commons-skin) |
-| Apache Commons Statistics | [commons-statistics](https://github.com/apache/commons-statistics) | [commons-statistics](https://commons.apache.org/proper/commons-statistics) |
-| Apache Commons Testing | [commons-testing](https://github.com/apache/commons-testing) | [commons-testing](https://commons.apache.org/proper/commons-testing) |
-| Apache Commons Text | [commons-text](https://github.com/apache/commons-text) | [commons-text](https://commons.apache.org/proper/commons-text) |
-| Apache Commons Validator | [commons-validator](https://github.com/apache/commons-validator) | [commons-validator](https://commons.apache.org/proper/commons-validator) |
-| Apache Commons VFS | [commons-vfs](https://github.com/apache/commons-vfs) | [commons-vfs](https://commons.apache.org/proper/commons-vfs) |
-| Apache Commons Weaver | [commons-weaver](https://github.com/apache/commons-weaver) | [commons-weaver](https://commons.apache.org/proper/commons-weaver) |
+Please see the [list of components](https://commons.apache.org/components.html)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 48006a1ec..484a987e3 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,3 +1,91 @@
+Apache Commons Compress 
+Version 1.25.0-SNAPSHOT
+Release Notes
+
+INTRODUCTION:
+
+Apache Commons Compress defines an API for working with compression and
+archive formats.  These include: bzip2, gzip, pack200, LZMA, XZ, Snappy,
+traditional Unix Compress, DEFLATE, DEFLATE64, LZ4, Brotli, Zstandard and
+ar, cpio, jar, tar, zip, dump, 7z, arj.
+
+Apache Commons Compress defines an API for working with
+compression and archive formats.  These include: bzip2, gzip, pack200,
+LZMA, XZ, Snappy, traditional Unix Compress, DEFLATE, DEFLATE64, LZ4,
+Brotli, Zstandard and ar, cpio, jar, tar, zip, dump, 7z, arj.
+
+Minor feature and maintenance release.
+
+Changes in this version include:
+
+New features:
+o           Add GzipParameters.getFileName() and deprecate getFilename(). Thanks to Gary Gregory. 
+o           Add GzipParameters.setFileName(String) and deprecate setFilename(String). Thanks to Gary Gregory. 
+o           Add FileNameUtil.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add FileNameUtil.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. 
+o           Add FileNameUtil.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add BZip2Utils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add BZip2Utils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. 
+o           Add BZip2Utils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add LZMAUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add LZMAUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. 
+o           Add LZMAUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add XYUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add XYUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. 
+o           Add XYUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add GzipUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add GzipUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. 
+o           Add GzipUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. 
+o           Add SevenZOutputFile.putArchiveEntry(SevenZArchiveEntry) and deprecate putArchiveEntry(ArchiveEntry). Thanks to Gary Gregory. 
+o           Add generics to ChangeSet and ChangeSetPerformer. Thanks to Gary Gregory. 
+o           Add generics to ArchiveStreamProvider and friends. Thanks to Gary Gregory. 
+o           Add a generic type parameter to ArchiveOutputStream and avoid unchecked/unconfirmed type casts in subclasses. Thanks to Gary Gregory. 
+o           Add a generic type parameter to ArchiveInputStream and deprecate redundant get methods in subclasses. Thanks to Gary Gregory. 
+o COMPRESS-648:  Add ability to restrict autodetection in CompressorStreamFactory #433. Thanks to Yakov Shafranovich, Gary Gregory. 
+
+Fixed Bugs:
+o           Precompile regular expression in ArArchiveInputStream.isBSDLongName(String). Thanks to Gary Gregory. 
+o           Precompile regular expression in ArArchiveInputStream.isGNULongName(String). Thanks to Gary Gregory. 
+o           Precompile regular expression in TarArchiveEntry.parseInstantFromDecimalSeconds(String). Thanks to Gary Gregory. 
+o           Precompile regular expression in ChangeSet.addDeletion(Change). Thanks to Gary Gregory. 
+o COMPRESS-649:  Improve performance in BlockLZ4CompressorOutputStream. Thanks to Gary Gregory. 
+o           Null-guard Lister.main(String[]) for programmatic invocation. Thanks to Gary Gregory. 
+o           NPE in pack200.NewAttributeBands.Reference.addAttributeToBand(NewAttribute, InputStream). Thanks to Gary Gregory. 
+o           Incorrect lazy initialization and update of static field in pack200.CodecEncoding.getSpecifier(Codec, Codec). Thanks to Gary Gregory. 
+o           Incorrect string comparison in unpack200.AttributeLayout.numBackwardsCallables(). Thanks to Gary Gregory. 
+o           Inefficient use of keySet iterator instead of entrySet iterator in pack200.PackingOptions.addOrUpdateAttributeActions(List, Map, int). Thanks to Gary Gregory. 
+o           Package private class pack200.IcBands.IcTuple should be a static inner class. Thanks to Gary Gregory. 
+o           Private class ZipFile.BoundedFileChannelInputStream should be a static inner class. Thanks to Gary Gregory. 
+o           Refactor internal SevenZ AES256SHA256Decoder InputStream into a named static inner class. Thanks to Gary Gregory. 
+o           Refactor internal SevenZ AES256SHA256Decoder OutputStream into a named static inner class. Thanks to Gary Gregory. 
+o           Use the root Locale for string conversion of command line options in org.apache.commons.compress.archivers.sevenz.CLI. Thanks to Gary Gregory. 
+o           Calling PackingUtils.config(PackingOptions) with null now closes the internal FileHandler. Thanks to Gary Gregory. 
+o COMPRESS-650:  LZ4 compressor throws IndexOutOfBoundsException. Thanks to Chad Preisler. 
+o COMPRESS-632:  LZWInputStream.initializeTables(int) should throw IllegalArgumentException instead of ArrayIndexOutOfBoundsException. Thanks to Yakov Shafranovich, Gary Gregory. 
+o COMPRESS-647:  Throw IOException instead of ArrayIndexOutOfBoundsException when reading Zip with data descriptor entries. Thanks to Robin Schimpf, Gary Gregory. 
+
+Changes:
+o           Bump org.slf4j:slf4j-api from 2.0.8 to 2.0.9 #413. Thanks to Dependabot. 
+o           Bump commons-io:commons-io from 2.13.0 to 2.15.0. Thanks to Gary Gregory. 
+o           Bump com.github.luben:zstd-jni from 1.5.5-5 to 1.5.5-10 #422, #431. Thanks to Dependabot. 
+o           Bump org.ow2.asm:asm from 9.5 to 9.6 #421. Thanks to Dependabot. 
+o           Bump org.apache.commons:commons-parent from 62 to 64 #421. Thanks to Dependabot, Gary Gregory. 
+
+
+Historical list of changes: https://commons.apache.org/proper/commons-compress/changes-report.html
+
+For complete information on Apache Commons Compress, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Compress website:
+
+https://commons.apache.org/proper/commons-compress/
+
+Download page: https://commons.apache.org/proper/commons-compress/download_io.cgi
+
+Have fun!
+-Apache Commons Team
+
+==============================================================================
+
               Apache Commons Compress 1.24.0 RELEASE NOTES
 
 Apache Commons Compress defines an API for working with
diff --git a/pom.xml b/pom.xml
index 9f6527797..393d633cd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,7 @@ Brotli, Zstandard and ar, cpio, jar, tar, zip, dump, 7z, arj.
     <commons.jira.pid>12310904</commons.jira.pid>
     <!-- configuration bits for cutting a release candidate -->
     <commons.release.version>1.25.0</commons.release.version>
+    <commons.release.next>1.25.1</commons.release.next>
     <commons.bc.version>1.24.0</commons.bc.version>
     <commons.rc.version>RC1</commons.rc.version>
     <mockito.version>4.11.0</mockito.version>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 9359f8210..41047392e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -44,7 +44,7 @@ The <action> type attribute can be add,update,fix,remove.
     <title>Apache Commons Compress Release Notes</title>
   </properties>
   <body>
-    <release version="1.25.0" date="202Y-MM-DD" description="Minor feature and maintenance release.">
+    <release version="1.25.0" date="2023-11-12" description="Minor feature and maintenance release.">
       <!-- ADD -->
       <action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.getFileName() and deprecate getFilename().</action>
       <action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.setFileName(String) and deprecate setFilename(String).</action>
diff --git a/src/changes/release-notes.vm b/src/changes/release-notes.vm
index 9ac3d32ea..5963e9eae 100644
--- a/src/changes/release-notes.vm
+++ b/src/changes/release-notes.vm
@@ -14,31 +14,45 @@
 ## KIND, either express or implied.  See the License for the
 ## specific language governing permissions and limitations
 ## under the License.
-              ${project.name} RELEASE NOTES
+
+Apache Commons Compress 
+Version ${version}
+Release Notes
+
+INTRODUCTION:
+
+Apache Commons Compress defines an API for working with compression and
+archive formats.  These include: bzip2, gzip, pack200, LZMA, XZ, Snappy,
+traditional Unix Compress, DEFLATE, DEFLATE64, LZ4, Brotli, Zstandard and
+ar, cpio, jar, tar, zip, dump, 7z, arj.
 
 $introduction.replaceAll("(?<!\015)\012", "
 ")
 
+##
 ## N.B. the available variables are described here:
 ## http://maven.apache.org/plugins/maven-changes-plugin/examples/using-a-custom-announcement-template.html
+##
 ## Hack to improve layout: replace all pairs of spaces with a single new-line
 $release.description.replaceAll("  ", "
 ")
 
-## Fix up indentation for multi-line action descriptions
-#macro ( indent )
-#set($action=$action.replaceAll("(?m)^  +","  "))
-#end
+##
 #if ($release.getActions().size() == 0)
 No changes defined in this version.
 #else
+Changes in this version include:
+
+## indent to be used if there is no issue attribute.
+## should be the same as the indent in the changes.xml file
+## less 2 spaces for the 'o' and trailing space
+#set($indent='          ')
 #if ($release.getActions('add').size() !=0)
 New features:
 #foreach($actionItem in $release.getActions('add'))
 ## Use replaceAll to fix up LF-only line ends on Windows.
 #set($action=$actionItem.getAction().replaceAll("\n","
 "))
-#indent()
 #if ($actionItem.getIssue())
 #set($issue=$actionItem.getIssue())
 #else
@@ -49,12 +63,7 @@ New features:
 #else
 #set($dueto="")
 #end
-o ${action}##
-#if($!issue != "")
-
-  Issue: $issue. #if($!dueto != "")Thanks to $dueto. #end
-#else#if($!dueto != "") Thanks to $dueto. #end
-#end
+o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto != "")Thanks to $dueto. #end
 
 #set($issue="")
 #set($dueto="")
@@ -67,7 +76,6 @@ Fixed Bugs:
 ## Use replaceAll to fix up LF-only line ends on Windows.
 #set($action=$actionItem.getAction().replaceAll("\n","
 "))
-#indent()
 #if ($actionItem.getIssue())
 #set($issue=$actionItem.getIssue())
 #else
@@ -78,12 +86,7 @@ Fixed Bugs:
 #else
 #set($dueto="")
 #end
-o ${action}##
-#if($!issue != "")
-
-  Issue: $issue. #if($!dueto != "")Thanks to $dueto. #end
-#else#if($!dueto != "") Thanks to $dueto. #end
-#end
+o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto != "")Thanks to $dueto. #end
 
 #set($issue="")
 #set($dueto="")
@@ -96,7 +99,6 @@ Changes:
 ## Use replaceAll to fix up LF-only line ends on Windows.
 #set($action=$actionItem.getAction().replaceAll("\n","
 "))
-#indent()
 #if ($actionItem.getIssue())
 #set($issue=$actionItem.getIssue())
 #else
@@ -107,12 +109,7 @@ Changes:
 #else
 #set($dueto="")
 #end
-o ${action}##
-#if($!issue != "")
-
-  Issue: $issue. #if($!dueto != "")Thanks to $dueto. #end
-#else#if($!dueto != "") Thanks to $dueto. #end
-#end
+o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto != "")Thanks to $dueto. #end
 
 #set($issue="")
 #set($dueto="")
@@ -125,7 +122,6 @@ Removed:
 ## Use replaceAll to fix up LF-only line ends on Windows.
 #set($action=$actionItem.getAction().replaceAll("\n","
 "))
-#indent()
 #if ($actionItem.getIssue())
 #set($issue=$actionItem.getIssue())
 #else
@@ -136,1690 +132,26 @@ Removed:
 #else
 #set($dueto="")
 #end
-o ${action}##
-#if($!issue != "")
-
-  Issue: $issue. #if($!dueto != "")Thanks to $dueto. #end
-#else#if($!dueto != "") Thanks to $dueto. #end
-#end
-
+o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto != "")Thanks to $dueto. #end
+##
 #set($issue="")
 #set($dueto="")
 #end
 #end
 ## End of main loop
 #end
-#macro ( fixurl $url )
-$url.replaceAll("proper/commons-","")
-#end
-For complete information on ${project.name}, including instructions
-on how to submit bug reports, patches, or suggestions for improvement,
-see the ${project.name} website:
-
-#fixurl ( ${project.url} )
-
-Download it from ${project.url}download_compress.cgi
-
-Old Release Notes
-=================
-
-Release 1.22
-------------
-
-New features:
-o Migrate zip package to use NIO #236.
-  Issue: COMPRESS-602. Thanks to Postelnicu George, Gary Gregory. 
-o Add APK file extension constants: ArchiveStreamFactory.APK, APKM, APKS, XAPK. Thanks to Gary Gregory. 
-o ArchiveStreamFactory.createArchiveInputStream(String, InputStream, String) supports the "APK" format (it's a JAR). Thanks to Gary Gregory. 
-o Expander example now has NIO Path versions of IO File APIs. Thanks to Gary Gregory. 
-o Improve TAR support for file times #254.
-  Issue: COMPRESS-612. Thanks to Andre Brait, Gary Gregory. 
-o Add SevenZArchiveEntry.setContentMethods(SevenZMethodConfiguration...). Thanks to Gary Gregory. 
-
-Fixed Bugs:
-o Fix some compiler warnings in pack200 packages. Thanks to Gary Gregory. 
-o Close File input stream after unpacking in Pack200UnpackerAdapter.unpack(File, JarOutputStream). Thanks to Gary Gregory. 
-o Pack200UnpackerAdapter.unpack(InputStream, JarOutputStream) should not close its given input stream. Thanks to Gary Gregory. 
-o Fix minor problem in examples.
-  Issue: COMPRESS-596. Thanks to Tamas Mucs. 
-o Add a limit to the copy buffer in IOUtils.readRange() to
-  avoid reading more from a channel than asked for.
-  Github Pull Request #214.
-  Issue: COMPRESS-584. Thanks to Matthijs Laan, Peter Lee. 
-o Documentation nits #217. Thanks to Helder Magalh�es, Gary Gregory, PeterAlfredLee. 
-o Replace wrapper Collections.sort is with an instance method directly. #245. Thanks to Arturo Bernal. 
-o Replace manual comparisons with Comparator.comparingInt() #244. Thanks to Arturo Bernal. 
-o Replace manual copy of array contents with System.arraycopy() #246. Thanks to Arturo Bernal. 
-o Fix thread safety issues when encoding 7z password #248. Thanks to Glavo, Bruno P. Kinoshita, PeterAlfredLee, Gary Gregory. 
-o bzip2: calculate median-of-3 on unsigned values #242. Thanks to Peter Dettman. 
-o Use Math.min and Math.max calculations. #247. Thanks to Arturo Bernal, Gary Gregory, Bruno P. Kinoshita. 
-o Expander should be able to work if an entry's name is "./".
-  Issue: COMPRESS-603. Thanks to Matt Sicker. 
-o Ensure compatibility with Java 8 #252.
-  Issue: COMPRESS-604. Thanks to Andre Brait. 
-o Use StringBuilder instead of StringBuffer. #284. Thanks to Arturo Bernal. 
-o Inline variable. Remove redundant local variable. #283. Thanks to Arturo Bernal. 
-o Use compare method #285. Thanks to Arturo Bernal. 
-o Remove Unnecessary interface modifiers #281. Thanks to Arturo Bernal. 
-o Avoid use C-style array declaration. #282. Thanks to Arturo Bernal. 
-o ChecksumVerifyingInputStream.read() does not always validate checksum at end-of-stream. Thanks to Gary Gregory. 
-o Fix TarFileTest #289. Thanks to Matt Juntunen. 
-o Update Wikipedia link in TarUtils.java:627.
-  Issue: COMPRESS-625. Thanks to MrBump, Gary Gregory. 
-o OutOfMemoryError on malformed pack200 input (attributes).
-  Issue: COMPRESS-626. Thanks to Andrii Hudz, Gary Gregory. 
-o OutOfMemoryError on malformed pack200 input (org.apache.commons.compress.harmony.pack200.NewAttributeBands.readNextUnionCase).
-  Issue: COMPRESS-628. Thanks to Andrii Hudz, Gary Gregory. 
-o OutOfMemoryError on malformed unpack200 input (org.apache.commons.compress.harmony.unpack200.NewAttributeBands.readNextUnionCase).
-  Issue: COMPRESS-628. Thanks to Gary Gregory. 
-o Some input streams are not closed in org.apache.commons.compress.harmony.pack200.PackingUtils. Thanks to Gary Gregory. 
-o Pack200 causes a 'archive.3E' error if it?s not in the system class loader.
-  Issue: COMPRESS-627. Thanks to anatawa12, Gary Gregory. 
-
-Changes:
-o Bump actions/cache from 2.1.6 to 3.0.10 #230, #257, #305, #320. Thanks to Dependabot, Gary Gregory. 
-o Bump actions/checkout from 2.3.4 to 3.1.0 #226, #227, #251, #300, #321. Thanks to Dependabot, Gary Gregory. 
-o Bump actions/setup-java from 2 to 3.5.1 #278. Thanks to Dependabot. 
-o Bump github/codeql-action from 1 to 2 #287. Thanks to Dependabot. 
-o Bump mockito-core from 3.11.1 to 4.6.1 #209, #224, #231, #235, #243, #253, #286, #294. Thanks to Dependabot. 
-o Bump org.apache.felix.framework from 7.0.0 to 7.0.1 #208. Thanks to Dependabot. 
-o Bump memoryfilesystem from 2.1.0 to 2.3.0 #212, #237. Thanks to Dependabot. 
-o Bump zstd-jni from 1.5.0-2 to 1.5.2-5 #215, #233, #238, #240, #250, #291, #326. Thanks to Dependabot, Gary Gregory. 
-o Bump Pack200 packages from ASM 3.2 to 9.2 #216. 
-  Breaks binary compatibility in the internals of the pack200 implementation:
-  - org.apache.commons.compress.harmony.pack200.Segment
-  - org.apache.commons.compress.harmony.pack200.SegmentMethodVisitor
-  - org.apache.commons.compress.harmony.pack200.SegmentAnnotationVisitor
-  - org.apache.commons.compress.harmony.pack200.SegmentFieldVisitor
-  Issue: COMPRESS-582. Thanks to Alex Landau, Stephan, Gary Gregory. 
-o Bump asm from 9.2 to 9.4 #279, #322. Thanks to Dependabot. 
-o Bump maven-javadoc-plugin from 3.3.0 to 3.4.1 #221, #249, #288, #308. Thanks to Dependabot. 
-o Bump maven-pmd-plugin from 3.14.0 to 3.19.0 #296, #309, #311. Thanks to Gary Gregory, Dependabot. 
-o Bump pmd from 6.44.0 to 6.50.0. Thanks to Gary Gregory. 
-o Bump commons.japicmp.version from 0.15.3 to 0.16.0. Thanks to Gary Gregory. 
-o Bump maven-bundle-plugin from 5.1.2 to 5.1.8 #234, #239, #290, #292, #301, #304. Thanks to Dependabot. 
-o Bump org.apache.felix.framework from 7.0.1 to 7.0.5 #232, #295. Thanks to Dependabot. 
-o Bump slf4j-api from 1.7.30 to 2.0.3 #213, #241, #258, #310, #314, #315, #318. Thanks to Dependabot. 
-o Bump commons-parent from 52 to 54 #280. Thanks to Dependabot, Gary Gregory. 
-o Bump commons.jacoco.version from 0.8.7 to 0.8.8. Thanks to Gary Gregory. 
-o Bump junit.version from 5.8.2 to 5.9.1 #302, #317. Thanks to Dependabot. 
-o Bump mockito.version from 4.6.1 to 4.8.0 #307, #312. Thanks to Dependabot. 
-o Bump maven-surefire-plugin from 3.0.0-M6 to 3.0.0-M7. Thanks to Gary Gregory. 
-
-For complete information on Apache Commons Compress, including instructions
-on how to submit bug reports, patches, or suggestions for improvement,
-see the Apache Commons Compress website:
-
-https://commons.apache.org/compress/
-
-Download page: ${project.url}download_compress.cgi
-
-Release 1.21
-------------
-
-Compress 1.21 is the first release to require Java 8 to build and run.
-
-SevenZFileOptions has a new setting that needs to be enabled
-explicitly if SevenZFile should try to recover broken archives - a
-feature introduced with Commons Compress 1.19. This is a breaking
-change if you relied on the recovery attempt. The change was made to
-detect broken archives sooner, and to mitigate the OOM exploit.
-
-Several formats now throw IOExceptions when reading broken archives or
-streams that would have caused arbitrary RuntimeExceptions in earlier
-versions of Compress.
-
-New features:
-o Add writePreamble to ZipArchiveInputStream. This method could
-  write raw data to zip archive before any entry was written to
-  the zip archive.
-  For most of the time, this is used to create self-extracting
-  zip.
-  Github Pull Request #127.
-  Issue: COMPRESS-550.
-  Thanks to Scott Frederick.
-o Added support for random access to the TAR packages.
-  Github Pull Request #113.
-  Issue: COMPRESS-540.
-  Thanks to Robin Schimpf.
-o Added support for BufferPool in ZstdCompressorInputStream.
-  Github Pull Request #165.
-  Issue: COMPRESS-565.
-  Thanks to Michael L Heuer.
-o Commons Compress cannot be built with JDK14 due to Pack200 removal.
-  Add Pack200 implementation from Apache Harmony.
-  Issue: COMPRESS-507.
-  Thanks to Gary Gregory, Apache Harmony.
-o Add a new AlwaysWithCompatibility in Zip64Mode, this is a
-  compromise for some libraries including 7z and Expand-Archive
-  Powershell utility(and likely Excel).
-
-  And we will encode both the LFH offset and Disk Number Start
-  in the ZIP64 Extended Information Extra Field - even if only
-  the disk number needs to be encoded.
-
-  Github Pull Request #169.
-  Issue: COMPRESS-565.
-  Thanks to Evgenii Bovykin.
-o gzip deflate buffer size is now configurable.
-  Issue: COMPRESS-566.
-  Thanks to Brett Okken.
-
-Fixed Bugs:
-o Fix bugs in random access of 7z. Problems may happen
-  in a mixture use of random access and sequential access
-  of 7z.
-  Github Pull Request #95.
-  Issue: COMPRESS-505.
-o Fix bugs in random access of 7z. Exceptions are thrown
-  when reading the first entry multiple times by random
-  access.
-  Issue: COMPRESS-510.
-o Add '/' to directories with long name in tar. This is to
-  resolve the ambiguous behavior of the TarArchiveEntry.getName()
-  method between directory with short name and long name.
-  Issue: COMPRESS-509.
-  Thanks to Petr Vasak.
-o Removed the PowerMock dependency.
-  Issue: COMPRESS-520.
-  Thanks to Robin Schimpf.
-o Added improved checks to detect corrupted bzip2 streams and
-  throw the expected IOException rather than obscure
-  RuntimeExceptions.
-  See also COMPRESS-519.
-  Issue: COMPRESS-516.
-o Improved parsing of X5455_ExtendedTimestamp ZIP extra field.
-  Issue: COMPRESS-517.
-o ZipArchiveInputStream and ZipFile will now throw an
-  IOException rather than a RuntimeException if the zip64 extra
-  field of an entry could not be parsed.
-  Issue: COMPRESS-518.
-o Improved detection of corrupt ZIP archives in ZipArchiveInputStream.
-  Issue: COMPRESS-523.
-o Added improved checks to detect corrupted deflate64 streams and
-  throw the expected IOException rather than obscure
-  RuntimeExceptions.
-  Issues: COMPRESS-521, COMPRESS-522, COMPRESS-525, COMPRESS-526, and COMPRESS-527.
-o Add the archive name in the exception in the constructor of
-  ZipFile to make it a more specific exception.
-  Github Pull Request #102.
-  Issue: COMPRESS-515.
-  Thanks to ian-lavallee.
-o Throw IOException when it encounters a non-number while parsing pax
-  header.
-  Issue: COMPRESS-530.
-o Throw IOException when a tar archive contains a PAX header
-  without any normal entry following it.
-  Issue: COMPRESS-531.
-o Added improved checks to detect corrupted IMPLODED streams and
-  throw the expected IOException rather than obscure
-  RuntimeExceptions.
-  Issue: COMPRESS-532.
-o Throw expected IOException instead of NumberFormatException if
-  it encounters non-numbers when parsing pax headers for tarball.
-
-  Throw IllegalArgumentException instead of RuntimeExceptions if
-  the file name is longer than 100 bytes with the longFileMode
-  of LONGFILE_ERROR, and address this in java docs.
-
-  Throw IllegalArgumentException instead of RuntimeExceptions if
-  the any of the numeric values of an entry exceeds the limits
-  of a traditional tar header while bigNumberMode is
-  BIGNUMBER_ERROR, and address this in java docs.
-  Issue: COMPRESS-529.
-o Fix for test fails on Windows. The tests are failing because the
-  default charset is not UTF-8.
-  Issue: COMPRESS-543.
-  Thanks to wulf2333.
-o TarArchiveInputStream can not detect a truncated tar in skip()
-  and skipRecordPadding().
-  Issue: COMPRESS-544.
-  Thanks to Aditya Prasad.
-o Make the memory allocation in SevenZFile.readFilesInfo a lazy
-  allocation to avoid OOM when dealing some giant 7z archives.
-  Github Pull Request #120.
-
-  Also added sanity checks before even trying to parse an
-  archive and made SevenZFileOptions' maxMemorySizeInKb apply to
-  the stored metadata for an archive.
-
-  And further added an option that needs to be enabled in order
-  to make SevenZFile try to recover a broken archive. This is a
-  backwards incompatible change.
-  Issue: COMPRESS-542.
-  Thanks to theobisproject.
-o ZipArchiveInputStream should throw an exception if a corrputed
-  zip64 extra field is met.
-  Issue: COMPRESS-546.
-  Thanks to Maksim Zuev.
-o Add a new maven profile in pom.xml for JDK14+ to ignore the
-  failing tests about Pack200.
-
-  This has later been superseeded by adding the Apache Harmony
-  classes for Pack200 support.
-o Throw an IOException when reading the zip extra field if the
-  length is too short.
-  Issue: COMPRESS-548.
-  Thanks to Maksim Zuev.
-o Throw an declared IOException if a null entry is met when
-  reading a global pax header instead of a runtime NPE.
-  Issue: COMPRESS-554.
-  Thanks to Maksim Zuev.
-o ZIP extraction could lead to ArrayIndexOutOfBoundsExceptions
-  rather than the expected IOException.
-  Issue: COMPRESS-545.
-  Thanks to Maksim Zuev.
-o Add asserts for Arrays.copyOf in X0017_StrongEncryptionHeader.
-  Issue: COMPRESS-547.
-  Thanks to Maksim Zuev.
-o Fix for the CFH signature detect in ZipArchiveInputStream.
-  The problem could be reproduced by a zip archive with Data
-  Descriptor and STORED, and without the Data Descriptor
-  signature.
-o The length validation in TarArchiveInputStream.parsePaxHeaders
-  should also consider the headers with length smaller than 1
-  and ignore these headers.
-  Issue: COMPRESS-553.
-  Thanks to Maksim Zuev.
-o Fix accidentally added '/' to file names.
-  This problem is caused by the incomplete fix of COMPRESS-509.
-  Github Pull Request #151.
-  Issue: COMPRESS-558.
-  Thanks to Robin Schimpf.
-o As sparse entries can be successfully parsed now,
-  TarArchiveInputStream.canReadEntryData should return
-  true if the entry is a sparse entry.
-  Github Pull Request #153.
-  Issue: COMPRESS-560.
-  Thanks to Robin Schimpf.
-o SparseFilesTest#testExtractPaxGNU should be skipped
-  if the version of GNU tar binary is 1.28.
-  Github Pull Request #152.
-  Issue: COMPRESS-559.
-  Thanks to Robin Schimpf.
-o Removed an empty loop that was just warming the planet for
-  certain ZIP archives.
-  Github Pull Request #172.
-  Thanks to Fabian Meumertzheim.
-o Made some of the stream classes used internally throw
-  IOExceptions on illegal arguments rather than
-  RuntimeExceptions to make it more likely that corrupt archives
-  cause expected checked exceptions rather than RuntimException
-  for various formats.
-
-  Fixes a specific case for ZIP but affects other formats as
-  well.
-  Issue: COMPRESS-567.
-o Simplify Assertions #205.
-  Thanks to Arturo Bernal.
-o Checked the sizes read for archive entries and reject archives
-  as broken with negative entry sizes.
-
-  Fixes an infinite loop in the new TarFile class but affects
-  several formats.
-  Issue: COMPRESS-569.
-o OSGi detection was broken and so we always cached whether
-  XZ/brotli/zstd/LZMA have been available even in OSGi
-  environments.
-  Issue: COMPRESS-552.
-o SevenZFile.getEntries now return a copy of entries.
-  Issue: COMPRESS-571.
-o Handling of sparse tar entries has been hardened to ensure bad
-  inputs cause expected IOExceptions rather than RuntimeExceptions.
-  Issue: COMPRESS-575.
-o The parser for GNU sparse tar headers could throw a
-  NullPointerExcpetion rather than an IOException if the archive
-  ended while more sparse headers were expected.
-
-Changes:
-o Made sure ZstdCompressorOutputStream no longer used
-  deprecated ZstOutputStream constructors.
-  Github Pull Request #94.
-  Thanks to Peter Alfred Lee.
-o Make compression level of ParallelScatterZipCreator
-  configurable via a new constructor.
-  Issue: COMPRESS-504.
-o Made an inner class static
-  Github Pull Request #107.
-  Issue: COMPRESS-536.
-  Thanks to Jin Xu.
-o added an early exit to a loop in BZip2CompressorOutputStream
-  Github Pull Request #106.
-  Issue: COMPRESS-535.
-  Thanks to Jin Xu.
-o Update the class of variable file in TarArchiveEntry from
-  java.io.File to java.nio.file.Path. Corresponding constructors
-  and methods are also modified/added.
-
-  NOTE: The userName, groupName, userID and groupID will also be
-  set if they are available. The userName and groupName was not
-  set previously, and the previous value of UserID:GroupID was
-  0:0 by default.
-  Please note this may cause a reproducibility problem.
-
-  Github Pull Request #97.
-  Issue: COMPRESS-404.
-  Thanks to theobisproject.
-o Reuse the record buffer in TarArchiveInputStream.
-  Issue: COMPRESS-539.
-  Thanks to Robin Schimpf.
-o Add SevenZOutputFile.write(InputStream).
-  Thanks to Gary Gregory.
-o Add SevenZOutputFile.write(Path, OpenOption...).
-  Thanks to Gary Gregory.
-o Add SevenZOutputFile.createArchiveEntry(Path, String, LinkOption...).
-  Thanks to Gary Gregory.
-o Add ArArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...).
-  Thanks to Gary Gregory.
-o Add ArArchiveEntry(Path, String, LinkOption...).
-  Thanks to Gary Gregory.
-o Add ctor CpioArchiveEntry(Path, String, LinkOption...).
-  Thanks to Gary Gregory.
-o Add ctor CpioArchiveEntry(short, Path, String, LinkOption...).
-  Thanks to Gary Gregory.
-o Add CpioArchiveEntry.setTime(FileTime).
-  Thanks to Gary Gregory.
-o Add TarArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...).
-  Thanks to Gary Gregory.
-o Add ctor TarArchiveEntry(Path, String, LinkOption...).
-  Thanks to Gary Gregory.
-o Add IOUtils.EMPTY_LINK_OPTIONS.
-  Thanks to Gary Gregory.
-o Add Path support to ZipArchiveOutputStream #123.
-  Thanks to Gary Gregory.
-o Some minor improvements.
-  Github Pull Request #157.
-  Issue: COMPRESS-561.
-  Thanks to Arturo Bernal.
-o Update from Java 7 to 8.
-o Update GitHub actions/checkout from v1 to v2.3.4, #114, #124, #139, #150.
-  Thanks to Dependabot.
-o Update actions/setup-java from v1.4.0 to v2, #125, #133, #141.
-  Thanks to Dependabot, Gary Gregory.
-o Update com.github.luben:zstd-jni from 1.4.4-7 to 1.5.0-2, #118, #159, #173, #174, #203.
-  Thanks to Dependabot, Gary Gregory.
-o Update tests slf4j-api from 1.7.26 to 1.7.30 #117.
-  Thanks to Dependabot.
-o Update maven-pmd-plugin from 3.12.0 to 3.14.0, #115, #154.
-  Thanks to Dependabot.
-o Update maven-bundle-plugin from 3.5.1 to 5.1.2 #116, #180.
-  Thanks to Dependabot.
-o Bump memoryfilesystem from 1.3.0 to 2.1.0 #131.
-  Thanks to Dependabot.
-o Bump actions/cache from v2 to v2.1.6, #164, #200.
-  Thanks to Dependabot.
-o Bump junit from 4.13 to 4.13.2, #143, #167.
-  Thanks to Dependabot.
-o Bump mockito-core from 1.10.19 to 3.11.1, #161, #170, #204.
-  Thanks to Dependabot.
-o Bump commons.jacoco.version from 0.8.5 to 0.8.7 (Java 16 builds).
-  Thanks to Gary Gregory.
-o Bump org.apache.felix:org.apache.felix.framework from 6.0.3 to 7.0.0 (Java 16 builds).
-  Thanks to Gary Gregory.
-o Bump commons.japicmp.version from 0.14.3 to 0.15.3 (Java 16 builds).
-  Thanks to Gary Gregory.
-o Bump commons.javadoc.version from 3.2.0 to 3.3.0.
-  Thanks to Gary Gregory.
-o Update com.github.luben:zstd-jni from 1.4.8-7 to 1.4.9-1 #176.
-  Thanks to Dependabot.
-o Update org.tukaani:xz from 1.8 to 1.9
-o Some minor improvements.
-  Github Pull Request #193.
-  Issue: COMPRESS-577.
-  Thanks to Arturo Bernal.
-o Java8 improvements.
-  Github Pull Request #194.
-  Issue: COMPRESS-578.
-  Thanks to Arturo Bernal.
-o Remove redundant local variable.
-  Github Pull Request #195.
-  Issue: COMPRESS-579.
-  Thanks to Arturo Bernal.
-o Remove redundant operation
-  Github Pull Request #196.
-  Issue: COMPRESS-580.
-  Thanks to Arturo Bernal.
-
-Release 1.20
-------------
-
-Commons Compress 1.20 like any version of Commons Compress since 1.3
-can not be built from sources using Java 14 as Java 14 removes
-support for the Pack200 format. We will address this issue with the
-next release.
-
-Fixed Bugs:
-o SevenZFile could throw NullPointerException rather than
-  IOException for certain archives. In addition it now handles
-  certain empty archives more gracefully.
-  Issue: COMPRESS-492.
-o Deflate64CompressorInputStream.read would return 0 for some
-  inputs in violation of the InputStream.read contract.
-  Issue: COMPRESS-491.
-o SeekableInMemoryByteChannel's truncate didn't set position
-  according to the spec in an edge case.
-  Issue: COMPRESS-499.
-o BZip2CompressorInputStream now incorporates a similar patch as
-  the one that fixed CVE-2019-12900 in libbzip2.
-
-  Commons Compress has not been vulnerable to this CVE as it
-  would have rejected a file with too many selectors. With this
-  patch Commons Compress will be able to read certain archives
-  that would have caused errors in Compress 1.19. Thanks to Joseph Allemandou.
-
-Changes:
-o Update optional library com.github.luben:zstd-jni from
-  1.4.0-1 to 1.4.4-7.
-  Issue: COMPRESS-493.
-o Update tests from org.apache.felix:org.apache.felix.framework
-  6.0.2 to 6.0.3.
-o SevenZFile can now recover from a certain corruption that
-  seems to happen occasionally when split archives are created.
-  Issue: COMPRESS-497.
-  Thanks to Stefan Schlott.
-o Added random access support to SevenZFile.
-  Issue: COMPRESS-342.
-  Thanks to Peter Alfred Lee.
-o Added support for split ZIP archives.
-  Issue: COMPRESS-477.
-  Thanks to Peter Alfred Lee.
-o Added support for reading sparse entries to the TAR package.
-  Issue: COMPRESS-124.
-  Thanks to Peter Alfred Lee.
-o Update JUnit from 4.12 to 4.13.
-
-Removed:
-o Removed the extraction code from the example CLI class inside
-  of the SevenZ package. Not only is it superseeded by the
-  examples package, its implementation was vulnerable to the
-  ZipSlip attack.
-  Issue: COMPRESS-495.
-
-Release 1.19
-------------
-
-ZipArchiveInputStream and ZipFile will no longer throw an exception if
-an extra field generally understood by Commons Compress is malformed
-but rather turn them into UnrecognizedExtraField instances.  You can
-influence the way extra fields are parsed in more detail by using the
-new getExtraFields(ExtraFieldParsingBehavior) method of
-ZipArchiveEntry now.
-
-Some of the ZIP extra fields related to strong encryption will now
-throw ZipExceptions rather than ArrayIndexOutOfBoundsExceptions in
-certain cases when used directly. There is no practical difference
-when they are read via ZipArchiveInputStream or ZipFile.
-
-New features:
-o It is now possible to skip parsing of local file headers when
-  using ZipFile which may speed up reading the archive at the
-  cost of potentially missing important information. See the
-  javadocs of the ZipFile class for details.
-  Issue: COMPRESS-466.
-o TarArchiveInputStream has a new constructor-arg lenient that
-  can be used to accept certain broken archives.
-  Issue: COMPRESS-469.
-o ArjArchiveEntry and SevenZArchiveEntry now implement hashCode
-  and equals.
-  Issue: COMPRESS-475.
-o Added a MultiReadOnlySeekableByteChannel class
-  that can be used to concatenate the parts of a multi volume 7z
-  archive so that SevenZFile can read them.
-  Issue: COMPRESS-231.
-  Thanks to Tim Underwood.
-
-Fixed Bugs:
-o ZipArchiveInputStream could forget the compression level has
-  changed under certain circumstances.
-o Fixed another potential resource leak in
-  ParallelScatterZipCreator#writeTo.
-  Issue: COMPRESS-470.
-o ArArchiveInputStream could think it had hit EOF prematurely.
-  Github Pull Request #74.
-  Thanks to Alex Bertram.
-o Throw IOException rather than RuntimeExceptions for certain
-  malformed LZ4 or Snappy inputs.
-  Issue: COMPRESS-490.
-o ZipArchiveInputStream failed to read stored entries with a
-  data descriptor if the data descriptor didn't use the
-  signature invented by InfoZIP.
-  Issue: COMPRESS-482.
-
-Changes:
-o SevenZFile now provides a way to cap memory consumption for
-  LZMA(2) compressed content.
-  Github Pull Request #76.
-  Issue: COMPRESS-481.
-  Thanks to Robin Schimpf.
-o The ARJ package has been updated to contain constants for more
-  recent specifications.
-  Issue: COMPRESS-464.
-  Thanks to Rostislav Krasny.
-o Update optional library zstd-jni from 1.3.3-3 to 1.4.0-1.
-  Issue: COMPRESS-484.
-o ParallelScatterZipCreator now writes the entries to the
-  gathered output in the same order they have been added.
-  Github Pull Requests #78 and #79.
-  Issue: COMPRESS-485.
-  Thanks to Hervé Boutemy, Tibor Digana.
-o The Expander and Archive example classes can leak resources
-  they have wrapped around passed in streams or channels. The
-  methods consuming streams and channels have been adapted to
-  give the calling code a chance to deal with those wrapper
-  resources.
-  Issue: COMPRESS-486.
-o ZipArchiveInputStream and ZipFile no longer assume Commons
-  Compress would understand extra fields better than the writer
-  of the archive and silently turn extra fields that Commons
-  Compress should understand into UnrecognizedExtraFields if
-  parsing said fields fails.
-  It is now possible to take more control over the extra field
-  parsing process with a new overload of
-  ZipArchiveEntry#getExtraFields.
-  Issue: COMPRESS-479.
-o ZipArchiveInputStream will now throw an exception if reading a
-  stored entry with a data descriptor and the data descriptor
-  doesn't match what it has actually read.
-
-  The most common case for a situation like this is a stored ZIP
-  archive inside of the archive ZipArchiveInputStream currently
-  reads. In such a case ZipArchiveInputStream would happily
-  extract the contained archive and stop once the central
-  directory of the inner archive has been hit. This is a case
-  where ZipArchiveInputStream simply can not be used and only
-  ZipFile is able to read the archive.
-
-  The only other explanation is a broken archive. So the
-  exception prevents users from thinking they had successfully
-  read the contents of the archive.
-  Issue: COMPRESS-483.
-o The 7zip tools provide a default name for archive entries
-  without name; SevenZFile returns a null name for such
-  entries. A new method getDefaultName has been added to derive
-  the same name the 7zip tools would use and an option has been
-  added that sets SevenZArchiveEntry's name to the default name
-  if it is not contained inside the archive.
-  Issue: COMPRESS-478.
-
-Release 1.18
-------------
-
-This release changes the OSGi Manifest entry Bundle-SymbolicName from
-org.apache.commons.compress to org.apache.commons.commons-compress.
-
-New features:
-o It is now possible to specify the arguments of zstd-jni's
-  ZstdOutputStream constructors via Commons Compress as well.
-  Issue: COMPRESS-460.
-  Thanks to Carmi Grushko.
-
-Fixed Bugs:
-o The example Expander class has been vulnerable to a path
-  traversal in the edge case that happens when the target
-  directory has a sibling directory and the name of the target
-  directory is a prefix of the sibling directory's name.
-  Thanks to Didier Loiseau.
-o Changed the OSGi Import-Package to also optionally import
-  javax.crypto so encrypted archives can be read.
-  Issue: COMPRESS-456.
-o Changed various implementations of the close method to better
-  ensure all held resources get closed even if exceptions are
-  thrown during the closing the stream.
-  Issue: COMPRESS-457.
-o ZipArchiveInputStream can now detect the APK Signing Block
-  used in signed Android APK files and treats it as an "end of
-  archive" marker.
-  Issue: COMPRESS-455.
-o The cpio streams didn't handle archives using a multi-byte
-  encoding properly.
-  Issue: COMPRESS-459.
-  Thanks to Jens Reimann.
-o ZipArchiveInputStream#read would silently return -1 on a
-  corrupted stored entry and even return > 0 after hitting the
-  end of the archive.
-  Issue: COMPRESS-463.
-o ArArchiveInputStream#read would allow to read from the stream
-  without opening an entry at all.
-  Issue: COMPRESS-462.
-
-Release 1.17
-------------
-
-New features:
-o Added a unit test that is supposed to fail if we break the
-  OSGi manifest entries again.
-  Issue: COMPRESS-443.
-o Add a new SkipShieldingInputStream class that can be used with
-  streams that throw an IOException when skip is invoked.
-  Issue: COMPRESS-449.
-o New constructors have been added to SevenZFile that accept
-  char[]s rather than byte[]s in order to avoid a common error
-  of using the wrong encoding when creating the byte[].  This
-  change may break source compatibility for client code that
-  uses one of the constructors expecting a password and passes
-  in null as password. We recommend to change the code to use a
-  constructor without password argument.
-  Issue: COMPRESS-452.
-
-Fixed Bugs:
-o Removed the objenesis dependency from the pom as it is not
-  needed at all.
-o Fixed resource leak in ParallelScatterZipCreator#writeTo.
-  Issue: COMPRESS-446.
-o Certain errors when parsing ZIP extra fields in corrupt
-  archives are now turned into ZipException, they used to
-  manifest as ArrayIndexOutOfBoundsException before.
-  Issue: COMPRESS-447.
-o IOUtils.copy now verifies the buffer size is bigger than 0.
-  Issue: COMPRESS-451.
-o ZipArchiveInputStream failed to read some files with stored
-  entries using a data descriptor.
-  Issue: COMPRESS-454.
-
-Changes:
-o Fixed some code examples.
-  Github Pull Request #63.
-  Thanks to Marchenko Sergey.
-o The streams returned by ZipFile and most other decompressing
-  streams now provide information about the number of compressed
-  and uncompressed bytes read so far. This may be used to detect
-  a ZipBomb if the compression ratio exceeds a certain
-  threshold, for example.
-  For SevenZFile a new method returns the statistics for the
-  current entry.
-  Issue: COMPRESS-445.
-  Thanks to Andreas Beeker.
-o Added a workaround for a bug in AdoptOpenJDK for S/390 to
-  BZip2CompressorInputStream.
-  Issue: COMPRESS-453.
-
-Release 1.16.1
---------------
-
-Fixed Bug:
-o Fixed the OSGi manifest entry for imports that has been broken
-  in 1.16.
-  Issue: COMPRESS-442.
-
-Release 1.16
-------------
-
-New features:
-o Add read-only support for Zstandard compression based on the
-  Zstd-jni project.
-  Issue: COMPRESS-423. Thanks to Andre F de Miranda.
-o Added auto-detection for Zstandard compressed streams.
-  Issue: COMPRESS-425.
-o Added write-support for Zstandard compression.
-  Issue: COMPRESS-426.
-o Added read-only DEFLATE64 support to ZIP archives and as
-  stand-alone CompressorInputStream.
-  Issue: COMPRESS-380. Thanks to Christian Marquez Grabia.
-o Added read-only DEFLATE64 support to 7z archives.
-  Issue: COMPRESS-437.
-
-Fixed Bugs:
-o Synchronized iteration over a synchronizedList in
-  ParallelScatterZipCreator.
-  Issue: COMPRESS-430. Thanks to Bruno P. Kinoshita.
-o ZipFile could get stuck in an infinite loop when parsing ZIP
-  archives with certain strong encryption headers.
-  Issue: COMPRESS-432.
-o Added improved checks to detect corrupted bzip2 streams and
-  throw the expected IOException rather than obscure
-  RuntimeExceptions.
-  Issue: COMPRESS-424.
-
-Changes:
-o Replaces instanceof checks with a type marker in LZ77 support code.
-  Issue: COMPRESS-435. Thanks to BELUGA BEHR.
-o Updated XZ for Java dependency to 1.8 in order to pick up bug fix
-  to LZMA2InputStream's available method.
-o ZipArchiveEntry now exposes how the name or comment have been
-  determined when the entry was read.
-  Issue: COMPRESS-429. Thanks to Damiano Albani.
-o ZipFile.getInputStream will now always buffer the stream
-  internally in order to improve read performance.
-  Issue: COMPRESS-438.
-o Speed improvement for DEFLATE64 decompression.
-  Issue: COMPRESS-440. Thanks to Dawid Weiss.
-o Added a few extra sanity checks for the rarer compression
-  methods used in ZIP archives.
-  Issue: COMPRESS-436.
-o Simplified the special handling for the dummy byte required by
-  zlib when using java.util.zip.Inflater.
-  Issue: COMPRESS-441.
-o Various code cleanups.
-  Github Pull Request #61. Thanks to Shahab Kondri.
-o TarArchiveEntry's preserveLeadingSlashes constructor argument
-  has been renamed and can now also be used to preserve the
-  drive letter on Windows.
-
-Release 1.15
-------------
-
-New features:
-o Added magic MANIFEST entry Automatic-Module-Name so the module
-  name will be org.apache.commons.compress when the jar is used
-  as an automatic module in Java9.
-  Issue: COMPRESS-397.
-o Added a new utility class FixedLengthBlockOutputStream that
-  can be used to ensure writing always happens in blocks of a
-  given size.
-  Issue: COMPRESS-405. Thanks to Simon Spero.
-o It is now possible to specify/read custom PAX headers when
-  writing/reading tar archives.
-  Issue: COMPRESS-400. Thanks to Simon Spero.
-
-Fixed Bugs:
-o Make sure "version needed to extract" in local file header and
-  central directory of a ZIP archive agree with each other.
-  Also ensure the version is set to 2.0 if DEFLATE is used.
-  Issue: COMPRESS-394.
-o Don't use a data descriptor in ZIP archives when copying a raw
-  entry that already knows its size and CRC information.
-  Issue: COMPRESS-395.
-o Travis build redundantly repeats compilation and tests redundantly
-  GitHub Pull Request #43. Thanks to Simon Spero.
-  Issue: COMPRESS-413
-o The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
-  Java.
-  Issue: COMPRESS-396.
-o BUILDING.md now passes the RAT check.
-  Issue: COMPRESS-406. Thanks to Simon Spero.
-o Made sure ChecksumCalculatingInputStream receives valid
-  checksum and input stream instances via the constructor.
-  Issue: COMPRESS-412. Thanks to Michael Hausegger.
-o TarArchiveOutputStream now verifies the block and record sizes
-  specified at construction time are compatible with the tar
-  specification. In particular 512 is the only record size
-  accepted and the block size must be a multiple of 512.
-  Issue: COMPRESS-407. Thanks to Simon Spero.
-o Fixed class names of CpioArchiveEntry and
-  CpioArchiveInputStream in various Javadocs.
-  Issue: COMPRESS-415.
-o The code of the extended timestamp zip extra field incorrectly
-  assumed the time was stored as unsigned 32-bit int and thus
-  created incorrect results for years after 2037.
-  Issue: COMPRESS-416. Thanks to Simon Spero.
-o Removed ZipEncoding code that became obsolete when we started
-  to require Java 5 as baseline long ago.
-  Issue: COMPRESS-410. Thanks to Simon Spero.
-o The tar package will no longer try to parse the major and
-  minor device numbers unless the entry represents a character
-  or block special file.
-  Issue: COMPRESS-417.
-o When reading tar headers with name fields containing embedded
-  NULs, the name will now be terminated at the first NUL byte.
-  Issue: COMPRESS-421. Thanks to Roel Spilker.
-o Simplified TarArchiveOutputStream by replacing the internal
-  buffering with new class FixedLengthBlockOutputStream.
-  Issue: COMPRESS-409.
-
-Release 1.14
-------------
-
-New features:
-o Added write support for Snappy.
-  Issue: COMPRESS-246.
-o Added support for LZ4 (block and frame format).
-  Issue: COMPRESS-271.
-o Add static detect(InputStream in) to CompressorStreamFactory
-  and ArchiveStreamFactory
-  Issue: COMPRESS-385.
-o Added a way to limit amount of memory ZCompressorStream may
-  use.
-  Issue: COMPRESS-382. Thanks to Tim Allison.
-o Added a way to limit amount of memory ZCompressorStream may
-  use.
-  Issue: COMPRESS-386. Thanks to Tim Allison.
-o Added a way to limit amount of memory LZMACompressorStream and
-  XZCompressorInputStream may use.
-  Issue: COMPRESS-382. Thanks to Tim Allison.
-o Add Brotli decoder based on the Google Brotli library.
-  Issue: COMPRESS-392. Thanks to Philippe Mouawad.
-o ZipEntry now exposes its data offset.
-  Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky.
-o Using ZipArchiveEntry's setAlignment it is now possible to
-  ensure the data offset of an entry starts at a file position
-  that at word or page boundaries.
-  A new extra field has been added for this purpose.
-  Issue: COMPRESS-391. Thanks to Zbynek Vyskovsky.
-
-Fixed Bugs:
-o SnappyCompressorInputStream slides the window too early
-  leading to ArrayIndexOutOfBoundsExceptions for some streams.
-  Issue: COMPRESS-378.
-o ZipArchiveEntry#isUnixSymlink now only returns true if the
-  corresponding link flag is the only file-type flag set.
-  Issue: COMPRESS-379. Thanks to Guillaume Boué.
-o Fixed an integer overflow in CPIO's CRC calculation.
-  Pull Request #17. Thanks to Daniel Collin.
-o Make unit tests work on Windows paths with spaces in their names.
-  Issue: COMPRESS-387.
-o Internal location pointer in ZipFile could get incremented
-  even if nothing had been read.
-  Issue: COMPRESS-389.
-o LZMACompressorOutputStream#flush would throw an exception
-  rather than be the NOP it promised to be.
-  Issue: COMPRESS-393.
-
-Changes:
-o The blocksize for FramedSnappyCompressorInputStream can now be
-  configured as some IWA files seem to be using blocks larger
-  than the default 32k.
-  Issue: COMPRESS-358.
-o BZip2CompressorInputstream now uses BitInputStream internally.
-  Pull Request #13. Thanks to Thomas Meyer.
-o Improved performance for concurrent reads from ZipFile when
-  reading from a file.
-  Issue: COMPRESS-388. Thanks to Zbynek Vyskovsky.
-
-Release 1.13
-------------
-
-Commons Compress 1.13 is the first version to require Java 7 at
-runtime.
-
-Changes in this version include:
-
-New features:
-o SevenZFile, SevenZOutputFile, ZipFile and
-  ZipArchiveOutputStream can now work on non-file resources if
-  they can be accessed via SeekableByteChannel.
-  Issue: COMPRESS-327.
-o Allow compressor extensions through a standard JRE ServiceLoader.
-  Issue: COMPRESS-368.
-o Allow archive extensions through a standard JRE ServiceLoader.
-  Issue: COMPRESS-369.
-o Add write support for the legacy LZMA format, this requires XZ
-  for Java 1.6.
-  Issue: COMPRESS-373.
-o Add write support for the legacy LZMA stream to 7z, this
-  requires XZ for Java 1.6.
-  Issue: COMPRESS-374.
-o Allow the clients of ParallelScatterZipCreator to provide
-  ZipArchiveEntryRequestSupplier.
-  Issue: COMPRESS-375. Thanks to Plamen Totev.
-o Add a version-independent link to the API docs of the latest
-  release.
-  Issue: COMPRESS-372.
-
-Fixed Bugs:
-o BitInputStream could return bad results when overflowing
-  internally - if two consecutive reads tried to read more than
-  64 bits.
-  Issue: COMPRESS-363.
-o ZipArchiveInputStream.closeEntry does not properly advance to
-  next entry if there are junk bytes at end of data section.
-  Issue: COMPRESS-364. Thanks to Mike Mole.
-o ZipArchiveInputStream now throws an Exception if it encounters
-  a broken ZIP archive rather than signaling end-of-archive.
-  Issue: COMPRESS-367. Thanks to Mike Mole.
-o ScatterZipOutputStream didn't close the StreamCompressor
-  causing a potential resource leak.
-  Issue: COMPRESS-377.
-
-Changes:
-o Update Java requirement from 6 to 7.
-  Issue: COMPRESS-360.
-o Clarified which TarArchiveEntry methods are useless for
-  entries read from an archive.
-  Issue: COMPRESS-366.
-
-Release 1.12
-------------
-
-Commons Compress 1.12 is the first version to require 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.
-
-New features:
-
-o FramedSnappyCompressorInputStream now supports the dialect of
-  Snappy used by the IWA files contained within the zip archives
-  used in Apple's iWork 13 files.
-  Issue: COMPRESS-352.
-
-Fixed Bugs:
-
-o SevenZFile.read() throws an IllegalStateException for empty entries.
-  Issue: COMPRESS-348.
-o TarArchiveInputStream failed to parse PAX headers that included
-  blank lines.
-  Issue: COMPRESS-355. Thanks to Jeremy Gustie.
-o TarArchiveInputStream failed to parse PAX headers whose tar entry
-  name ended with a slash.
-  Issue: COMPRESS-356. Thanks to Jeremy Gustie.
-
-Changes:
-o Update requirement from Java 5 to 6.
-  Issue: COMPRESS-349.
-o TarArchiveEntry wastefully allocates empty arrays.
-  Issue: COMPRESS-350.
-o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
-  refer to IOEx, not NPE.
-  Issue: COMPRESS-353.
-o PureJavaCrc32C in the snappy package is now final so it is now safe
-  to call a virtual method inside the constructor.
-  Issue: COMPRESS-354.
-
-o 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.
-  Issue: COMPRESS-351.
-o BZip2CompressorOutputStream no longer tries to finish the output
-  stream in finalize. This is a breaking change for code that relied
-  on the finalizer.
-  Issue: COMPRESS-357.
-
-
-Release 1.11
-------------
-
-New features:
-o TarArchiveInputStream now supports reading global PAX headers.
-  Issue: COMPRESS-347.
-o The PAX headers for sparse entries written by star are now
-  applied.
-  Issue: COMPRESS-346.
-o GNU sparse files using one of the PAX formats are now
-  detected, but cannot be extracted.
-  Issue: COMPRESS-345.
-o New method SevenZFile.getEntries can be used to list the
-  contents of a 7z archive.
-  Issue: COMPRESS-341.
-o When using Zip64Mode.Always also use ZIP64 extensions inside
-  the central directory.
-  GitHub Pull Request #10 Thanks to Matt Hovey.
-o ZipFile.getRawInputStream() is now part of the public API
-  Issue: COMPRESS-323.
-o Allow byte-for-byte replication of Zip entries.
-  GitHub Pull Request #6. Thanks to Jason van Zyl.
-o TarArchiveEntry's preserveLeadingSlashes is now a property and used
-  on later calls to setName, too.
-  This behavior is a breaking change.
-  Issue: COMPRESS-328.
-o Added read-only support for bzip2 compression used inside of
-  ZIP archives.
-  GitHub Pull Request #4. Thanks to Sören Glimm.
-
-Fixed Bugs:
-o ArArchiveInputStream can now read GNU extended names that are
-  terminated with a NUL byte rather than a linefeed.
-  Issue: COMPRESS-344.
-o Native Memory Leak in Sevenz-DeflateDecoder.
-  Issue: COMPRESS-343. Thanks to Rene Preissel.
-o 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.
-  Issue: COMPRESS-340. Thanks to Dawid Weiss.
-o file names of tar archives using the xstar format are now
-  parsed properly.
-  Issue: COMPRESS-336.
-o checksums of tars that pad the checksum field to the left are
-  now calculated properly.
-  Issue: COMPRESS-335.
-o ArArchiveInputStream failed to read past the first entry when
-  BSD long names have been used.
-  Issue: COMPRESS-334. Thanks to Jeremy Gustie.
-o Added buffering for random access which speeds up 7Z support.
-  Issue: COMPRESS-333. Thanks to Dawid Weiss.
-o 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.
-  Issue: COMPRESS-331.
-o SnappyCompressorInputStream and
-  FramedSnappyCompressorInputStream returned 0 at the end of the
-  stream under certain circumstances.
-  Issue: COMPRESS-332.
-o Adjusted unit test to updates in Java8 and later that change
-  the logic of ZipEntry#getTime.
-  Issue: COMPRESS-326.
-o 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.
-  Issue: COMPRESS-324.
-o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
-  fields are read from the central directory.
-  Issue: COMPRESS-321.
-
-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 which makes
-this class binary incompatible with the one of Compress 1.9.  Code
-that extends ZCompressorInputStream will need to be recompiled in
-order to work with Compress 1.10.
-
-New features:
-o CompressorStreamFactory can now auto-detect DEFLATE streams
-  with ZLIB header.
-  Issue: COMPRESS-316. Thanks to Nick Burch.
-o CompressorStreamFactory can now auto-detect LZMA streams.
-  Issue: COMPRESS-313.
-o 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.
-  Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
-o 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. Thanks to Kristian Rosenvold.
-o New methods in ZipArchiveOutputStream and ZipFile allows
-  entries to be copied from one archive to another without
-  having to re-compress them.
-  Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
-
-Fixed Bugs:
-o TarArchiveInputStream can now read entries with group or
-  user ids > 0x80000000.
-  Issue: COMPRESS-314.
-o TarArchiveOutputStream can now write entries with group or
-  user ids > 0x80000000.
-  Issue: COMPRESS-315.
-o TarArchiveEntry's constructor with a File and a String arg
-  didn't normalize the name.
-  Issue: COMPRESS-312.
-o ZipEncodingHelper no longer reads system properties directly
-  to determine the default charset.
-  Issue: COMPRESS-308.
-o BZip2CompressorInputStream#read would return -1 when asked to
-  read 0 bytes.
-  Issue: COMPRESS-309.
-o ArchiveStreamFactory fails to pass on the encoding when creating
-  some streams.
-    * ArjArchiveInputStream
-    * CpioArchiveInputStream
-    * DumpArchiveInputStream
-    * JarArchiveInputStream
-    * TarArchiveInputStream
-    * JarArchiveOutputStream
-  Issue: COMPRESS-306.
-o Restore immutability/thread-safety to ArchiveStreamFactory.
-  The class is now immutable provided that the method setEntryEncoding
-  is not used. The class is thread-safe.
-  Issue: COMPRESS-302.
-o Restore immutability/thread-safety to CompressorStreamFactory.
-  The class is now immutable provided that the method
-  setDecompressConcatenated is not used.  The class is thread-safe.
-  Issue: COMPRESS-303.
-o 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.
-  Issue: COMPRESS-297.
-o Improved error message when tar encounters a groupId that is
-  too big to write without using the STAR or POSIX format.
-  Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
-o SevenZFile now throws the specific PasswordRequiredException
-  when it encounters an encrypted stream but no password has
-  been specified.
-  Issue: COMPRESS-298.
-
-Changes:
-o 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. Thanks to Damjan Jovanovic.
-
-For complete information on Apache Commons Compress, including instructions
-on how to submit bug reports, patches, or suggestions for improvement,
-see the Apache Commons Compress website:
-
-https://commons.apache.org/compress/
-
-
-Release 1.9
------------
-
-New features:
-o Added support for DEFLATE streams without any gzip framing.
-  Issue: COMPRESS-263.
-  Thanks to Matthias Stevens.
-
-Fixed Bugs:
-o When reading 7z files unknown file properties and properties of type
-  kDummy are now ignored.
-  Issue: COMPRESS-287.
-o Expanding 7z archives using LZMA compression could cause an
-  EOFException.
-  Issue: COMPRESS-286. 
-o 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.
-  Issue: COMPRESS-289.
-  Thanks to Bob Robertson.
-
-Changes:
-o 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.
-  Issue: COMPRESS-285.
-
-Release 1.8.1
--------------
-
-New features:
-o COMPRESS-272:  CompressorStreamFactory can now auto-detect Unix compress
-                 (".Z") streams. 
-
-Fixed Bugs:
-o COMPRESS-270:  The snappy, ar and tar inputstreams might fail to read from a
-                 non-buffered stream in certain cases. 
-o COMPRESS-277:  IOUtils#skip might skip fewer bytes than requested even though
-                 more could be read from the stream. 
-o COMPRESS-276:  ArchiveStreams now validate there is a current entry before
-                 reading or writing entry data. 
-o ArjArchiveInputStream#canReadEntryData tested the current
-                 entry of the stream rather than its argument. 
-o COMPRESS-274:  ChangeSet#delete and deleteDir now properly deal with unnamed
-                 entries. 
-o COMPRESS-273:  Added a few null checks to improve robustness. 
-o COMPRESS-278:  TarArchiveInputStream failed to read archives with empty
-                 gid/uid fields. 
-o COMPRESS-279:  TarArchiveInputStream now again throws an exception when it
-                 encounters a truncated archive while reading from the last
-                 entry. 
-o COMPRESS-280:  Adapted TarArchiveInputStream#skip to the modified
-                 IOUtils#skip method. Thanks to BELUGA BEHR. 
-
-Changes:
-o The dependency on org.tukaani:xz is now marked as optional. 
-
-Release 1.8
------------
-
-New features:
-o GzipCompressorInputStream now provides access to the same
-  metadata that can be provided via GzipParameters when writing
-  a gzip stream.
-  Issue: COMPRESS-260. 
-o SevenZOutputFile now supports chaining multiple
-  compression/encryption/filter methods and passing options to
-  the methods.
-  Issue: COMPRESS-266. 
-o The (compression) method(s) can now be specified per entry in
-  SevenZOutputFile.
-  Issue: COMPRESS-261. 
-o SevenZArchiveEntry "knows" which method(s) have been used to
-  write it to the archive.
-  Issue: COMPRESS-258. 
-o The 7z package now supports the delta filter as method. 
-o The 7z package now supports BCJ filters for several platforms.
-  You will need a version >= 1.5 of XZ for Java to read archives
-  using BCJ, though.
-  Issue: COMPRESS-257. 
-
-Fixed Bugs:
-o BZip2CompressorInputStream read fewer bytes than possible from
-  a truncated stream.
-  Issue: COMPRESS-253. 
-o SevenZFile failed claiming the dictionary was too large when
-  archives used LZMA compression for headers and content and
-  certain non-default dictionary sizes.
-  Issue: COMPRESS-253. 
-o CompressorStreamFactory.createCompressorInputStream with
-  explicit compression did not honor decompressConcatenated
-  Issue: COMPRESS-259. 
-o TarArchiveInputStream will now read archives created by tar
-  implementations that encode big numbers by not adding a
-  trailing NUL.
-  Issue: COMPRESS-262. 
-o ZipArchiveInputStream would return NUL bytes for the first 512
-  bytes of a STORED entry if it was the very first entry of the
-  archive.
-  Issue: COMPRESS-264. 
-o When writing PAX/POSIX headers for TAR entries with
-  backslashes or certain non-ASCII characters in their name
-  TarArchiveOutputStream could fail.
-  Issue: COMPRESS-265. 
-o 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.
-  Issue: COMPRESS-267. 
-
-Release 1.7
------------
-
-New features:
-o Read-Only support for Snappy compression.
-  Issue: COMPRESS-147. Thanks to BELUGA BEHR.
-o Read-Only support for .Z compressed files.
-  Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
-o ZipFile and ZipArchiveInputStream now support reading entries
-  compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
-o GzipCompressorOutputStream now supports setting the compression
-  level and the header metadata (filename, comment, modification time,
-  operating system and extra flags)
-  Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
-o ZipFile and ZipArchiveInputStream now support reading entries
-  compressed using the IMPLODE method.
-  Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
-o ZipFile and the 7z file classes now implement Closeable and can be
-  used in try-with-resources constructs.
-
-Fixed Bugs:
-o SevenZOutputFile#closeArchiveEntry throws an exception when using
-  LZMA2 compression on Java8.  Issue: COMPRESS-241.
-o 7z reading of big 64bit values could be wrong.
-  Issue: COMPRESS-244. Thanks to Nico Kruber.
-o TarArchiveInputStream could fail to read an archive completely.
-  Issue: COMPRESS-245.
-o 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.
-  Issue: COMPRESS-242.
-o SevenZOutputFile would create invalid archives if more than six
-  empty files or directories were included.  Issue: COMPRESS-252.
-
-Release 1.6
------------
-
-Version 1.6 introduces changes to the internal API of the tar package that 
-break backwards compatibility in the following rare cases.  This version 
-removes the package private TarBuffer class along with the protected "buffer" 
-members in TarArchiveInputStream and TarArchiveOutputStream.  This change will 
-only affect you if you have created a subclass of one of the stream classes 
-and accessed the buffer member or directly used the TarBuffer class.
-
-Changes in this version include:
-
-New features:
-o Added support for 7z archives.  Most compression algorithms
-  can be read and written, LZMA and encryption are only
-  supported when reading.  Issue: COMPRESS-54. Thanks to Damjan Jovanovic. 
-o Added read-only support for ARJ archives that don't use
-  compression.  Issue: COMPRESS-226. Thanks to Damjan Jovanovic. 
-o DumpArchiveInputStream now supports an encoding parameter that
-  can be used to specify the encoding of file names. 
-o The CPIO streams now support an encoding parameter that can be
-  used to specify the encoding of file names. 
-o Read-only support for LZMA standalone compression has been added.
-  Issue: COMPRESS-111.
-
-Fixed Bugs:
-o TarBuffer.tryToConsumeSecondEOFRecord could throw a
-  NullPointerException  Issue: COMPRESS-223. Thanks to Jeremy Gustie. 
-o 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.  Issue: COMPRESS-228. 
-o TAR will now properly read the names of symbolic links with
-  long names that use the GNU variant to specify the long file
-  name.  Issue: COMPRESS-229. Thanks to Christoph Gysin. 
-o 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.
-  Issue: COMPRESS-227. 
-o CpioArchiveInputStream failed to read archives created by
-  Redline RPM.  Issue: COMPRESS-236. Thanks to Andrew Duffy. 
-o TarArchiveOutputStream now properly handles link names that
-  are too long to fit into a traditional TAR header.  Issue:
-  COMPRESS-237. Thanks to Emmanuel Bourg.
-o The auto-detecting create*InputStream methods of Archive and
-  CompressorStreamFactory could fail to detect the format of
-  blocking input streams.  Issue: COMPRESS-239. 
-
-Changes:
-o Readabilty patch to TarArchiveInputStream.  Issue:
-  COMPRESS-232. Thanks to BELUGA BEHR.
-o Performance improvements to TarArchiveInputStream, in
-  particular to the skip method.  Issue: COMPRESS-234. Thanks to
-  BELUGA BEHR. 
-
-Release 1.5
------------
-
-New features:
-
-o CompressorStreamFactory has an option to create decompressing
-  streams that decompress the full input for formats that support
-  multiple concatenated streams.
-  Issue: COMPRESS-220.
-
-Fixed Bugs:
-
-o Typo in CompressorStreamFactory Javadoc
-  Issue: COMPRESS-218.
-  Thanks to Gili.
-o ArchiveStreamFactory's tar stream detection created false positives
-  for AIFF files.
-  Issue: COMPRESS-191.
-  Thanks to Jukka Zitting.
-o 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.
-  Issue: COMPRESS-199.
-  Thanks to Jukka Zitting.
-o 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.
-  Issue: COMPRESS-200.
-  Thanks to Christian Schlichtherle.
-o Writing TAR PAX headers failed if the generated entry name ended
-  with a "/".
-  Issue: COMPRESS-203.
-o ZipArchiveInputStream sometimes failed to provide input to the
-  Inflater when it needed it, leading to reads returning 0.
-  Issue: COMPRESS-189.
-  Thanks to Daniel Lowe.
-o TarArchiveInputStream ignored the encoding for GNU long name
-  entries.
-  Issue: COMPRESS-212.
-o TarArchiveInputStream could leave the second EOF record inside the
-  stream it had just finished reading.
-  Issue: COMPRESS-206.
-  Thanks to Peter De Maeyer.
-o DumpArchiveInputStream no longer implicitly closes the original
-  input stream when it reaches the end of the archive.
-o ZipArchiveInputStream now consumes the remainder of the archive when
-  getNextZipEntry returns null.
-o Unit tests could fail if the source tree was checked out to a
-  directory tree containign spaces.
-  Issue: COMPRESS-205.
-  Thanks to Daniel Lowe.
-o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
-  entries from ZipArchiveInputStream.
-  Issue: COMPRESS-219.
-o CompressorStreamFactory can now be used without XZ for Java being
-  available.
-  Issue: COMPRESS-221.
-
-Changes:
-
-o Improved exception message if a zip archive cannot be read because
-  of an unsupported compression method.
-  Issue: COMPRESS-188.
-  Thanks to Harald Kuhn.
-o ArchiveStreamFactory has a setting for file name encoding that sets
-  up encoding for ZIP and TAR streams.
-  Issue: COMPRESS-192.
-  Thanks to Jukka Zitting.
-o TarArchiveEntry now has a method to verify its checksum.
-  Issue: COMPRESS-191.
-  Thanks to Jukka Zitting.
-o Split/spanned ZIP archives are now properly detected by
-  ArchiveStreamFactory but will cause an
-  UnsupportedZipFeatureException when read.
-o 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.
-  Issue: COMPRESS-208.
-o TarArchiveEntry has a new constructor that allows setting linkFlag
-  and preserveLeadingSlashes at the same time.
-  Issue: COMPRESS-201.
-o ChangeSetPerformer has a new perform overload that uses a ZipFile
-  instance as input.
-  Issue: COMPRESS-159.
-o Garbage collection pressure has been reduced by reusing temporary
-  byte arrays in classes.
-  Issue: COMPRESS-172.
-  Thanks to Thomas Mair.
-o Can now handle zip extra field 0x5455 - Extended Timestamp.
-  Issue: COMPRESS-210.
-  Thanks to Julius Davies.
-o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
-  Issue: COMPRESS-211.
-  Thanks to Julius Davies.
-o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
-  Issue: COMPRESS-213.
-  Thanks to Julius Davies.
-o better support for Unix symlinks in ZipFile entries.
-  Issue: COMPRESS-214.
-  Thanks to Julius Davies.
-o ZipFile's initialization has been improved for non-Zip64 archives.
-  Issue: COMPRESS-215.
-  Thanks to Robin Power.
-o Updated XZ for Java dependency to 1.2 as this version provides
-  proper OSGi manifest attributes.
-
-Release 1.4.1
--------------
-
-This is a security bugfix release, see
-https://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
-
-Fixed Bugs:
-
-o Ported libbzip2's fallback sort algorithm to
-  BZip2CompressorOutputStream to speed up compression in certain
-  edge cases.
-
-Release 1.4
------------
-
-New features:
-o COMPRESS-156:  Support for the XZ format has been added. 
-
-Fixed Bugs:
-o COMPRESS-183:  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. 
-o COMPRESS-184:  TarArchiveInputStream failed to parse PAX headers that
-                 contained non-ASCII characters. 
-o COMPRESS-178:  TarArchiveInputStream throws IllegalArgumentException instead of IOException 
-o COMPRESS-179:  TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long 
-o COMPRESS-175:  GNU Tar sometimes uses binary encoding for UID and GID 
-o COMPRESS-171:  ArchiveStreamFactory.createArchiveInputStream would claim
-                 short text files were TAR archives. 
-o COMPRESS-164:  ZipFile didn't work properly for archives using unicode extra
-                 fields rather than UTF-8 filenames and the EFS-Flag. 
-o COMPRESS-169:  For corrupt archives ZipFile would throw a RuntimeException in
-                 some cases and an IOException in others.  It will now
-                 consistently throw an IOException. 
-
-Changes:
-o COMPRESS-182:  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. 
-o COMPRESS-181:  Added a workaround for a Bug some tar implementations that add
-                 a NUL byte as first byte in numeric header fields. 
-o COMPRESS-176:  Added a workaround for a Bug in WinZIP which uses backslashes
-                 as path separators in Unicode Extra Fields. 
-o COMPRESS-131:  ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed. 
-o COMPRESS-146:  BZip2CompressorInputStream now optionally supports reading of
-                 concatenated .bz2 files. 
-o COMPRESS-154:  GZipCompressorInputStream now optionally supports reading of
-                 concatenated .gz files. 
-o COMPRESS-16:  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. 
-o COMPRESS-165:  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. 
-o COMPRESS-166:  The tar package can now use the POSIX/PAX variant for writing
-                 entries with names longer than 100 characters. 
-
-Release 1.3
------------
-
-Commons Compress 1.3 is the first version to require Java5 at runtime.
-
-Changes in this version include:
-
-New features:
-o Support for the Pack200 format has been added.  Issue: COMPRESS-142. 
-o Read-only support for the format used by the Unix dump(8) tool
-  has been added.  Issue: COMPRESS-132. 
-
-Fixed Bugs:
-o BZip2CompressorInputStream's getBytesRead method always
-  returned 0. 
-o ZipArchiveInputStream and ZipArchiveOutputStream could leak
-  resources on some JDKs.  Issue: COMPRESS-152. 
-o TarArchiveOutputStream's getBytesWritten method didn't count
-  correctly.  Issue: COMPRESS-160. 
-
-Changes:
-o The ZIP package now supports Zip64 extensions.  Issue: COMPRESS-36. 
-o The AR package now supports the BSD dialect of storing file
-  names longer than 16 chars (both reading and writing).
-  Issue: COMPRESS-144. 
-
-Release 1.2
------------
-
-New features:
-o COMPRESS-123:  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. 
-o COMPRESS-122:  TarArchiveEntry provides access to the flags that determine
-        whether it is an archived symbolic link, pipe or other
-        "uncommon" file system object. 
+##
 
-Fixed Bugs:
-o COMPRESS-129:  ZipArchiveInputStream could fail with a "Truncated ZIP" error
-        message for entries between 2 GByte and 4 GByte in size. 
-o COMPRESS-145:  TarArchiveInputStream now detects sparse entries using the
-        oldgnu format and properly reports it cannot extract their
-        contents. 
-o COMPRESS-130:  The Javadoc for ZipArchiveInputStream#skip now matches the
-        implementation, the code has been made more defensive. 
-o COMPRESS-140:  ArArchiveInputStream fails if entries contain only blanks for
-        userId or groupId. Thanks to Trejkaz. 
-o COMPRESS-139:  ZipFile may leak resources on some JDKs. 
-o COMPRESS-125:  BZip2CompressorInputStream throws IOException if
-        underlying stream returns available() == 0.
-        Removed the check. 
-o COMPRESS-127:  Calling close() on inputStream returned by
-        CompressorStreamFactory.createCompressorInputStream()
-        does not close the underlying input stream. 
-o COMPRESS-119:  TarArchiveOutputStream#finish now writes all buffered
-        data to the stream 
+Historical list of changes: ${project.url}changes-report.html
 
-Changes:
-o ZipFile now implements finalize which closes the underlying
-        file. 
-o COMPRESS-117:  Certain tar files not recognised by
-        ArchiveStreamFactory. 
+For complete information on ${project.name}, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the ${project.name} website:
 
-Release 1.1
------------
+${project.url}
 
-New features:
-o COMPRESS-108:  Command-line interface to list archive contents.
-       Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc] 
-o COMPRESS-109:  Tar implementation does not support Pax headers
-       Added support for reading pax headers.
-       Note: does not support global pax headers 
-o 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. 
-o 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). 
-o 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. 
-o 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. 
-o COMPRESS-89:  The ZIP classes now detect encrypted entries. 
-o COMPRESS-97:  Added autodetection of compression format to
-        CompressorStreamFactory. 
-o COMPRESS-95:  Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann. 
-o 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. 
-o ArchiveEntry now has a getLastModifiedDate method. 
-o COMPRESS-78:  Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting. 
+Download page: ${project.url}download_io.cgi
 
-Fixed Bugs:
-o COMPRESS-72:  Move acknowledgements from NOTICE to README 
-o COMPRESS-113:  TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size 
-o COMPRESS-118:  TarUtils.parseName does not properly handle characters outside the range 0-127 
-o COMPRESS-107:  ArchiveStreamFactory does not recognise tar files created by Ant 
-o COMPRESS-110:  Support "ustar" prefix field, which is used when file paths are longer
-       than 100 characters. 
-o 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. 
-o COMPRESS-101:  ZipArchiveInputStream should now properly read archives that
-        use data descriptors but without the "unofficial" signature. 
-o COMPRESS-74:  ZipArchiveInputStream failed to update the number of bytes
-        read properly. 
-o 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. 
-o 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. 
-o COMPRESS-73:  ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
-        more lenient when parsing extra fields. 
-o COMPRESS-82:  cpio is terribly slow.
-        Documented that buffered streams are needed for performance 
-o Improved exception message if the extra field data in ZIP
-        archives cannot be parsed. 
-o COMPRESS-17:  Tar format unspecified - current support documented. 
-o COMPRESS-94:  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. Thanks to Anon Devs. 
-o COMPRESS-87:  ZipArchiveInputStream could repeatedly return 0 on read() when
-        the archive was truncated. Thanks to Antoni Mylka. 
-o COMPRESS-86:  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. 
-o COMPRESS-83:  Delegate all read and write methods in GZip stream in order to
-        speed up operations. 
-o The ar and cpio streams now properly read and write last
-        modified times. 
-o COMPRESS-81:  TarOutputStream can leave garbage at the end of the archive 
-
-Changes:
-o COMPRESS-112:  ArArchiveInputStream does not handle GNU extended filename records (//) 
-o 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. 
-o COMPRESS-79:  Move DOS/Java time conversions into Zip utility class. 
-o COMPRESS-75:  ZipArchiveInputStream does not show location in file
-       where a problem occurred. 
+Have fun!
+-Apache Commons Team
 
+==============================================================================
diff --git a/src/site/xdoc/download_compress.xml b/src/site/xdoc/download_compress.xml
index 0b82da20b..725e55089 100644
--- a/src/site/xdoc/download_compress.xml
+++ b/src/site/xdoc/download_compress.xml
@@ -113,32 +113,32 @@ limitations under the License.
       </p>
     </subsection>
     </section>
-    <section name="Apache Commons Compress 1.24.0 ">
+    <section name="Apache Commons Compress 1.25.0 ">
       <subsection name="Binaries">
         <table>
           <tr>
-              <td><a href="[preferred]/commons/compress/binaries/commons-compress-1.24.0-bin.tar.gz">commons-compress-1.24.0-bin.tar.gz</a></td>
-              <td><a href="https://downloads.apache.org/commons/compress/binaries/commons-compress-1.24.0-bin.tar.gz.sha512">sha512</a></td>
-              <td><a href="https://downloads.apache.org/commons/compress/binaries/commons-compress-1.24.0-bin.tar.gz.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/compress/binaries/commons-compress-1.25.0-bin.tar.gz">commons-compress-1.25.0-bin.tar.gz</a></td>
+              <td><a href="https://downloads.apache.org/commons/compress/binaries/commons-compress-1.25.0-bin.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://downloads.apache.org/commons/compress/binaries/commons-compress-1.25.0-bin.tar.gz.asc">pgp</a></td>
           </tr>
           <tr>
-              <td><a href="[preferred]/commons/compress/binaries/commons-compress-1.24.0-bin.zip">commons-compress-1.24.0-bin.zip</a></td>
-              <td><a href="https://downloads.apache.org/commons/compress/binaries/commons-compress-1.24.0-bin.zip.sha512">sha512</a></td>
-              <td><a href="https://downloads.apache.org/commons/compress/binaries/commons-compress-1.24.0-bin.zip.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/compress/binaries/commons-compress-1.25.0-bin.zip">commons-compress-1.25.0-bin.zip</a></td>
+              <td><a href="https://downloads.apache.org/commons/compress/binaries/commons-compress-1.25.0-bin.zip.sha512">sha512</a></td>
+              <td><a href="https://downloads.apache.org/commons/compress/binaries/commons-compress-1.25.0-bin.zip.asc">pgp</a></td>
           </tr>
         </table>
       </subsection>
       <subsection name="Source">
         <table>
           <tr>
-              <td><a href="[preferred]/commons/compress/source/commons-compress-1.24.0-src.tar.gz">commons-compress-1.24.0-src.tar.gz</a></td>
-              <td><a href="https://downloads.apache.org/commons/compress/source/commons-compress-1.24.0-src.tar.gz.sha512">sha512</a></td>
-              <td><a href="https://downloads.apache.org/commons/compress/source/commons-compress-1.24.0-src.tar.gz.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/compress/source/commons-compress-1.25.0-src.tar.gz">commons-compress-1.25.0-src.tar.gz</a></td>
+              <td><a href="https://downloads.apache.org/commons/compress/source/commons-compress-1.25.0-src.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://downloads.apache.org/commons/compress/source/commons-compress-1.25.0-src.tar.gz.asc">pgp</a></td>
           </tr>
           <tr>
-              <td><a href="[preferred]/commons/compress/source/commons-compress-1.24.0-src.zip">commons-compress-1.24.0-src.zip</a></td>
-              <td><a href="https://downloads.apache.org/commons/compress/source/commons-compress-1.24.0-src.zip.sha512">sha512</a></td>
-              <td><a href="https://downloads.apache.org/commons/compress/source/commons-compress-1.24.0-src.zip.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/compress/source/commons-compress-1.25.0-src.zip">commons-compress-1.25.0-src.zip</a></td>
+              <td><a href="https://downloads.apache.org/commons/compress/source/commons-compress-1.25.0-src.zip.sha512">sha512</a></td>
+              <td><a href="https://downloads.apache.org/commons/compress/source/commons-compress-1.25.0-src.zip.asc">pgp</a></td>
           </tr>
         </table>
       </subsection>
diff --git a/src/site/xdoc/mail-lists.xml b/src/site/xdoc/mail-lists.xml
index 5dedf504a..9c6b20137 100644
--- a/src/site/xdoc/mail-lists.xml
+++ b/src/site/xdoc/mail-lists.xml
@@ -59,9 +59,9 @@ limitations under the License.
       </p>
       <p>
         Questions related to the usage of Apache Commons Compress should be posted to the
-        <a href="https://mail-archives.apache.org/mod_mbox/commons-user/">User List</a>.
+        <a href="https://lists.apache.org/list.html?user@commons.apache.org">User List</a>.
         <br />
-        The <a href="https://mail-archives.apache.org/mod_mbox/commons-dev/">Developer List</a>
+        The <a href="https://lists.apache.org/list.html?dev@commons.apache.org">Developer List</a>
         is for questions and discussion related to the development of Apache Commons Compress.
         <br />
         Please do not cross-post; developers are also subscribed to the user list.
@@ -70,8 +70,10 @@ limitations under the License.
         to subscribe.
       </p>
       <p>
-        <strong>Note:</strong> please don't send patches or attachments to any of the mailing lists.
+        <strong>Note:</strong> please don't send patches or attachments to any of the mailing lists;
+        most of the lists are set up to drop attachments.
         Patches are best handled via the <a href="issue-tracking.html">Issue Tracking</a> system.
+        If you have a GitHub account, most components also accept PRs (pull requests).
         Otherwise, please upload the file to a public server and include the URL in the mail.
       </p>
     </section>
@@ -105,12 +107,11 @@ limitations under the License.
           <td><a href="mailto:user-subscribe@commons.apache.org">Subscribe</a></td>
           <td><a href="mailto:user-unsubscribe@commons.apache.org">Unsubscribe</a></td>
           <td><a href="mailto:user@commons.apache.org?subject=[compress]">Post</a></td>
-          <td><a href="https://mail-archives.apache.org/mod_mbox/commons-user/">mail-archives.apache.org</a><br />
+          <td>
               <a href="https://lists.apache.org/list.html?user@commons.apache.org">lists.apache.org</a>
           </td>
-          <td><a href="https://markmail.org/list/org.apache.commons.users/">markmail.org</a><br />
-              <a href="https://www.mail-archive.com/user@commons.apache.org/">www.mail-archive.com</a><br />
-              <a href="https://news.gmane.org/gmane.comp.jakarta.commons.devel">news.gmane.org</a>
+          <td>
+              <a href="https://www.mail-archive.com/user@commons.apache.org/">www.mail-archive.com</a>
           </td>
         </tr>
 
@@ -125,12 +126,11 @@ limitations under the License.
           <td><a href="mailto:dev-subscribe@commons.apache.org">Subscribe</a></td>
           <td><a href="mailto:dev-unsubscribe@commons.apache.org">Unsubscribe</a></td>
           <td><a href="mailto:dev@commons.apache.org?subject=[compress]">Post</a></td>
-          <td><a href="https://mail-archives.apache.org/mod_mbox/commons-dev/">mail-archives.apache.org</a><br />
+          <td>
               <a href="https://lists.apache.org/list.html?dev@commons.apache.org">lists.apache.org</a>
           </td>
-          <td><a href="https://markmail.org/list/org.apache.commons.dev/">markmail.org</a><br />
-              <a href="https://www.mail-archive.com/dev@commons.apache.org/">www.mail-archive.com</a><br />
-              <a href="https://news.gmane.org/gmane.comp.jakarta.commons.devel">news.gmane.org</a>
+          <td>
+              <a href="https://www.mail-archive.com/dev@commons.apache.org/">www.mail-archive.com</a>
           </td>
         </tr>
 
@@ -145,10 +145,10 @@ limitations under the License.
           <td><a href="mailto:issues-subscribe@commons.apache.org">Subscribe</a></td>
           <td><a href="mailto:issues-unsubscribe@commons.apache.org">Unsubscribe</a></td>
           <td><i>read only</i></td>
-          <td><a href="https://mail-archives.apache.org/mod_mbox/commons-issues/">mail-archives.apache.org</a><br />
+          <td>
               <a href="https://lists.apache.org/list.html?issues@commons.apache.org">lists.apache.org</a>
           </td>
-          <td><a href="https://markmail.org/list/org.apache.commons.issues/">markmail.org</a><br />
+          <td>
               <a href="https://www.mail-archive.com/issues@commons.apache.org/">www.mail-archive.com</a>
           </td>
         </tr>
@@ -164,10 +164,10 @@ limitations under the License.
           <td><a href="mailto:commits-subscribe@commons.apache.org">Subscribe</a></td>
           <td><a href="mailto:commits-unsubscribe@commons.apache.org">Unsubscribe</a></td>
           <td><i>read only</i></td>
-          <td><a href="https://mail-archives.apache.org/mod_mbox/commons-commits/">mail-archives.apache.org</a><br />
+          <td>
               <a href="https://lists.apache.org/list.html?commits@commons.apache.org">lists.apache.org</a>
           </td>
-          <td><a href="https://markmail.org/list/org.apache.commons.commits/">markmail.org</a><br />
+          <td>
               <a href="https://www.mail-archive.com/commits@commons.apache.org/">www.mail-archive.com</a>
           </td>
         </tr>
@@ -199,13 +199,11 @@ limitations under the License.
           <td><a class="externalLink" href="mailto:announce-subscribe@apache.org">Subscribe</a></td>
           <td><a class="externalLink" href="mailto:announce-unsubscribe@apache.org">Unsubscribe</a></td>
           <td><i>read only</i></td>
-          <td><a class="externalLink" href="https://mail-archives.apache.org/mod_mbox/www-announce/">mail-archives.apache.org</a><br />
+          <td>
               <a class="externalLink" href="https://lists.apache.org/list.html?announce@apache.org">lists.apache.org</a>
           </td>
-          <td><a class="externalLink" href="https://markmail.org/list/org.apache.announce/">markmail.org</a><br />
-              <a class="externalLink" href="https://old.nabble.com/Apache-News-and-Announce-f109.html">old.nabble.com</a><br />
-              <a class="externalLink" href="https://www.mail-archive.com/announce@apache.org/">www.mail-archive.com</a><br />
-              <a class="externalLink" href="https://news.gmane.org/gmane.comp.apache.announce">news.gmane.org</a>
+          <td>
+              <a class="externalLink" href="https://www.mail-archive.com/announce@apache.org/">www.mail-archive.com</a>
           </td>
         </tr>
       </table>