<?xml version="1.0" encoding="UTF-8"?>

<!-- 
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 -->

<document>
  <properties>
    <title>Changes</title>
    <author email="dev@commons.apache.org">Commons Developers</author>
  </properties>
  <body>
    <release version="2.0" date="unreleased">
        <action dev="henrib" type="add" issue="JEXL-27" due-to="Weikuo Liaw">Bean-ish &amp; ant-ish like assignment</action>
        <action dev="henrib" type="add" issue="JEXL-19" due-to="Jesse Glick">Ternary operator support</action>
        <action dev="henrib" type="add" issue="JEXL-46" due-to="Alfred Reibenschuh">adding Perl-like regular-expression operators</action>
        <action dev="henrib" type="add" issue="JEXL-41" due-to="Alejandro Torras">Support for ${...} and #{...} expressions</action>
        <action dev="henrib" type="add" issue="JEXL-15" due-to="Paul Libbrecht">User definable functions</action>
        <action dev="sebb" type="add" issue="JEXL-63">JSR-223 support</action>
        <action dev="henrib" type="update" issue="JEXL-10" due-to="Paul Libbrecht">Make possible checking for unresolved variables</action>
        <action dev="henrib" type="update" issue="JEXL-11" due-to="Paul Libbrecht">Don&quot;t make null convertible into anything</action>
        <action dev="henrib" type="fix" issue="JEXL-47" due-to="sebb">Allow single-line comments with //</action>
        <action dev="henrib" type="fix" issue="JEXL-44" due-to="sebb">Comments don&quot;t allow double-quotes</action>
        <action dev="henrib" type="add" issue="JEXL-71" due-to="sebb">Array literal syntax is not supported</action>
        <action dev="dion" type="fix" issue="JEXL-17" due-to="Nestor Urquiza">allowing quote escaping</action>
        <action dev="dion" type="fix" issue="JEXL-25" due-to="Marek Lewczuk">Call method with varargs</action>
        <action dev="dion" type="fix" issue="JEXL-32" due-to="Kedar Dave">BigDecimal values are treated as Long values which results in loss of precision</action>
        <action dev="dion" type="fix" issue="JEXL-33">Remove unnecessary throws Exception from various classes</action>
        <action dev="henrib" type="fix" issue="JEXL-50" due-to="sebb">Div operator does not do integer division</action>
        <action dev="henrib" type="fix" issue="JEXL-87" due-to="sebb">Inconsistent behaviour of arithmetical operations</action>
        <action dev="henrib" type="fix" issue="JEXL-21" due-to="AC">operator overloading / hooks on operator processing</action>
        <action dev="henrib" type="add">&quot;new&quot; operator support</action>
        <action dev="henrib" type="add">Support Unicode escapes in string literals</action>
        <action dev="henrib" type="update">Various performance enhancements &amp; caches</action>
    </release>
    <release version="1.1.1-SNAPSHOT" date="unreleased">
      <action dev="dion" type="update" issue="JEXL-23">Fix jdk1.3 only code that has crept into Jexl tests</action>
      <action dev="dion" type="update" issue="JEXL-22" due-to="Randy H.">Allow unicode literals to be used</action>
    </release>
    <release version="1.1" date="2006-09-10">
      <action dev="rahul" type="fix" issue="JEXL-17" due-to="Kohsuke Kawaguchi">Consistently throw ParseException in case of a parsing failure, not an Error.</action>
      <action dev="dion" type="fix" issue="JEXL-3" due-to="Guido Anzuoni">Allow for static methods to be called on classes and not just objects.</action>
      <action dev="dion" type="add">Added Script and ScriptFactory to allow scripts to be executed from text, files or a URL.</action>
      <action dev="dion" type="add">Added implementation for bitwise operators: and, complement, or, xor.</action>
      <action dev="dion" type="add">Added implementation for the foreach statement.</action>
      <action dev="dion" type="add">Added implementation for the while statement.</action>
      <action dev="dion" type="add">Added implementation for block statements, e.g. curly braces containing multiple statements.</action>
      <action dev="dion" type="add">Added implementation for the if statement.</action>
      <action dev="dion" type="fix" issue="JEXL-6">Unary minus was only working for integer values.</action>
      <action dev="dion" type="update">Add @since tags to code so we can track API additions via javadoc</action>
      <action dev="dion" type="add" issue="JEXL-4" due-to="Barry Lagerweij">Support assignment to variables</action>
      <action dev="dion" type="fix" issue="JEXL-5">'abc'.substring(0,1+1) is empty (method matching problem)</action>
    </release>
    <release version="1.0" date="2004-09-07">
      <action dev="dion" type="fix">Support ant-style properties</action>
    </release>
    <release version="1.0-RC1" date="2004-08-26">
      <action dev="dion" type="fix" due-to="Geoff Waggott">Fix string concatenation broken for variables</action>
      <action dev="dion" type="fix" issue="JEXL-12">Implement short circuit logic for boolean and/or</action>
      <action dev="dion" type="add">Handle any size() method that returns an int</action>
      <action dev="dion" type="fix" issue="JEXL-9">Can't issue .size() on java.util.Set</action>
    </release>
  </body>
</document>
