<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!--
This file is also used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits. TBA how to use this with SVN.

To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=m.n]

The <action> type attribute can be add,update,fix,remove.
-->

<document>
  <properties>
    <title>Apache Commons Codec Release Notes</title>
    <author>Apache Commons Developers</author>
  </properties>
  <body>

    <release version="1.14" date="2019-12-30" description="Feature and fix release.">
      <action issue="CODEC-261" dev="aherbert" type="fix">Hex: Allow encoding read-only ByteBuffer.</action>
      <action issue="CODEC-259" dev="aherbert" type="fix">Hex: Only use an available ByteBuffer backing array if the length equals the remaining byte count.</action>
      <action issue="CODEC-268" dev="aherbert" type="update">MurmurHash3: Deprecate hash64 methods and hash methods accepting a String that use the default encoding.</action>
      <action issue="CODEC-265" dev="aherbert" type="fix">BaseNCodec to expand buffer using overflow conscious code.</action>
      <action issue="CODEC-270" dev="aherbert" type="fix">Base32/64: Fixed decoding check that all the final trailing bits to discard are zero.</action>
      <action issue="CODEC-264" dev="aherbert" due-to="Claude Warren" type="add">Add MurmurHash3.hash128x64 methods to fix sign extension error during seeding in hash128 methods.</action>
      <action issue="CODEC-267" dev="aherbert" due-to="Claude Warren" type="add">Add MurmurHash3.hash32x86 methods and IncrementalHash32x86 to fix sign extension error in hash32 methods.</action>
      <action issue="CODEC-269" dev="aherbert" type="fix">Allow repeat calls to MurmurHash3.IncrementalHash32.end() to generate the same value.</action>
      <action issue="CODEC-272" dev="ggregory" type="add" due-to="Behrang, Alex Herbert, Gary Gregory">Add RandomAccessFile digest methods #31.</action>
      <action issue="CODEC-273" dev="ggregory" type="add" due-to="Gary Gregory">Add Path APIs to org.apache.commons.codec.digest.DigestUtils similar to File APIs.</action>
      <action issue="CODEC-274" dev="ggregory" type="add" due-to="Gary Gregory">Add SHA-512/224 and SHA-512/256 to DigestUtils for Java 9 and up.</action>
      <action issue="CODEC-275" dev="ggregory" type="add" due-to="Claude Warren">Add missing note in javadoc when sign extension error is present #34.</action>
      <action issue="CODEC-276" dev="ggregory" type="fix" due-to="Gary Gregory">Reliance on default encoding in MurmurHash2 and MurmurHash3.</action>
      <action issue="CODEC-277" dev="ggregory" type="update" due-to="Gary Gregory">Don't reload standard Charsets in org.apache.commons.codec.Charsets.</action>
      <action issue="CODEC-278" dev="ggregory" type="update" due-to="Gary Gregory">Deprecate Charset constants in org.apache.commons.codec.Charsets in favor of java.nio.charset.StandardCharsets.</action>
    </release>

    <release version="1.13" date="2019-07-20" description="Feature and fix release.">
      <action issue="CODEC-255" dev="sebb" due-to="Holger Grote" type="fix">ColognePhonetic handles x incorrectly</action>
      <action issue="CODEC-254" dev="sebb" due-to="Holger Grote" type="fix">ColognePhonetic does not treat the letter H correctly</action>
      <action issue="CODEC-134" dev="tmousaw-ptc" type="fix">Reject any decode request for a value that is impossible to encode to for Base32/Base64 rather than blindly decoding.</action>
      <action issue="CODEC-236" dev="melloware" due-to="Viliam Holub" type="add">MurmurHash2 for 32-bit or 64-bit value.</action>
      <action issue="CODEC-236" dev="melloware" due-to="Austin Appleby" type="add">MurmurHash3 for 32-bit or 128-bit value.</action>
      <action issue="CODEC-236" dev="ggregory" due-to=" Tomas Shestakov, Gary Gregory" type="update">Broken direct java.nio.ByteBuffer support in org.apache.commons.codec.binary.Hex.</action>
    </release>

    <release version="1.12" date="2019-02-04" description="Feature and fix release.">
      <!-- The first attribute below should be the issue id; makes it easier to navigate in the IDE outline -->
      <action issue="CODEC-252" dev="chtompki" type="fix">B64 salt generator: Random -> ThreadLocalRandom</action>
      <action issue="CODEC-250" dev="sebb" type="fix" due-to="Alex Volodko">Wrong value calculated by Cologne Phonetic if a special character is placed between equal letters</action>
      <action issue="CODEC-244" dev="ggregory" type="update">Update from Java 6 to Java 7</action>
      <action issue="CODEC-240" dev="ggregory" type="add" due-to="Ioannis Sermetziadis">Add Percent-Encoding Codec (described in RFC3986 and RFC7578)</action>
      <action issue="CODEC-246" dev="ggregory" type="fix" due-to="Oscar Luis Vera Pérez">ColognePhoneticTest.testIsEncodeEquals missing assertions</action>
      <action issue="CODEC-251" dev="ggregory" type="add" due-to="Gary Gregory">Add SHA-3 methods in DigestUtils</action>
    </release>
    <release version="1.11" date="2017-10-20" description="Feature and fix release.">
      <!-- The first attribute below should be the issue id; makes it easier to navigate in the IDE outline -->
      <action issue="CODEC-241" type="add">Add support for XXHash32</action>
      <action issue="CODEC-234" dev="ggregory" type="update" due-to="Christopher Schultz, Sebb">Base32.decode should support lowercase letters</action>
      <action issue="CODEC-233" dev="sebb" type="update" due-to="Yossi Tamari">Soundex should support more algorithm variants</action>
      <action issue="CODEC-145" dev="sebb" type="fix" due-to="Jesse Glick">Base64.encodeBase64String could better use newStringUsAscii (ditto encodeBase64URLSafeString)</action>
      <action issue="CODEC-144" dev="sebb" type="fix">BaseNCodec: encodeToString and encodeAsString methods are identical</action>
      <action issue="CODEC-232" dev="sebb" type="fix">URLCodec is neither immutable nor threadsafe</action>
      <action issue="CODEC-231" dev="sebb" type="fix">StringUtils.equals(CharSequence cs1, CharSequence cs2) can fail with String Index OBE</action>
      <action issue="CODEC-230" dev="sebb" type="fix">URLCodec.WWW_FORM_URL should be private</action>
      <action issue="CODEC-229" dev="sebb" type="fix">StringUtils.newStringxxx(null) should return null, not NPE</action>
      <action issue="CODEC-220" dev="sebb" type="add">Fluent interface for DigestUtils</action>
      <action issue="CODEC-222" dev="sebb" type="add">Fluent interface for HmacUtils</action>
      <action issue="CODEC-225" dev="jochen" type="fix" due-to="Svetlin Zarev">Fix minor resource leaks</action>
      <action issue="CODEC-223" dev="sebb" type="remove">Drop obsolete Ant build</action>
      <action issue="CODEC-171" dev="sebb" type="add" due-to="Brett Okken">Add support for CRC32-C</action>
      <action issue="CODEC-221" dev="sebb" type="update">HmacUtils.updateHmac calls reset() unnecessarily</action>
      <action issue="CODEC-200" dev="sebb" type="fix" due-to="Luciano Vernaschi">Base32.HEX_DECODE_TABLE contains the wrong value 32</action>
      <action issue="CODEC-207" dev="ggregory" type="fix" due-to="Gary Gregory">Charsets Javadoc breaks build when using Java 8</action>
      <action issue="CODEC-199" dev="ggregory/sebb" type="fix" due-to="Yossi Tamari">Bug in HW rule in Soundex</action>
      <action issue="CODEC-209" dev="ggregory" type="fix" due-to="Gary Gregory">Javadoc for SHA-224 DigestUtils methods should mention Java 1.8.0 restriction instead of 1.4.0.</action>
      <action issue="CODEC-219" dev="ggregory" type="fix" due-to="Gary Gregory, Sebb">Don't deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets</action>
      <action issue="CODEC-217" dev="ggregory" type="add" due-to="Gary Gregory">Add HmacAlgorithms.HMAC_SHA_224 (Java 8 only)</action>
      <action issue="CODEC-213" dev="ggregory" type="add" due-to="Gary Gregory">Support JEP 287: SHA-3 Hash Algorithms</action>
      <action issue="CODEC-212" dev="ggregory" type="add" due-to="Gary Gregory">Create a minimal Digest command line utility: org.apache.commons.codec.digest.Digest</action>
      <action issue="CODEC-210" dev="ggregory" type="add" due-to="Gary Gregory">Add DigestUtils.getDigest(String, MessageDigest)</action>
      <action issue="CODEC-208" dev="ggregory" type="add" due-to="Gary Gregory">Make some DigestUtils APIs public</action>
      <action issue="CODEC-206" dev="ggregory" type="add" due-to="Gary Gregory">Add java.io.File APIs to MessageDigestAlgorithm</action>
      <action issue="CODEC-183" dev="ggregory" type="add" due-to="Steven Wurster">BaseNCodecOutputStream only supports writing EOF on close()</action>
      <action issue="CODEC-195" dev="ggregory" type="add" due-to="Gary Gregory">Support SHA-224 in DigestUtils on Java 8</action>
      <action issue="CODEC-194" dev="ggregory" type="add" due-to="Gary Gregory">Support java.nio.ByteBuffer in org.apache.commons.codec.binary.Hex</action>
      <action issue="CODEC-193" dev="ggregory" type="add" due-to="Michael Donaghy">Support java.nio.ByteBuffer in DigestUtils</action>
      <action issue="CODEC-202" dev="ggregory" type="add" due-to="Oleg Kalnichevski">Add BaseNCodec.encode(byte[], int, int) input with offset and length parameters for Base64 and Base32.</action>
      <action issue="CODEC-203" dev="ggregory" type="add" due-to="Gary Gregory">Add convenience method decodeHex(String).</action>
      <action issue="CODEC-205" dev="ggregory" type="add" due-to="Gary Gregory">Add faster CRC32 implementation.</action>
      <action issue="CODEC-224" dev="ggregory" type="add" due-to="Gary Gregory">Add convenience API org.apache.commons.codec.binary.Hex.encodeHexString(byte[]|ByteBuffer, boolean).</action>
      <action issue="CODEC-242" dev="ggregory" type="add" due-to="Gary Gregory">Add Automatic-Module-Name manifest entry for Java 9.</action>
    </release>
    <release version="1.10" date="5 November 2014" description="Feature and fix release.">
      <action dev="ggregory" type="add" issue="CODEC-192" due-to="Thomas Neidhart">Add Daitch-Mokotoff Soundex</action>
      <action dev="ggregory" type="add" issue="CODEC-121" due-to="Thomas Neidhart, Java John">QuotedPrintableCodec does not support soft line break per the 'quoted-printable' example on Wikipedia</action>
      <action dev="tn" type="fix" issue="CODEC-185" due-to="Sean Busbey">Added clarification to Javadoc of Base64 concerning the use of the urlSafe parameter</action>
      <action dev="tn" type="fix" issue="CODEC-191" due-to="Igor Savin">Added clarification to the Javadoc of Base[32|64]OutputStream that it is mandatory to call close()</action>
      <action dev="ggregory" type="fix" issue="CODEC-188" due-to="Hendrik Saly">Add support for HMAC Message Authentication Code (MAC) digests</action>
      <action dev="ggregory" type="fix" issue="CODEC-187" due-to="Michael Tobias, Thomas Neidhart">Beider Morse Phonetic Matching producing incorrect tokens</action>
      <action dev="ggregory" type="fix" issue="CODEC-184" due-to="Cyrille Artho">NullPointerException in DoubleMetaPhone.isDoubleMetaphoneEqual when using empty strings</action>
      <action dev="ggregory" type="add" issue="CODEC-181" due-to="Ivan Martinez-Ortiz">Make possible to provide padding byte to BaseNCodec in constructor</action>
      <action dev="ggregory" type="fix" issue="CODEC-180" due-to="Ville Skyttä">Fix Javadoc 1.8.0 errors</action>
      <action dev="ggregory" type="update" issue="CODEC-178">Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets</action>
      <action dev="ggregory" type="fix" issue="CODEC-189">Fix Java 8 build Javadoc errors</action>
      <action dev="ggregory" type="update" issue="CODEC-190">Update from commons-parent 34 to 35</action>
    </release>
    <release version="1.9" date="20 December 2013" description="Feature and fix release.">
      <action dev="ggregory" type="update" issue="CODEC-174" due-to="Thomas Champagne">Improve performance of Beider Morse encoder</action>
      <action dev="ggregory" type="fix" issue="CODEC-175">Beider Morse does not close Scanners used to read config files</action>
      <action dev="sebb" type="fix" issue="CODEC-172" due-to="Matt Bishop">Base32 decode table has spurious value</action>
      <action dev="ggregory" type="fix" issue="CODEC-170" due-to="Ron Wheeler, Henri Yandell">Link broken in Metaphone Javadoc</action>
      <action dev="ggregory" type="fix" issue="CODEC-176" due-to="Ville Skyttä">Spelling fixes in Javadoc and comments</action>
    </release>
    <release version="1.8" date="19 April 2013" description="Feature and fix release. Requires a minimum of Java 1.6.">
      <action dev="ggregory" type="add" issue="CODEC-168" due-to="Daniel Cassidy">Add DigestUtils.updateDigest(MessageDigest, InputStream).</action>
      <action dev="julius" type="add" issue="CODEC-167">Add JUnit to test our decode with pad character in the middle.</action>
      <action dev="ggregory" type="add" issue="CODEC-161" due-to="crice">Add Match Rating Approach (MRA) phonetic algorithm encoder.</action>
      <action dev="ggregory" type="fix" issue="CODEC-163" due-to="leo141">ColognePhonetic encoder unnecessarily creates many char arrays on every loop run.</action>
      <action dev="sebb" type="fix" issue="CODEC-160">Base64.encodeBase64URLSafeString doesn't add padding characters at the end.</action>
    </release>
    <release version="1.7" date="11 September 2012" description="Feature and fix release. Requires a minimum of Java 1.6.">
      <action issue="CODEC-157" dev="ggregory" type="add" due-to="ggregory">
        DigestUtils: Add MD2 APIs.
      </action>
      <action issue="CODEC-156" dev="ggregory" type="add" due-to="ggregory">
        DigestUtils: add APIs named after standard algorithm name SHA-1.
      </action>
      <action issue="CODEC-155" dev="ggregory" type="add" due-to="ggregory">
        DigestUtils.getDigest(String) should throw IllegalArgumentException instead of RuntimeException.
      </action>
      <action issue="CODEC-153" dev="ggregory" type="add" due-to="ggregory">
        Create a class MessageDigestAlgorithms to define standard algorithm names.
      </action>
      <action issue="CODEC-152" dev="ggregory" type="add" due-to="ggregory">
        DigestUtils.getDigest(String) loses the original exception.
      </action>
      <action issue="CODEC-151" dev="ggregory" type="add" due-to="lathspell">
        Remove unnecessary attempt to fill up the salt variable in UnixCrypt.
      </action>
      <action issue="CODEC-150" dev="ggregory" type="add" due-to="lathspell">
        Remove unnecessary call to Math.abs().
      </action>
      <action issue="CODEC-148" dev="ggregory" type="add" due-to="lathspell">
        More tests and minor things.
      </action>
      <action issue="CODEC-146" dev="tn" type="add" due-to="Julius Davies">
        Added regression tests for PhoneticEngine based on Solr-3.6.0.
      </action>
      <action issue="CODEC-147" dev="tn" type="update">
        BeiderMorseEncoder/PhoneticEngine: make results deterministic by using a LinkedHashSet
        instead of a HashSet.
      </action>
      <action issue="CODEC-143" dev="sebb" type="update">
        StringBuffer could be replaced by StringBuilder for local variables.
      </action>
      <action issue="CODEC-139" dev="ggregory" type="add" due-to="dsebastien">
        DigestUtils: add updateDigest methods and make methods public.
      </action>
      <action issue="CODEC-133" dev="ggregory" type="add" due-to="lathspell">
        Add classes for MD5/SHA1/SHA-512-based Unix crypt(3) hash variants.
      </action>
      <action issue="CODEC-96" dev="ggregory" type="fix" due-to="sebb">
        Base64 encode() method is no longer thread-safe, breaking clients using it as a shared BinaryEncoder.
        Note: the fix breaks binary compatibility, however the changes are to a class (BaseNCodec) which is
        intended for internal use.
      </action>
      <action issue="CODEC-138" dev="sebb" type="fix">
        Complete FilterInputStream interface for BaseNCodecInputStream.
      </action>
      <action issue="CODEC-136" dev="ggregory" type="fix">
        Use Charset objects when possible, create Charsets for required character encodings.
      </action>
      <action issue="CODEC-132" dev="ggregory" type="fix" due-to="rcmuir">
        BeiderMorseEncoder OOM issues.
      </action>
      <action issue="CODEC-131" dev="tn" type="fix" due-to="smolav">
        DoubleMetaphone Javadoc contains dead links.
      </action>
      <action issue="CODEC-130" dev="ggregory" type="add" due-to="tn">
        Base64InputStream.skip skips underlying stream, not output.
      </action>
      <action issue="CODEC-63" dev="ggregory" type="add" due-to="tn">
        Implement NYSIIS phonetic encoder.
      </action>
    </release>
    <release version="1.6" date="20 November 2011" description="Feature and fix release. Requires a minimum of Java 1.5.">
      <action dev="ggregory" type="fix" issue="CODEC-129" due-to="ggregory">
        Use standard Maven directory layout.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-128" due-to="ville.skytta@iki.fi">
        Documentation spelling fixes.
      </action>
      <action dev="ggregory, sebb" type="fix" issue="CODEC-127">
        Fix various character encoding issues in comments and test cases.
      </action>
      <action dev="ggregory, matthewpocock" type="update" issue="CODEC-125" due-to="Matthew Pocock">
        Implement a Beider-Morse phonetic matching codec.
      </action>
      <action dev="ggregory" type="update" issue="CODEC-119">
        Migrate to Java 5.
      </action>
      <action dev="ggregory" type="update" issue="CODEC-120">
        Migrate to JUnit 4.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-123">
        ColognePhonetic Javadoc should use HTML entities for special characters.
      </action>
    </release>
    <release version="1.5" date="29 March 2011" description="Feature and fix release. Requires a minimum of Java 1.4.">
      <action dev="sebb" type="add" issue="CODEC-88">
        Added new Base32 encoder.
      </action>
      <action dev="sebb" type="fix" issue="CODEC-89">
        new Base64().encode() appends a CRLF, and chunks results into 76 character lines.
      </action>
      <action dev="sebb" type="fix" issue="CODEC-92">
        Many test cases use getBytes() which uses the default platform encoding so tests may fail on some platforms.
      </action>
      <action dev="sebb, julius, ggregory" type="add" issue="CODEC-93" due-to="sebb">
        Add test(s) to check that encodeBase64() does not chunk output.
      </action>
      <action dev="sebb" type="fix" issue="CODEC-97" due-to="mjryall">
        Base64 default constructor behaviour changed to enable chunking in 1.4.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-99" due-to="julius">
        Base64.encodeBase64String() shouldn't chunk.
      </action>
      <action dev="julius" type="fix" issue="CODEC-101" due-to="balusc">
        Base64InputStream#read(byte[]) incorrectly returns 0 at end of any stream which is multiple of 3 bytes long.
      </action>
      <action dev="bayard" type="fix" issue="CODEC-103" due-to="gnuf">
        Typo in DecoderException message thrown from Hex.decodeHex.
      </action>
      <action dev="julius, ggregory" type="add" issue="CODEC-105" due-to="zak">
        ArrayIndexOutOfBoundsException when doing multiple reads() on encoding Base64InputStream.
      </action>
      <action dev="bayard" type="add" issue="CODEC-106" due-to="it2mmeyerfa">
        Add the "Kölner Phonetik" encoder (Cologne Phonetic) to codec.lang.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-111" due-to="ggregory">
        org.apache.commons.codec.net.URLCodec.ESCAPE_CHAR isn't final but should be.
      </action>
      <action dev="sebb" type="add" issue="CODEC-112" due-to="sebb">
        Base64.encodeBase64(byte[] binaryData, boolean isChunked, boolean urlSafe, int maxResultSize) throws IAE for valid maxResultSize if isChunked is false.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-113" due-to="ggregory">
        org.apache.commons.codec.language.RefinedSoundex.US_ENGLISH_MAPPING should be package protected MALICIOUS_CODE.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-114" due-to="ggregory">
        org.apache.commons.codec.language.Soundex.US_ENGLISH_MAPPING should be package protected MALICIOUS_CODE.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-115" due-to="sebb">
        DoubleMetaphone.maxCodeLen should probably be private.
      </action>
      <action dev="ggregory" type="remove" issue="CODEC-116" due-to="ggregory">
        Remove deprecated package private method Base64.discardWhitespace(byte[])
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-117" due-to="ggregory">
        Caverphone encodes names starting and ending with "mb" incorrectly.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-118" due-to="ggregory">
        Split Caverphone class into two classes for Caverphone 1.0 and 2.0.
      </action>
    </release>
    <release version="1.4" date="9 August 2009" description="Feature and fix release. Requires a minimum of Java 1.4.">
      <action dev="ggregory" type="fix" issue="CODEC-80" due-to="Julius Davies">
        Regression: Base64.encode(chunk=true) has bug when input length is multiple of 76.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-77" due-to="Julius Davies">
        Base64 bug with empty input (new byte[0]).
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-75" due-to="Julius Davies">
        Make Base64 URL-safe.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-74">
        Allow for uppercase letters output in Hex.encodeHex().
      </action>
      <action dev="bayard" type="fix" issue="CODEC-72" due-to="Sebb">
        Soundex and RefinedSoundex issues with character arrays.
      </action>
      <action dev="bayard" type="fix" issue="CODEC-71" due-to="Sebb">
        Base64.isArrayByteBase64() method is inefficient for large byte arrays.
      </action>
      <action dev="bayard" type="fix" issue="CODEC-70" due-to="Sebb">
        Thread safety and malicious code safety improvements.
      </action>
      <action dev="bayard" type="fix" issue="CODEC-68" due-to="Robert Rodewald">
        isBase64 throws ArrayIndexOutOfBoundsException on some non-BASE64 bytes.
      </action>
      <action dev="bayard" type="fix" issue="CODEC-65" due-to="Benjamin Bentmann">
        Fix case-insensitive string handling.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-61" due-to="Igor Slepchin">
        Base64.encodeBase64() throws NegativeArraySizeException on large files.
      </action>
      <action dev="bayard" type="add" issue="CODEC-60">
        Implement Caverphone.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-58" due-to="Julius Davies">
        Character set used by Base64 not documented.
      </action>
      <action dev="bayard" type="fix" issue="CODEC-56" due-to="Sebb">
        RefinedSoundex creates instance before al fields have been initialized.
      </action>
      <action dev="bayard" type="add" issue="CODEC-52" due-to="Niklas Gustavsson">
        Digest on InputStreams.
      </action>
      <action dev="bayard" type="fix" issue="CODEC-51">
        2 Test failures in SoundexTest.
      </action>
      <action dev="bayard" type="add" issue="CODEC-40" due-to="Chris Black">
        Patch to add crypto-compatible BigInteger encoding support to Base64.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-39" due-to="Jamie Flournoy" due-to-email="jamie@white-mountain.org">
        DigestUtils: Add methods for SHA-256, SHA-384, and SHA-512.
      </action>
      <action dev="tobrien" type="fix" issue="CODEC-10" due-to="Reggie Riser" due-to-email="rriser@informs.com">
        Using US_ENGLISH in Soundex caused an NullPointerException.
      </action>
      <action dev="tobrien" type="fix" issue="CODEC-6" due-to="David Tonhofer">
        Source tarball spews files all over the place.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-22" due-to="Piero Ottuzzi">
        Base64.isArrayByteBase64() throws an ArrayIndexOutOfBoundsException for negative octets
      </action>
      <action dev="jochen" type="add" issue="CODEC-69" due-to="Julius Davies">
        Streaming Base64 (Base64InputStream and Base64OutputStream added).
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-78" due-to="Julius Davies">
        Base64: Improve Code Coverage.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-59" due-to="Julius Davies">
        Add methods to Base64 which work with String instead of byte[].
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-81" due-to="Julius Davies">
        Base64's new constructor parameters ignored.
      </action>
      <action dev="niallp" type="fix" issue="CODEC-83">
        Improve Double Metaphone test coverage.
      </action>
      <action dev="niallp" type="fix" issue="CODEC-84">
        Double Metaphone bugs in alternative encoding.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-73" due-to="Benjamin Bentmann">
        Make string2byte conversions indepedent of platform default encoding.
      </action>
    </release>
    <release version="1.3" date="10 July 2004" description="Feature and fix release.">
      <action dev="ggregory, tobrien" type="add" issue="CODEC-21" due-to="Alex Karasulu">
        BinaryCodec: Encodes and decodes binary to and from Strings of 0s and 1s.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-41" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org">
        QuotedPrintableCodec: Codec for RFC 1521 MIME (Multipurpose Internet
        Mail Extensions) Part One. Rules #3, #4, and #5 of the quoted-printable spec
        are not implemented yet. See also issue CODEC-46.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-41" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org">
        BCodec: Identical to the Base64 encoding defined by RFC 1521 and allows a
        character set to be specified.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-41" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org">
        QCodec: Similar to the Quoted-Printable content-transfer-encoding defined
        in RFC 1521 and designed to allow text containing mostly ASCII characters to
        be decipherable on an ASCII terminal without decoding.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-45" due-to="Matthew Inger" due-to-email="mattinger@yahoo.com">
        Soundex: Implemented the DIFFERENCE algorithm.
      </action>
      <action dev="ggregory" type="add" issue="CODEC-45" due-to="Matthew Inger" due-to-email="mattinger@yahoo.com">
        RefinedSoundex: Implemented the DIFFERENCE algorithm.
      </action>
      <action dev="ggregory" type="update">
        This version is relesed under the
        &lt;a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0&lt;/a>
        , please see LICENSE.txt. Previous versions were released under the
        &lt;a href="http://www.apache.org/licenses/LICENSE-1.1">Apache License 1.1&lt;/a>
      </action>
      <action dev="ggregory" type="update">
        The Board recommendation to remove Javadoc author tags has been
        implemented. All author tags are now "Apache Software Foundation".
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-25" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org">
        The default URL encoding logic was broken.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-31" due-to="Gary D. Gregory">
        Base64 chunked encoding not compliant with RFC 2045 section 2.1 CRLF.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-5">
        Hex converts illegal characters to 255.
      </action>
      <action dev="tobrien" type="fix" issue="CODEC-17">
        Metaphone now correctly handles a silent B in a word that ends in MB.
        "COMB" is encoded as "KM", before this fix "COMB" was encoded as "KMB".
      </action>
      <action dev="ggregory" type="fix">
        Added missing tags in Javadoc comments.
      </action>
      <action dev="ggregory" type="fix">
        General Javadoc improvements.
      </action>
    </release>
    <release version="1.2" date="24 Nov 2003" description="Feature and fix release.">
      <action dev="tobrien" type="add" due-to="Oleg Kalnichevski" due-to-email="olegk@apache.org">
        URLCodec: Implements the www-form-urlencoded encoding scheme.
      </action>
      <action dev="tobrien" type="add" due-to="Dave Dribin, David Graham">
        DigestUtils: Calculates MD5 and SHA digests.
      </action>
      <action dev="tobrien" type="fix" issue="CODEC-26" due-to="Brian Ewins">
        Modified Base64 to remedy non-compliance with RFC
        2045. Non-Base64 characters were not being discarded during the
        decode. RFC 2045 explicitly states that all characters outside of the
        base64 alphabet are to be ignored.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-4">
        Hex.decode(Object) throws a ClassCastException when a String argument is passed in.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-3">
        Soundex: The HW rule is not applied; hyphens and apostrophes are not ignored.
      </action>
      <action dev="ggregory" type="fix" issue="CODEC-29">
        Soundex.setMaxLength causes bugs and is not needed.
        Calling Soundex.setMaxLength() with a value of 2 or less causes the wrong
        answer to be returned. Since the encoding returned by Soundex is always
        of length 4 by definition (we do not use the '-' in as a letter-nnn
        separator) the need for a maxLength attribute is not needed. Deprecate
        the field and accessor methods.
      </action>
      <action dev="Members" type="fix">
        Fix in Metaphone relating to the handling of the maximum code length.
      </action>
    </release>
    <release version="1.1" date="29 April 2003"
      description="The first official release. Numerous projects had been depending on version 1.0-dev while in the Sandbox.">
      <action dev="Members" type="add">
        A newer version of the Base64 class reflecting improvements from
        both the commons-httpclient and xml-rpc versions of code forked
        from catalina.
      </action>
      <action dev="Members" type="add">
        Base64 class from commons-httpclient in org.apache.commons.codec.base64
        has been retained for backwards compatibility but has been deprecated.
      </action>
      <action dev="Members" type="add">
        Soundex class from commons-util in org.apache.commons.codec.
      </action>
      <action dev="Members" type="add">
        Metaphone class from commons-util in org.apache.commons.codec.
      </action>
      <action dev="tobrien" type="add">
        RefinedSoundex class in org.apache.commons.codec.
      </action>
      <action dev="Members" type="add">
        Encoder/Decoder interfaces in org.apache.commons.
      </action>
      <action dev="Members" type="add">
        String and Binary specific Encoder/Decoder interfaces in org.apache.commons.
      </action>
      <action dev="Members" type="add">
        StringEncoderComparator replaces the SoundexComparator from the language package.
      </action>
      <action dev="Members" type="fix">
        Base64 now discards whitespace characters when decoding encoded content.
      </action>
    </release>
    <release version="1.0-dev" date="25 April 2003" description="Last release from the Sandbox.">
      <action dev="tobrien" type="add">
        Base64 class from commons-httpclient in org.apache.commons.codec.base64.
      </action>
      <action dev="tobrien" type="add">
        Soundex class from commons-util in org.apache.commons.codec.
      </action>
      <action dev="tobrien" type="add">
        Metaphone class from commons-util in org.apache.commons.codec.
      </action>
      <action dev="Members" type="add">
        SoundexComparator class from commons-util in org.apache.commons.codec.
      </action>
    </release>
  </body>
</document>
