<?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.
  -
  - CVS $Id: changes.xml 519717 2007-03-18 22:38:11Z vgritsenko $
  -->

<document>
  <properties>
    <author email="jon@latchkey.com">Jon S. Stevens</author>
    <author email="vgritsenko@apache.org">Vadim Gritsenko</author>
    <title>Jakarta Regexp History of Changes</title>
  </properties>

  <body>
    <section name="Jakarta Regexp History of Changes">
      <p>
        This document reflects the changes between releases for the Jakarta Regexp
        package.
      </p>

<h3>Version 1.5 (18 Mar 2007)</h3>
<ul>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=36405">36405</a>:
    Referencing an optional backreference returns null (VG)</li>
<li>Implemented optimization: RE compiler omits branch instruction if only one
    branch is present (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9153">9153</a>:
    {m,n} implementation had exponential complexity (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27763">27763</a>:
    RE incorrectly processed reluctant matchers (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38331">38331</a>:
    RE compiler creates incorrect program if pattern results in large program
    with offsets exceeding capacity of the short (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37275">37275</a>:
    RE incorrectly processes nested {n,m} closures (ex: (A{1}){0,2}) (VG)</li>
<li>Added accessor for REProgram.prefix (VG)</li>
</ul>

<h3>Version 1.4 (17 Aug 2005)</h3>
<ul>
<li>Fixed Bug:
    RE creates wrong character class when overlapping character ranges are
    used (ex: [a-h0f-z]) (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=30126">30126</a>:
    Support negated character classes (\W, \D, \S) in custom character class (VG)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27795">27795</a>:
    Add optimization for regexps which start with ^ (BOL) (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25985">25985</a>:
    In MATCH_MULTILINE mode $ does not match end of line (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=2121">2121</a>:
    '.' or '-' in bracket expression gives unexpected results (VG)</li>
<li>Regexp is relicensed to <a href="http://www.apache.org/licenses/LICENSE-2.0">
    Apache License, Version 2.0</a> (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=2525">2525</a>:
    Leading zero-length string splitted by RE (VG)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=4137">4137</a>:
    Regexp match gets different results on different platforms (VG)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3303">3303</a>:
    Unicode 3.0 character \\uFFFD (VG)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3773">3773</a>:
    Problem with parsing greedy match modifiers (VG)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3273">3273</a>:
    CharacterArrayCharacterIterator docs and implementation mismatch (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22928">22928</a>:
    subst() with REPLACE_BACKREFERENCES cuts first 2 characters (VG)</li>
</ul>

<h3>Version 1.3 (2 Sep 2003)</h3>
<ul>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22804">22804</a>:
    ArrayIndexOutOfBoundsException on negated classes (VG)</li>
<li>New Feature: subst() can now process backreferences when flag
    REPLACE_BACKREFERENCES is set. See API docs for details.
    Patch provided by Tobias Schaefer. (VG)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16592">16592</a>:
    Syntax error: Too many bracketed closures (limit is 10) (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5212">5212</a>, aka
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14954">14954</a>:
    A bug caused by '-' in character class definition ('[...]') (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=4057">4057</a>:
    \w does not match underscore (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=1030">1030</a>, aka
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10893">10893</a>:
    {n.m} notation work incorrect if n=0 (VG)</li>
<li>Re-visited Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3879">3879</a>:
    Expressions using {0,n} match 0 to n+1 times instead of 0 to n times.
    Now, expression "[a-z]{0,3}" matches "123abcdefg123" resulting in ""
    (empty string). (VG)</li>
<li>Fixed Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=306">306</a>:
    Why is the RE class not Serializable? (VG)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3879">3879</a>:
    Expressions using {0,n} match 0 to n+1 times instead of 0 to n times. (JSS)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7288">7288</a>:
    Bug in negative character ranges. (JSS)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=986">986</a>:
    Leading "\b" word boundary is ignored. (JSS)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3877">3877</a>:
    {n} and {n,m} not thread safe. (JSS)</li>
<li>Applied patches for Bug
    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8467">8467</a>:
    Number of paren pairs limited to 16 (JSS)</li>
<li>Fixed RE.grep() documentation to reflect a String[] is returned
    instead of an Object[].</li>
<li><a href="http://www.mail-archive.com/regexp-dev%40jakarta.apache.org/msg00002.html">
    New Feature</a>: Clustering (i.e. non backref'd grouping)</li>
<li>Rebuilt website with latest Jakarta-Site dependency</li>
</ul>

<h3>Version 1.2 (27 Nov 2000)</h3>
<ul>
<li>Updated to Ant 1.2 (JSS)</li>
<li>Documentation now built with <a
href="http://jakarta.apache.org/site/jakarta-site2.html">Anakia</a> (JSS)</li>
<li><a href="http://svn.apache.org/viewvc?view=rev&amp;revision=126080">Fixed bug</a></li>
<li><a href="http://svn.apache.org/viewvc?view=rev&amp;revision=126081">
    Fixed bug</a>: StringIndexOutOfBoundsException if paren is empty</li>
<li><a href="http://svn.apache.org/viewvc?view=rev&amp;revision=126082">
    Fixed bug</a>: Case independent flag does not work in prefix optimization code</li>
<li><a href="http://svn.apache.org/viewvc?view=rev&amp;revision=126083">
    New Feature</a>: Added flag MATCH_SINGLELINE - newlines are matched by '.'</li>
</ul>

<h3>Version 1.1 (14 May 2000)</h3>

<p>
Contributions by Ales Novak:
</p>

<ul>
<li>RECompiler.compile() - copy on return</li>
<li>RE.matchNodes() - BOL and EOL cases
if RE.MATCH_MULTILINE is specified.
- Think of RETest.java which prints
MATCH!!!: ......
two times while in the older version only one time.
</li>
<li>
RE.java also contains an extension which allow to parse
InputStreams, Readers and char arrays in addition to Strings.
All needed modifications are only in the RE class.
</li>
</ul>

<p>
Contributions by Jon S. Stevens:
</p>

<ul>
<li>Fix in the build system for building on NT</li>
<li>Documentation fixes / additions</li>
</ul>

<h3>Version 1.0</h3>
<ul>
<li>Repackaging from original contribution. No major code changes.</li>
</ul>

    </section>
  </body>
</document>
