Apache Commons Codec 1.22.0 Release Notes
-----------------------------------------

The Apache Commons Codec team is pleased to announce the release of Apache Commons Codec 1.22.0.

The Apache Commons Codec component contains encoders and decoders for
formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

This is a feature and maintenance release. Java 8 or later is required.


New features
------------

* CODEC-326:  Add Base58 support. Thanks to Inkeet, Gary Gregory, Wolff Bock von Wuelfingen.
*             Add BaseNCodecInputStream.AbstracBuilder.setByteArray(byte[]). Thanks to Gary Gregory.
* CODEC-335:  Add GitIdentifiers to compute Git blob and tree object identifiers. Thanks to Piotr P. Karwasz, Gary Gregory.

Fixed Bugs
----------

* CODEC-249:  Fix Incorrect transform of CH digraph according Metaphone basic rules #423. Thanks to Shalu Jha, Andrey, Gary Gregory.
* CODEC-317:  ColognePhonetic can create duplicate consecutive codes in some cases. Thanks to DRUser123, Shalu Jha, Gary Gregory.
*             Add boundary tests for BinaryCodec.fromAscii partial-bit inputs #425. Thanks to fancying, Gary Gregory.
* CODEC-336:  Base64.Builder.setUrlSafe(boolean) Javadoc incorrectly states null is accepted for primitive boolean parameter. Thanks to Partha Paul, Gary Gregory.

Changes
-------

*             Bump org.apache.commons:commons-parent from 96 to 98. Thanks to Gary Gregory.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------
Apache Commons Codec 1.21.0 Release Notes
-----------------------------------------

The Apache Commons Codec team is pleased to announce the release of Apache Commons Codec 1.21.0.

The Apache Commons Codec component contains encoders and decoders for
formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

This is a feature and maintenance release. Java 8 or later is required.


New features
------------

* CODEC-333:  Add distinct Base64 decoding for standard and URL-safe formats. Thanks to Aleksandr Beliakov, Gary Gregory.

Fixed Bugs
----------

*             Fix oak leaf icon references in overview.html when running `mvn clean javadoc:javadoc`. Thanks to Gary Gregory.
*             Fix Apache RAT plugin console warnings. Thanks to Gary Gregory.
*             Fix malformed Javadoc comments. Thanks to Gary Gregory.

Changes
-------

*             Bump org.apache.commons:commons-parent from 91 to 96 #415, #418. Thanks to Gary Gregory, Dependabot.
*             Bump commons-io:commons-io from 2.20.0 to 2.21.0. Thanks to Gary Gregory.
*             Bump org.apache.commons:commons-lang3 from 3.19.0 to 3.20.0. Thanks to Gary Gregory, Dependabot.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------
Apache Commons Codec 1.20.0 Release Notes
-----------------------------------------

The Apache Commons Codec team is pleased to announce the release of Apache Commons Codec 1.20.0.

The Apache Commons Codec component contains encoders and decoders for
formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

This is a feature and maintenance release. Java 8 or later is required.


New features
------------

*             Add org.apache.commons.codec.digest.Crc16. Thanks to Fredrik Kjellberg, Gary Gregory.
*             Add builders to org.apache.commons.codec.digest streams and deprecate some old constructors. Thanks to Gary Gregory.
*             Add builder to Base16 streams and deprecate some old constructors. Thanks to Gary Gregory.
*             Add support for SHAKE128-256 and SHAKE256-512 to `DigestUtils` and `MessageDigestAlgorithms` on Java 25 and up. Thanks to Gary Gregory.
*             Add BaseNCodec.AbstractBuilder.setDecodeTable(byte[]) and refactor subclasses. Thanks to Gary Gregory.


Changes
-------

*             Deprecate all but one Base32 constructor in favor of the builder added in version 1.17.0. Thanks to Gary Gregory.
*             Deprecate all but one Base64 constructor in favor of the builder added in version 1.17.0. Thanks to Gary Gregory.
*             BaseNCodecInputStream subclasses are now type-safe to match its matching BaseNCodec. Thanks to Gary Gregory.
*             BaseNCodecOutputStream subclasses are now type-safe to match its matching BaseNCodec. Thanks to Gary Gregory.
*             Bump org.apache.commons:commons-parent from 85 to 91. Thanks to Gary Gregory, Dependabot.
*             [test] Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0. Thanks to Gary Gregory.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------
Apache Commons Codec 1.19.0 Release Notes
-----------------------------------------

The Apache Commons Codec team is pleased to announce the release of Apache Commons Codec 1.19.0.

The Apache Commons Codec component contains encoders and decoders for
formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

This is a feature and maintenance release. Java 8 or later is required.


New features
------------

*             Add HmacUtils.hmac(Path). Thanks to Gary Gregory.
*             Add HmacUtils.hmacHex(Path). Thanks to Gary Gregory.
*             Add PMD check to the default Maven goal. Thanks to Gary Gregory.
*             Add SpotBugs check to the default Maven goal. Thanks to Gary Gregory.

Fixed Bugs
----------

*             Remove -nouses directive from maven-bundle-plugin. OSGi package imports now state 'uses' definitions for package imports, this doesn't affect JPMS (from org.apache.commons:commons-parent:80). Thanks to Gary Gregory.
*             Refactor DigestUtils.updateDigest(MessageDigest, File) to use NIO. Thanks to Gary Gregory.
* CODEC-328:  Clarify Javadoc for org.apache.commons.codec.digest.UnixCrypt.crypt(byte[],String). Thanks to Gary Gregory.
*             Precompile regular expressions in DaitchMokotoffSoundex.Rule. Thanks to Gary Gregory.
*             Precompile regular expressions in DaitchMokotoffSoundex.parseRules(Scanner, String, Map, Map). Thanks to Gary Gregory.
*             Precompile regular expressions in Lang.loadFromResource(String, Languages). Thanks to Gary Gregory.
*             Precompile regular expressions in PhoneticEngine.encode(String, LanguageSet). Thanks to Gary Gregory.
*             Precompile regular expressions in org.apache.commons.codec.language.bm.Rule.parse*(*). Thanks to Gary Gregory.
*             Remove redundant checks for whitespace in DaitchMokotoffSoundex.soundex(String, boolean). Thanks to Gary Gregory.
*             Javadoc typo in Base16.java #380. Thanks to Sebastian Baunsgaard.
*             Deprecate unused constant org.apache.commons.codec.language.bm.Rule.ALL. Thanks to Gary Gregory.
* CODEC-331:  org.apache.commons.codec.language.bm.Rule.parsePhonemeExpr(String) adds duplicate empty phoneme when input ends with |. Thanks to IlikeCode, Gary Gregory.
* CODEC-331:  org.apache.commons.codec.language.DaitchMokotoffSoundex.cleanup(String) does not remove special characters like punctuation. Thanks to IlikeCode, Gary Gregory.
*             Fix PMD multiple UnnecessaryFullyQualifiedName in org.apache.commons.codec.binary.StringUtils. Thanks to Gary Gregory.
*             Fix PMD UnusedFormalParameter in private constructor in org.apache.commons.codec.binary.Base16. Thanks to Gary Gregory.
*             Fix PMD multiple UnnecessaryFullyQualifiedName in org.apache.commons.codec.digest.Blake3. Thanks to Gary Gregory.
*             Fix PMD UnnecessaryFullyQualifiedName in org.apache.commons.codec.digest.Md5Crypt. Thanks to Gary Gregory.
*             Fix PMD EmptyControlStatement in org.apache.commons.codec.language.Metaphone. Thanks to Gary Gregory.
*             Fix SpotBugs [ERROR] Medium: org.apache.commons.codec.binary.BaseNCodec$AbstractBuilder.setEncodeTable(byte[]) may expose internal representation by storing an externally mutable object into BaseNCodec$AbstractBuilder.encodeTable [org.apache.commons.codec.binary.BaseNCodec$AbstractBuilder] At BaseNCodec.java:[line 131] EI_EXPOSE_REP2. Thanks to Gary Gregory.
*             The method org.apache.commons.codec.binary.BaseNCodec.AbstractBuilder.setLineSeparator(byte...) now makes a defensive copy. Thanks to Gary Gregory.
*             Avoid unnecessary String conversion in org.apache.commons.codec.language.bm.PhoneticEngine.applyFinalRules(PhonemeBuilder, Map). Thanks to Gary Gregory.
*             Fix SpotBugs [ERROR] High: Potentially dangerous use of non-short-circuit logic in org.apache.commons.codec.language.DaitchMokotoffSoundex.cleanup(String) [org.apache.commons.codec.language.DaitchMokotoffSoundex] At DaitchMokotoffSoundex.java:[line 350] NS_DANGEROUS_NON_SHORT_CIRCUIT. Thanks to Gary Gregory.

Changes
-------

*             Bump org.apache.commons:commons-parent from 79 to 85 #375. Thanks to Gary Gregory, Dependabot.
*             [test] Bump commons-io:commons-io from 2.18.0 to 2.20.0. Thanks to Gary Gregory.
*             [test] Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 #386. Thanks to Gary Gregory, Dependabot.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------
Apache Commons Codec 1.18.0 Release Notes
-----------------------------------------

The Apache Commons Codec team is pleased to announce the release of Apache Commons Codec 1.18.0. 

The Apache Commons Codec component contains encoders and decoders for
formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

This is a feature and maintenance release. Java 8 or later is required.


New features
------------

*             Add Base32.Builder.setHexDecodeTable(boolean). Thanks to Gary Gregory, Julian Reschke.
*             Add Base32.Builder.setHexEncodeTable(boolean). Thanks to Gary Gregory, Julian Reschke.


Changes
-------

*             Bump org.apache.commons:commons-parent from 78 to 79. Thanks to Gary Gregory.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------

Apache Commons Codec 1.17.2 Release Notes
-----------------------------------------

The Apache Commons Codec component contains encoders and decoders for
formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

This is a feature and maintenance release. Java 8 or later is required.


Fixed Bugs
----------

*             Rewrite DaitchMokotoffSoundex.soundex(String) using String.join(). Thanks to Gary Gregory.
* CODEC-324:  Use Resource.class to load resources, rather than its class loader #353. Thanks to Michael Froh.
*             Deprecate CharSequenceUtils.CharSequenceUtils(). Thanks to Gary Gregory.
*             Deprecate Sha2Crypt.Sha2Crypt(). Thanks to Gary Gregory.

Changes
-------

*             Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.17.0 #296, #305, #313. Thanks to Dependabot.
*             Bump org.apache.commons:commons-parent from 71 to 78 #310, #312, #319, #323, #326, #333. Thanks to Gary Gregory.
*             [test] Bump commons-io:commons-io from 2.16.1 to 2.18.0 #318, #341. Thanks to Gary Gregory, Dependabot.
*             Bump org.codehaus.mojo:taglist-maven-plugin from 3.1.0 to 3.2.1 #332. Thanks to Gary Gregory, Dependabot.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------

Apache Commons Codec 1.17.1 Release Notes
-----------------------------------------

The Apache Commons Codec component contains encoders and decoders for
various formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

Feature and fix release. Requires a minimum of Java 8.


Fixed Bugs
----------

*             Md5Crypt now throws IllegalArgumentException on an invalid prefix. Thanks to Gary Gregory.

Changes
-------

*             Bump org.apache.commons:commons-parent from 69 to 71 #286. Thanks to Gary Gregory.
*             Bump org.codehaus.mojo:animal-sniffer-maven-plugin from 1.23 to 1.24 #293. Thanks to Dependabot.
*             Bump org.codehaus.mojo:taglist-maven-plugin from 3.0.0 to 3.1.0 #292. Thanks to Dependabot.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------

Apache Commons Codec 1.17.0 Release Notes
-----------------------------------------

The Apache Commons Codec component contains encoders and decoders for
various formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

Feature and fix release. Requires a minimum of Java 8.


New features
------------

*             Add override org.apache.commons.codec.language.bm.Rule.PhonemeExpr.size(). Thanks to Gary Gregory.
*             Add support for Base64 custom alphabets #266. Thanks to Chris Kocel, Gary Gregory.
*             Add Base64.Builder (allows custom alphabets). Thanks to Gary Gregory.
*             Add Base32.Builder (allows custom alphabets). Thanks to Gary Gregory.
*             Add Base64 support for a custom padding byte (like Base32). Thanks to Gary Gregory.

Fixed Bugs
----------

* CODEC-320:  Wrong output of DoubleMetaphone in 1.16.1. Thanks to Martin Frydl, Gary Gregory.
*             Optimize memory allocation in PhoneticEngine. Thanks to Gary Gregory.
*             BCodec and QCodec encode() methods throw UnsupportedCharsetException instead of EncoderException. Thanks to Gary Gregory.
*             Set Javadoc link to latest Java API LTS version. Thanks to Gary Gregory.
*             Base32 constructor fails-fast with a NullPointerException if the custom alphabet array is null. Thanks to Gary Gregory.
*             Base32 constructor makes a defensive copy of the line separator array. Thanks to Gary Gregory.
*             Base64 constructor makes a defensive copy of the line separator array. Thanks to Gary Gregory.
*             Base64 constructor makes a defensive copy of a custom alphabet array. Thanks to Gary Gregory.

Changes
-------

*             Bump org.apache.commons:commons-parent from 66 to 69 #250, #261. Thanks to Dependabot, Gary Gregory.
*             Bump commons-io:commons-io from 2.15.1 to 2.16.1 #258, #265. Thanks to Dependabot, Gary Gregory.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------

Apache Commons Codec 1.16.1 Release Notes
-----------------------------------------

The Apache Commons Codec component contains encoders and decoders for
various formats such as Base16, Base32, Base64, digest, and Hexadecimal. In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

Feature and fix release. Requires a minimum of Java 8.

New features
------------

*             Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory.

Fixed Bugs
----------

* CODEC-295:  Test clean ups. Thanks to Gary Gregory.
*             [StepSecurity] ci: Harden GitHub Actions #187. Thanks to step-security-bot, Gary Gregory.
* CODEC-295:  Correct error in Base64 Javadoc #188. Thanks to Evan Saulpaugh.
* CODEC-295:  Add minimum Java version in changes.xml #186. Thanks to Olivier Jaquemet, Gary Gregory.
* CODEC-310:  Documentation update for the org.apache.commons.codec.digest.* package #208. Thanks to Yakov Shafranovich.
*             Precompile regular expression in UnixCrypt.crypt(byte[], String). Thanks to Gary Gregory.
* CODEC-315:  Fix possible IndexOutOfBoundException in PhoneticEngine.encode method #223. Thanks to Arthur Chan, Gary Gregory.
* CODEC-313:  Fix possible ArrayIndexOutOfBoundsException in QuotedPrintableCodec.encodeQuotedPrintable() method #221. Thanks to Arthur Chan, Gary Gregory.
* CODEC-312:  Fix possible StringIndexOutOfBoundException in MatchRatingApproachEncoder.encode() method #220. Thanks to Arthur Chan, Gary Gregory.
* CODEC-311:  Fix possible ArrayIndexOutOfBoundException in RefinedSoundex.getMappingCode() #219. Thanks to Arthur Chan, Gary Gregory.
* CODEC-314:  Fix possible IndexOutOfBoundsException in PercentCodec.insertAlwaysEncodeChars() method #222. Thanks to Arthur Chan, Gary Gregory.
*             Deprecate UnixCrypt 0-argument constructor. Thanks to Gary Gregory.
*             Deprecate Md5Crypt 0-argument constructor. Thanks to Gary Gregory.
*             Deprecate Crypt 0-argument constructor. Thanks to Gary Gregory.
*             Deprecate StringUtils 0-argument constructor. Thanks to Gary Gregory.
*             Deprecate Resources 0-argument constructor. Thanks to Gary Gregory.
*             Deprecate Charsets 0-argument constructor. Thanks to Gary Gregory.
*             Deprecate CharEncoding 0-argument constructor. Thanks to Gary Gregory.
*             Add missing version for animal-sniffer-maven-plugin. Thanks to Gary Gregory.

Changes
-------

*             Bump commons-parent from 58 to 66. Thanks to Dependabot, Gary Gregory.
*             Bump commons-lang3 from 3.12.0 to 3.14.0. Thanks to Gary Gregory.
*             Bump commons-io from 2.13.0 to 2.15.1. Thanks to Gary Gregory.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------

              Apache Commons Codec 1.16.0

The Apache Commons Codec package contains simple encoder and decoders for
various formats such as Base64 and Hexadecimal.  In addition to these
widely used encoders and decoders, the codec package also maintains a
collection of phonetic encoding utilities.

Feature and fix release.

Changes in this version include:

New features
------------

* CODEC-296:  Add support for Blake3 family of hashes. Thanks to Matt Sicker.
*             Add github/codeql-action.

Fixed Bugs
----------

* CODEC-295:  Minor improvements #67. Thanks to Arturo Bernal.
*             Remove duplicated words from Javadocs. Thanks to James Gan.
* CODEC-301:  Simplify assertion #84. Thanks to Alexander Pinske, Alex Herbert.
* CODEC-300:  Simplify assertion #84. Thanks to Arturo Bernal.
* CODEC-298:  Use Standard Charset object #82. Thanks to Arturo Bernal.
*             Use String.contains() functions #125. Thanks to Arturo Bernal.
*             Avoid use toString() or substring() in favor of a simplified expression #126. Thanks to Arturo Bernal.
* CODEC-305:  Fix byte-skipping in Base16 decoding #135. Thanks to Florian.
*             Fix several typos, improve writing in some javadocs #139. Thanks to Marc Wrobel.
*             BaseNCodecOutputStream.eof() should not throw IOException. Thanks to Gary Gregory.
*             Javadoc improvements and cleanups. Thanks to Gary Gregory.
*             Deprecate BaseNCodec.isWhiteSpace(byte) and use Character.isWhitespace(int). Thanks to Gary Gregory.

Changes
-------

*             Bump actions/cache from v2 to v3.0.10 #75, #99, #119, #138, #149, #152. Thanks to Dependabot, Gary Gregory.
*             Bump actions/setup-java from v1.4.1 to 3.5.1 #60, #62, #121. Thanks to Dependabot, Gary Gregory.
*             Bump actions/checkout from 2.3.2 to 3.1.0 #65, #98, #114, #153. Thanks to Dependabot, Gary Gregory.
*             Bump commons-parent from 52 to 58, #147, #165, #170. Thanks to Dependabot, Gary Gregory.
* CODEC-285:  Bump junit from 4.13.1 to 5.9.1 #76, #39, #140, #148. Thanks to Dependabot, John Patrick.
*             Bump Java 7 to 8. Thanks to Gary Gregory.
*             Bump japicmp-maven-plugin from 0.14.3 to 0.17.1. Thanks to Gary Gregory.
*             Bump jacoco-maven-plugin from 0.8.5 to 0.8.8 (Fixes Java 15 builds). Thanks to Gary Gregory.
*             Bump maven-surefire-plugin from 2.22.2 to 3.0.0-M7 #122, #134. Thanks to Gary Gregory.
*             Bump maven-javadoc-plugin from 3.2.0 to 3.4.1. Thanks to Gary Gregory.
*             Bump animal-sniffer-maven-plugin from 1.19 to 1.22. Thanks to Gary Gregory.
*             Bump maven-pmd-plugin from 3.13.0 to 3.19.0, #133, #142, #145. Thanks to Gary Gregory, Dependabot.
*             Bump pmd from 6.47.0 to 6.52.0. Thanks to Gary Gregory.
*             Bump maven-checkstyle-plugin from 2.17 to 3.2.0 #143. Thanks to Gary Gregory.
*             Bump checkstyle from 8.45.1 to 9.3 #97, #100, #101, #103. Thanks to Dependabot.
*             Bump taglist-maven-plugin from 2.4 to 3.0.0 #102. Thanks to Dependabot.
*             Bump jacoco-maven-plugin from 0.8.7 to 0.8.8. Thanks to Gary Gregory.


For complete information on Apache Commons Codec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Codec website:

https://commons.apache.org/proper/commons-codec/

Download page: https://commons.apache.org/proper/commons-codec/download_codec.cgi

---------------------------------------------------------------------------------
