<?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 xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
    <properties>
        <title>Apache Commons JEXL Release Notes</title>
        <author email="dev@commons.apache.org">Commons Developers</author>
    </properties>
    <body>
        <release version="3.3.1" date="20YY-MM-DD">
            <!-- ADD -->
            <action dev="henrib" type="add" issue="JEXL-421">
                ArrayBuilder: array type should reflect common class of its entries
            </action>
            <action dev="henrib" type="add" issue="JEXL-419">
                Add permission syntax to allow class/method/field
            </action>
            <action dev="henrib" type="add" issue="JEXL-418" due-to="Xu Pengcheng">
                Add try-catch support
            </action>
            <action dev="henrib" type="add" issue="JEXL-408" due-to="sebb">
                Using JexlFeatures is tedious
            </action>
            <action dev="henrib" type="add" issue="JEXL-404" due-to="Xu Pengcheng">
                Support array-access safe navigation (x?[y])
            </action>
            <action dev="henrib" type="add" issue="JEXL-401">
                Captured variables should be read-only
            </action>
            <action dev="henrib" type="add" issue="JEXL-398" due-to="Xu Pengcheng">
                Allow 'trailing commas' or ellipsis while defining array, map and set literals
            </action>
            <action type="add" dev="ggregory" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action>
            <!-- FIX -->
            <action dev="henrib" type="fix" issue="JEXL-420" due-to="Xu Pengcheng">
                Error while comparing float and string value
            </action>
            <action dev="henrib" type="fix" issue="JEXL-417" due-to="Robert Lucas" >
                JexlArithmetic looses precision during arithmetic operator execution
            </action>
            <action dev="henrib" type="fix" issue="JEXL-416" due-to="William Price" >
                Null-valued pragma throws NPE in 3.3
            </action>
            <action dev="henrib" type="fix" issue="JEXL-415" due-to="Xu Pengcheng" >
                Incorrect template eval result.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-414" due-to="Holger Sunke" >
                SoftCache may suffer from race conditions.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-412" due-to="Xu Pengcheng" >
                Ambiguous syntax between namespace function call and map object definition.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-410" due-to="sebb">
                JexlFeatures: ctor does not enable all features.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-409" due-to="sebb">
                Disable LEXICAL should disable LEXICAL_SHADE.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-405">
                Recursive functions corrupt evaluation frame if reassigned.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-403" due-to="Xu Pengcheng" >
                Exception while evaluating template literal used in array assignment in loop.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-402" due-to="Xu Pengcheng">
                Parse failed with empty return value.
            </action>
            <action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory">
                [StepSecurity] ci: Harden GitHub Actions #180.
            </action>
            <!-- UPDATE -->
            <action dev="henrib" type="update" due-to="dependabot">
                Bump github actions.
            </action>
            <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
                Bump commons-parent from 57 to 66.
            </action>
            <action dev="ggregory" type="update" due-to="dependabot">
                Bump org.ow2.asm:asm from 9.5 to 9.6 #200.
            </action>
            <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-logging from 1.2 to 1.3.0.</action>
        </release>
        <release version="3.3" date="2023-03-20">
            <!-- ADD -->
            <action dev="henrib" type="add" issue="JEXL-392">
                Enable namespace declaration based on scripts
            </action>
            <action dev="henrib" type="add" issue="JEXL-391">
                Improve in/=~ operator when arguments are arrays and collections
            </action>
            <action dev="henrib" type="add" issue="JEXL-390" due-to="Dmitri Blinov">
                Pragmas should not be statements
            </action>
            <action dev="henrib" type="add" issue="JEXL-389" due-to="Dmitri Blinov">
                Improve parsing timings
            </action>
            <action dev="Dmitri Blinov" type="add" issue="JEXL-385" due-to="Dmitri Blinov">
                Support disabling fortran-style relational operators syntax
            </action>
            <action dev="Dmitri Blinov" type="add" issue="JEXL-382" due-to="Dmitri Blinov">
                Simplify grammar and lexical state management
            </action>
            <action dev="henrib" type="add" issue="JEXL-380">
                Multiple values per pragma key
            </action>
            <action dev="henrib" type="add" issue="JEXL-379">
                Allow new to use class identifier
            </action>
            <action dev="henrib" type="add" issue="JEXL-373" due-to="Dmitri Blinov">
                Add support for prefix/postfix increment/decrement operators
            </action>
            <action dev="henrib" type="add" issue="JEXL-372" due-to="Dmitri Blinov">
                Add support for 'standard' for loop
            </action>
            <action dev="henrib" type="add" issue="JEXL-369" due-to="Dmitri Blinov">
            Add 'let' and 'const' variable declarations
            </action>
            <action dev="henrib" type="add" issue="JEXL-367" due-to="Hussachai Puripunpinyo">
                Named function and fat-arrow (=>) lambda syntax
            </action>
            <action dev="henrib" type="add" issue="JEXL-366" due-to="Hussachai Puripunpinyo">
            Fail to evaluate string and number comparison
            </action>
            <action dev="henrib" type="add" issue="JEXL-365" due-to="Dmitri Blinov">
                Lambda expressions
            </action>
            <action dev="henrib" type="add" issue="JEXL-363">
                Allow retrieving captured variables in script
            </action>
            <action dev="henrib" type="add" issue="JEXL-360"  due-to="Ian Hawkins">
                Add missing bitshift operators (&lt;&lt;, &gt;&gt;&gt;, &gt;&gt;)
            </action>
            <action dev="henrib" type="add" issue="JEXL-359">
                Allow per-operator arithmetic handling of null arguments
            </action>
            <action dev="henrib" type="add" issue="JEXL-357">
                Configure accessible packages/classes/methods/fields
            </action>
            <!--  FIX -->
            <action dev="henrib" type="fix" issue="JEXL-386" due-to="Song Fuchang">
                Non-inheritable permissions on interfaces are ignored in an inheritable sandbox
            </action>
            <action dev="henrib" type="add" issue="JEXL-384" due-to="Hussachai Puripunpinyo">
                Improve control over JexlArithmetic null argument handling
            </action>
            <action dev="henrib" type="fix" issue="JEXL-378" due-to="Hussachai Puripunpinyo">
                Incremental operator and decremental operator do not honor the side-effect flag
            </action>
            <action dev="henrib" type="fix" issue="JEXL-376">
                Introspector captures methods on non-exported classes (modules, java9+)
            </action>
            <action dev="henrib" type="fix" issue="JEXL-375" due-to="Jan Klicka">
                Cannot access enums by their name when using sandbox
            </action>
            <action dev="henrib" type="fix" issue="JEXL-374" due-to="Alex Hutton">
                No exception if dereferencing null object using safe(false) and antish(false)
            </action>
            <action dev="henrib" type="fix" issue="JEXL-371">
                Override of a protected method with public visibility is not callable
            </action>
            <action dev="henrib" type="fix" issue="JEXL-370" due-to="Alex Hutton">
                Cannot check if variable is defined using ObjectContext if the value is null
            </action>
            <action dev="henrib" type="add" issue="JEXL-368">
                Namespace functor resolution is not cached
            </action>
            <action dev="henrib" type="fix" issue="JEXL-364">
                Evaluator options not propagated in closures
            </action>
            <action dev="henrib" type="fix" issue="JEXL-362">
                JexlInfo position reporting is off
            </action>
            <action dev="henrib" type="fix" issue="JEXL-361">
                Null may be used as operand silently even in arithmetic strict(true) mode
            </action>
            <action dev="henrib" type="fix" issue="JEXL-358">
                JexlScript.curry(...) resulting scripts don't evaluate correctly
            </action>
            <action dev="henrib" type="fix" issue="JEXL-354"  due-to="William Price">
                #pragma does not handle negative integer or real literals
            </action>
            <action dev="henrib" type="fix" issue="JEXL-353" due-to="Mr.Z">
                Documentation error for not-in/not-match operator
            </action>
            <!-- UPDATE -->
            <action dev="ggregory" type="update" due-to="Gary Gregory">
                Bump actions/cache from 3 to 3.0.8.
            </action>
            <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
                Bump actions/checkout from 2 to 3.0.2 #79.
            </action>
            <action dev="ggregory" type="update" due-to="Gary Gregory">
                Bump actions/setup-java from 2 to 3.5.1.
            </action>
            <action dev="ggregory" type="update" due-to="Dependabot">
                Bump checkstyle from 9.2 to 9.2.1 #72.
            </action>
            <action dev="ggregory" type="update" due-to="Dependabot">
                Bump spotbugs-maven-plugin from 4.4.1 to 4.5.3.0 #73.
            </action>
            <action dev="ggregory" type="update" due-to="Dependabot">
                Bump maven-pmd-plugin from 3.15.0 to 3.16.0 #82.
            </action>
            <action dev="ggregory" type="update" due-to="Gary Gregory">
                Bump pmd from 6.48.0 to 6.52.0.
            </action>
            <action dev="ggregory" type="update" due-to="Dependabot">
                Bump commons-parent from 53 to 57 #121, #148, #155, #176.
            </action>
            <action dev="ggregory" type="update" due-to="Gary Gregory">
                Bump junit from 4.13.2 to 5.9.1 Vintage.
            </action>
        </release>
        <release version="3.2.1" date="2021-06-25">
            <action dev="henrib" type="fix" issue="JEXL-352" due-to="Øyvind Horneland">
                Possible memory leak regarding parser jjtree nodes in JEXL 3.2
            </action>
            <action dev="henrib" type="fix" issue="JEXL-351" due-to="Francesco Chicchiricco">
                JXLT Template fails when using sandboxing
            </action>
            <action dev="henrib" type="fix" issue="JEXL-350" due-to="David Costanzo">
                map[null] throws "unsolvable property" when a Sandbox is used
            </action>
        </release>
        <release version="3.2" date="2021-06-07">
            <action dev="henrib" type="fix" issue="JEXL-349" due-to="Cameron Samak">
                Script valid in 3.0 no longer valid
            </action>
            <action dev="henrib" type="fix" issue="JEXL-348" due-to="Cameron Samak">
                Parsing error when mixing namespaces with conditional expressions
            </action>
            <action dev="csamak" type="update" due-to="Cameron Samak">
                Update to ph-javacc-maven-plugin 4.1.4.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-347" due-to="Cameron Samak">
                Missing unsolvable property exception for reference when used with equals
            </action>
            <action dev="henrib" type="fix" issue="JEXL-346" due-to="David Costanzo">
                namespace function syntax leads to strange error for "common case" of ternary operator
            </action>
            <action dev="ggregory" type="update" due-to="Gary Gregory">
                Bump actions/setup-java from v1.4.3 to v2 #160.
            </action>
            <action dev="henrib" type="add" issue="JEXL-344"  due-to="David Costanzo">
                Don't fill stack trace for JexlExpression#Return (to improve performance)
            </action>
            <action dev="henrib" type="add" issue="JEXL-341"  due-to="Garret Wilson">
                Errors needs to provide more information on caught exceptions.
            </action>
            <action dev="henrib" type="add" issue="JEXL-340"  due-to="Garret Wilson">
                JexlException message access is incomplete and reversed
            </action>
            <action dev="Hussachai Puripunpinyo" type="fix" issue="JEXL-336">
                Escape some control characters
            </action>
            <action dev="henrib" type="update" issue="JEXL-335">
                Update JUnit to 4.13.1
            </action>
            <action dev="henrib" type="add" issue="JEXL-334">
                Remove offensive terminology from code and API
            </action>
            <action dev="henrib" type="add" issue="JEXL-333">
                Allow declaration of namespace within script
            </action>
            <action dev="henrib" type="fix" issue="JEXL-331" due-to="David Costanzo">
                Please document \uXXXX escape sequence
            </action>
            <action dev="henrib" type="fix" issue="JEXL-330" due-to="David Costanzo">
                JexlException.Parsing.getMessage() throws exception when parse error is in long expression
            </action>
            <action dev="henrib" type="fix" issue="JEXL-328">
                JXLT template scripts evaluation do not process pragmas
            </action>
            <action dev="henrib" type="fix" issue="JEXL-327" due-to="David Costanzo">
                map[null] does not work in assignment context
            </action>
            <action dev="henrib" type="fix" issue="JEXL-326" due-to="David Costanzo">
                Link to "JavaCC" on syntax reference page is broken
            </action>
            <action dev="Dmitri Blinov" type="fix" issue="JEXL-325" due-to="Dmitri Blinov">
                Potential race-condition in NumberParser.toString()
            </action>
            <action dev="henrib" type="fix" issue="JEXL-324" due-to="David Costanzo">
                JexlEngine.createExpression("new()").getParsedText() throws NPE
            </action>
            <action dev="henrib" type="fix" issue="JEXL-323" due-to="David Costanzo">
                Ant-style variables can throw exception when evaluated for their value
            </action>
            <action dev="henrib" type="fix" issue="JEXL-322" due-to="Constantin Hirsch">
                JXLT String literals cannot contain curly braces
            </action>
            <action dev="henrib" type="fix" issue="JEXL-321" due-to="Dmitri Blinov">
                Empty do-while loop is broken
            </action>
            <action dev="henrib" type="fix" issue="JEXL-320" due-to="David Costanzo">
                "mvn test" fails with COMPILATION ERROR in SynchronizedArithmetic.java on Java 11
            </action>
            <action dev="henrib" type="fix" issue="JEXL-319" due-to="David Costanzo">
                Apache project documentation gives instructions in subversion
            </action>
            <action dev="henrib" type="fix" issue="JEXL-318" due-to="Dmitri Blinov">
                Annotation processing may fail in lexical mode
            </action>
            <action dev="henrib" type="add" issue="JEXL-317">
                Support script cancellation through less invasive API
            </action>
            <action dev="henrib" type="fix" issue="JEXL-315" due-to="Mike Bartlett">
               JxltEngine literal string strings ending in \ $ or # throw JxltEngine$Exception
            </action>
            <action dev="henrib" type="fix" issue="JEXL-314" due-to="Osy">
               Comparison NULL values of variables NAME1.NAME2
            </action>
            <action dev="henrib" type="fix" issue="JEXL-312">
                @NoJexl fails to disallow method call
            </action>
            <action dev="henrib" type="fix" issue="JEXL-311">
                Jxlt template scripts fail using verbatim expressions embedded in lambdas
            </action>
            <action dev="henrib" type="fix" issue="JEXL-309">
                Line numbers are not correct when template report errors
            </action>
            <action dev="henrib" type="fix" issue="JEXL-307" due-to="Dmitri Blinov">
                Variable redeclaration option
            </action>
            <action dev="henrib" type="fix" issue="JEXL-306" due-to="Dmitri Blinov">
                Ternary operator ? protects also its branches from resolution errors
            </action>
            <action dev="henrib" type="fix" issue="JEXL-305" due-to="Dmitri Blinov">
                Script debugger produces incorrect syntax
            </action>
            <action dev="henrib" type="fix" issue="JEXL-304" due-to="Marcus Warm">
                Error parsing overview.limit.var
            </action>
            <action dev="henrib" type="fix" issue="JEXL-303" due-to="Dmitri Blinov">
                Block syntax is broken
            </action>
            <action dev="henrib" type="fix" issue="JEXL-302" due-to="Dmitri Blinov">
                JexlScript.getVariables returns strange values for array access
            </action>
            <action dev="henrib" type="fix" issue="JEXL-301" due-to="Dmitri Blinov">
                Array access operator does not fail on null object in non-strict arithmetic mode
            </action>
            <action dev="henrib" type="fix" issue="JEXL-299" due-to="Jarek Cecho">
                Improve message error when method could not be found
            </action>
            <action dev="henrib" type="fix" issue="JEXL-298" due-to="Dmitri Blinov">
                Unable to call 'empty' and 'size' member methods with parameters
            </action>
            <action dev="henrib" type="fix" issue="JEXL-296" due-to="Dmitri Blinov">
                Real literal in scientific format is not parsed without suffix
            </action>
            <action dev="henrib" type="add" issue="JEXL-295">
                Add unary plus operator
            </action>
            <action dev="henrib" type="add" issue="JEXL-292" due-to="Dmitri Blinov">
                Allow specifying custom Permissions class for Uberspect to be used later by Introspector
            </action>
            <action dev="henrib" type="fix" issue="JEXL-291" due-to="David Costanzo">
                Using sandbox prevents array-syntax lookup by number in Map
            </action>
            <action dev="henrib" type="fix" issue="JEXL-290">
                Safe navigation fails on chained method calls
            </action>
            <action dev="henrib" type="fix" issue="JEXL-289" due-to="Dmitri Blinov">
                Passing undeclared function parameter can overwrite a local function variable
            </action>
            <action dev="henrib" type="add" issue="JEXL-288" due-to="Dmitri Blinov">
                Annotation can not be specified for a standalone statement
            </action>
            <action dev="henrib" type="fix" issue="JEXL-287" due-to="Dmitri Blinov">
                Wrong resolution of local variables
            </action>
            <action dev="henrib" type="fix" issue="JEXL-286" due-to="Dmitri Blinov">
                For statement without a body should update its variable
            </action>
            <action dev="henrib" type="fix" issue="JEXL-285">
                For statement variable may seem unaffected by iteration
            </action>
            <action dev="henrib" type="fix" issue="JEXL-282" due-to="Dmitri Blinov">
                Pragmas with antish names are broken
            </action>
            <action dev="henrib" type="fix" issue="JEXL-281" due-to="Mirek Hankus">
                MethodExecutor incorrectly tests for empty parameters list
            </action>
            <action dev="henrib" type="fix" issue="JEXL-280" due-to="Dmitri Blinov">
                break/continue statements outside of the loop
            </action>
            <action dev="henrib" type="fix" issue="JEXL-279">
                Null variables property access do not throw exceptions
            </action>
            <action dev="henrib" type="fix" issue="JEXL-278">
                Ambiguous exceptions should point to actual statement ambiguity
            </action>
            <action dev="henrib" type="add" issue="JEXL-275">
                 Allow safe navigation as option
            </action>
            <action dev="henrib" type="add" issue="JEXL-274">
                Handle soft and hard stack overflow
            </action>
            <action dev="Dmitri Blinov" type="add" issue="JEXL-175" due-to="Dmitri Blinov">
                 Add do...while(...) loops
            </action>
            <action dev="henrib" type="fix" issue="JEXL-272">
                Dereferencing null property not reported on method call
            </action>
            <action dev="henrib" type="fix" issue="JEXL-271" due-to="Dmitri Blinov">
                Hoisted variable is lost when currying lambda
            </action>
            <action dev="henrib" type="fix" issue="JEXL-270" due-to="Dmitri Blinov">
            Wrong Script$Curried creation when script.curry() method is called inside script
            </action>
            <action dev="henrib" type="add" issue="JEXL-264">
                Allow space, quote and double-quote in identifiers
            </action>
            <action dev="henrib" type="add" issue="JEXL-261">
                JexlEngine.setClassLoader(...) should reload namespaces that are classes
            </action>
            <action dev="henrib" type="add" issue="JEXL-260" due-to="Dmitri Blinov">
                Automatically inject JexlContext in constructor call when possible
            </action>
            <action dev="henrib" type="fix" issue="JEXL-257" due-to="Dmitri Blinov">
                Function throwing IllegalArgumentException may be called twice
            </action>
            <action dev="henrib" type="add" issue="JEXL-253" due-to="Woonsan Ko">
                Permissions by super type in JexlSandbox
            </action>
            <action dev="henrib" type="add" issue="JEXL-252" due-to="Dmitri Blinov">
                Allow for interpolated strings to be used in property access operators
            </action>
            <action dev="henrib" type="add" issue="JEXL-250" due-to="Dmitri Blinov">
                Safe navigation operator
            </action>
            <action dev="henrib" type="add" issue="JEXL-249" due-to="Dmitri Blinov">
                Java 1.8 as minimum supported version
            </action>
            <action dev="henrib" type="add" issue="JEXL-248" due-to="Dmitri Blinov">
                Allow range subexpression as an array property assignment identifier
            </action>
            <action dev="henrib" type="fix" issue="JEXL-246" due-to="Dmitri Blinov">
                Intermittent ambiguous method invocation when processing assignOverload
            </action>
            <action dev="henrib" type="fix" issue="JEXL-245" due-to="Ate Douma">
                Engine in strict mode fails to fail on unsolvable variables or properties
            </action>
            <action dev="henrib" type="fix" issue="JEXL-244" due-to="Dmitri Blinov">
                Webapp classloader memory leaks
            </action>
            <action dev="henrib" type="add" issue="JEXL-243">
                Allow restricting available features in Script/Expressions
            </action>
            <action dev="henrib" type="fix" issue="JEXL-241" due-to="Yang Wang">
                NPE when script containing string interpolation executed in multiple threads
            </action>
            <action dev="henrib" type="add" issue="JEXL-240" due-to="Dmitri Blinov">
                 Unable to invoke a call operator using antish style variable resoltion
            </action>
            <action dev="henrib" type="add" issue="JEXL-238" due-to="Cameron Samak">
                Restrict getLiteralClass to a Number for NumberLiterals
            </action>
            <action dev="henrib" type="add" issue="JEXL-237" due-to="Dmitri Blinov">
                Ability to restrict usage of certain names when declaring local variables
            </action>
            <action dev="henrib" type="add" issue="JEXL-236" due-to="Dmitri Blinov">
                Support CharSequence in size(), empty() and contains() operators
            </action>
            <action dev="henrib" type="add" issue="JEXL-234" due-to="Dmitri Blinov">
                Extend application of operators startsWith and endsWith from String to CharSequence types
            </action>
            <action dev="henrib" type="fix" issue="JEXL-231" due-to="Dmitri Blinov">
                Syntax for accessing List elements is not mentioned in docs
            </action>
            <action dev="henrib" type="fix" issue="JEXL-230" due-to="Dmitri Blinov">
                List literal is not mentioned in docs
            </action>
            <action dev="henrib" type="fix" issue="JEXL-227" due-to="Dmitri Blinov">
                JexlScriptEngineFactory.getEngineVersion() should return actual version
            </action>
            <action dev="henrib" type="add" issue="JEXL-226" due-to="Min Wei">
                add ?? operator support
            </action>
            <action dev="henrib" type="fix" issue="JEXL-225" due-to="Vyacheslav Shago">
                Incorrect invoking methods with ObjectContext
            </action>
            <action dev="henrib" type="add" issue="JEXL-224" due-to="Dmitri Blinov">
                The ability to overload call() operator in customized JexlArithmetic implementation
            </action>
            <action dev="henrib" type="add" issue="JEXL-212" due-to="Dmitri Blinov">
                Restrict usage of assignment statements in JexlExpression
            </action>
            <action dev="Dmitri Blinov" type="add" issue="JEXL-175" due-to="Dmitri Blinov">
                 java.util.regex.Pattern creation operator (regex literals)
            </action>
        </release>
        <release version="3.1" date="2017-04-14">
            <action dev="henrib" type="add" issue="JEXL-222" due-to="Dmitri Blinov">
                The ability to declare indexed property getter/setter in customised JexlArithmetic implementation
            </action>
            <action dev="henrib" type="fix" issue="JEXL-221" due-to="Dmitri Blinov">
                Sporadic undefined property error caused by NPE at MapGetExecutor.tryInvoke()
            </action>
            <action dev="henrib" type="add" issue="JEXL-219">
                Blacklist by default in sandbox
            </action>
            <action dev="henrib" type="fix" issue="JEXL-217" due-to="Dmitri Blinov">
                Interpreter.getAttribute() raises exception in non-strict mode when cached property resolver is used
            </action>
            <action dev="henrib" type="add" issue="JEXL-216" due-to="Dmitri Blinov">
                Improve parsing concurrency in multithreaded environment
            </action>
            <action dev="henrib" type="add" issue="JEXL-215" due-to="Dmitri Blinov">
            JexlEngine.createInfo() is redundantly called when debug and caching is enabled leading to sub-optimal performance
            </action>
            <action dev="henrib" type="fix" issue="JEXL-214" due-to="Dmitri Blinov">
                Redundant call of fillInStackTrace() in JexlEngine.createInfo() ?
            </action>
            <action dev="henrib" type="fix" issue="JEXL-213" due-to="Dmitri Blinov">
                rename JexlBuilder.loader(Charset arg) to JexlBuilder.charset(Charset arg)
            </action>
            <action dev="henrib" type="add" issue="JEXL-211" due-to="Dmitri Blinov">
                Add callable method to JexlExpression interface
            </action>
            <action dev="henrib" type="fix" issue="JEXL-210" due-to="Dmitri Blinov">
                The way to cancel script execution with an error
            </action>
            <action dev="henrib" type="fix" issue="JEXL-209" due-to="Dmitri Blinov">
               Unsolvable function/method '&lt;?&gt;.&lt;null&gt;(...)'
            </action>
            <action dev="henrib" type="fix" issue="JEXL-208" due-to="Joe Tom">
                Documentation typos/inconsistencies
            </action>
            <action dev="henrib" type="fix" issue="JEXL-207" due-to="Dmitri Blinov">
               Inconsistent error handling
            </action>
            <action dev="henrib" type="fix" issue="JEXL-206" due-to="Dmitri Blinov">
                testCallableCancel() test hangs sporadically
            </action>
            <action dev="henrib" type="fix" issue="JEXL-205" due-to="Dmitri Blinov">
                testCancelForever() is not terminated properly
            </action>
            <action dev="henrib" type="fix" issue="JEXL-204" due-to="Dmitri Blinov">
                Script is not interrupted by a method call throwing Exception
            </action>
            <action dev="henrib" type="fix" issue="JEXL-203" due-to="Dmitri Blinov">
            JexlArithmetic.options() diverts Interpreter to use default implementation of JexlArithmetic instead of custom one
            </action>
            <action dev="henrib" type="fix" issue="JEXL-202" due-to="Dmitri Blinov">
                Detect invalid assignment operator usage with non-assignable l-value during script parsing
            </action>
            <action dev="henrib" type="add" issue="JEXL-201" due-to="Dmitri Blinov">
                Allow Interpreter to use live values from JexlEngine.Option interface implemented by JexlContext
            </action>
            <action dev="henrib" type="fix" issue="JEXL-198" due-to="Terefang Verigorn">
                JxltEngine Template does not expose pragmas
            </action>
            <action dev="henrib" type="add" issue="JEXL-197" due-to="Dmitri Blinov">
                Add annotations
            </action>
            <action dev="henrib" type="fix" issue="JEXL-196" due-to="Dmitri Blinov">
                Script execution hangs while calling method with one argument without parameter
            </action>
            <action dev="henrib" type="fix" issue="JEXL-195" due-to="Dmitri Blinov">
                Support for AtomicBoolean in logical expressions
            </action>
            <action dev="henrib" type="add" issue="JEXL-194" due-to="Dmitri Blinov">
                allow synchronization on iterableValue in foreach statement
            </action>
            <action dev="henrib" type="fix" issue="JEXL-193" due-to="Dmitri Blinov">
                InterruptedException is swallowed in function call in silent and non-strict mode
            </action>
            <action dev="henrib" type="fix" issue="JEXL-192" due-to="Constantin Mitocaru">
                Invalid return type when expected result is null
            </action>
            <action dev="henrib" type="fix" issue="JEXL-191" due-to="Constantin Mitocaru">
                Jexl3 unsolvable property exception when using enum
            </action>
            <action dev="henrib" type="fix" issue="JEXL-190" due-to="Dmitri Blinov">
                local function within context is not resolved if function resolver class without namespace is specified
            </action>
            <action dev="henrib" type="fix" issue="JEXL-189" due-to="Dmitri Blinov">
                Possible bug in Interpreter.isCancelled()
            </action>
            <action dev="henrib" type="fix" issue="JEXL-188" due-to="Dmitri Blinov">
                Possible bug in JexlArithmetic.isFloatingPointNumber()
            </action>
            <action dev="henrib" type="fix" issue="JEXL-187" due-to="Dmitri Blinov">
                Jexl Syntax doc does not mention 'continue' and 'break' operators
            </action>
            <action dev="henrib" type="fix" issue="JEXL-186" due-to="Philippe Mouawad">
                Performance regression in arithmetic operations compared to JEXL 2.1
            </action>
        </release>
        <release version="3.0" date="2015-12-27">
            <action dev="henrib" type="fix" issue="JEXL-184">
                dot-ed identifiers parsing failure
            </action>
            <action dev="henrib" type="fix" issue="JEXL-180" due-to="Kimball Robinson">
                Documentation - suggests using float for financials
            </action>
            <action dev="henrib" type="add">
                Added a 'curry' method to script returning script with bound arguments
            </action>
            <action dev="henrib" type="add" issue="JEXL-178 " due-to="Dmitri Blinov">
                'Unsolvable property' message to provide details about underlying exception
            </action>
            <action dev="henrib" type="add" issue="JEXL-177" due-to="Dmitri Blinov">
                Unified expressions to be used in String literals in JEXL scripts
            </action>
            <action dev="henrib" type="add" issue="JEXL-176" due-to="Dmitri Blinov">
                Synonym operator name 'in' for operator =~ // Remove 'foreach...in' syntax
            </action>
            <action dev="henrib" type="add" issue="JEXL-174" due-to="Dmitri Blinov">
                Overloadable property access operators
            </action>
            <action dev="henrib" type="add" issue="JEXL-173" due-to="Dmitri Blinov">
                Duck-typed java closures
            </action>
            <action dev="henrib" type="fix" issue="JEXL-171" due-to="Dmitri Blinov">
                Map access operator does not work if key name clashes with map property name
            </action>
            <action dev="henrib" type="add" issue="JEXL-170">
                Implement assignment operators
            </action>
            <action dev="henrib" type="fix" issue="JEXL-169" due-to="Robert Neßelrath">
                A string is wrongly identified as FloatingPointNumber
            </action>
            <action dev="henrib" type="fix" issue="JEXL-168" due-to="Dmitri Blinov">
                Dedicated operator for String concatenation
            </action>
            <action dev="henrib" type="fix" issue="JEXL-79" due-to="sebb">
                Add support for growable arrays (ArrayLists)
            </action>
            <action dev="henrib" type="fix" issue="JEXL-167" due-to="Dmitri Blinov">
                Possible loss of value when converting BigDecimal to BigInteger
            </action>
            <action dev="henrib" type="fix" issue="JEXL-166" due-to="Dmitri Blinov">
                Incorrect operator symbol for bitwise complement in jexlArithmetic
            </action>
            <action dev="henrib" type="add" issue="JEXL-164" due-to="Dmitri Blinov">
                public getters for high/low properties for IntegerRange and LongRange
            </action>
            <action dev="henrib" type="fix" issue="JEXL-163" due-to="Dmitri Blinov">
                empty(new ("java.lang.Long", 4294967296)) returns true
            </action>
            <action dev="henrib" type="fix" issue="JEXL-162" due-to="Dmitri Blinov">
                empty() function throws an exception : unsupported type
            </action>
            <action dev="henrib" type="fix" issue="JEXL-160" due-to="Dmitri Blinov">
                typo in package.html
            </action>
            <action dev="henrib" type="fix" issue="JEXL-158" due-to="Lars Cebulla">
                Handle locale decimal separators correctly
            </action>
            <action dev="henrib" type="fix" issue="JEXL-157" due-to="Lars Cebulla">
                Replace File.pathSeparator with File.separator
            </action>
            <action dev="henrib" type="add" >
                Added a method to get parameters from a template
            </action>
            <action dev="henrib" type="fix" >
                Identifiers beginning with 0s (like 00200) shoud not be considered integers
            </action>
            <action dev="henrib" type="add" issue="JEXL-152" due-to="Dmitri Blinov">
                Extend Range literal to support Long values
            </action>
            <action dev="henrib" type="add" issue="JEXL-149" due-to="Dmitri Blinov">
                Set Construction as per EL 3.0 spec
            </action>
            <action dev="henrib" type="add" >
                Added #pragma instruction, allowing scripts to communicate information to the underlying execution
                context.
            </action>
            <action dev="henrib" type="fix" >
                Hoisted variables in a lambda are seen as local variables; should be seen as global
            </action>
            <action dev="henrib" type="fix" >
                Local variables must preclude antish variables handling
            </action>
            <action dev="henrib" type="fix" >
                Depending on unkown conditions, overriden varargs method may return false to isVarArgs;
                fix by checking method in declaring class hierarchy.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-146" due-to="David Maplesden">
                Performance problem in Interpreter.unknownVariable mechanism
            </action>
            <action dev="henrib" type="fix">
                Functions assigned to local variables can not perform recursive calls
            </action>
            <action dev="henrib" type="fix">
                Improved error reporting on undefined or null variables
            </action>
            <action dev="henrib" type="fix">
                Improved operator overloading logic in JexlArithmeric (caching)
            </action>
            <action dev="henrib" type="fix" issue="JEXL-145" due-to="Ian Connor">
                Sandbox calling wrong check (classname vs class)
            </action>
            <action dev="henrib" type="fix" >
                JXLT fails to parse expressions that use map constants
            </action>
            <action dev="henrib" type="add" >
                Added break/continue in JEXL syntax
            </action>
            <action dev="henrib" type="add" >
                Added convenience methods to pass/use JexlInfo and arguments in templates
            </action>
            <action dev="henrib" type="add" >
                Added ability to overload some operators in JexlArithmetic (through introspection, based on method names)
            </action>
            <action dev="henrib" type="fix" >
                Fixed issue in edge case method resolution wrt overload and varargs
            </action>
            <action dev="henrib" type="add" >
                Switch logging to log4j 1.2
            </action>
            <action dev="henrib" type="fix" issue="JEXL-144" due-to="Woonsang Ko">
                Empty array property setting fails
            </action>
            <action dev="henrib" type="fix" issue="JEXL-142" due-to="Juozas Baliuks">
                Map expression issue with empty key
            </action>
            <action dev="henrib" type="fix" issue="JEXL-141" due-to="Harpreet Singh">
                Suffix for Big Decimal and Big Integer Literal is incorrectly mentioned in Java docs
            </action>
            <action dev="henrib" type="fix" issue="JEXL-137">
                Invalid script variable list for nested array/map access
            </action>
            <action dev="henrib" type="fix">
                Fixed Engine.getVariables that was erroneously considering method calls as variable usage
            </action>
            <action dev="henrib" type="fix">
                Fixed issue in ternary expression
                (grammar was not precise enough to differentiate namespace:function calls vs ternary right hand side)
            </action>
            <action dev="henrib" type="add">
                NaN is now a keyword equivalent to #NaN (deprecated): POTENTIAL SCRIPT BREAK!
            </action>
            <action dev="henrib" type="add">
                Syntactically enforce that expressions do not contain statements: POTENTIAL EXPRESSION BREAK!
                (ie an expression is not a script and can NOT use 'if','for'... and blocks)
            </action>
            <action dev="henrib" type="add">
                Added syntactic shortcut to create parametric scripts (script source creates an anonymous function)
            </action>
            <action dev="henrib" type="fix">
                Segregated JexlScript and JexlExpression further to avoid calling JexlExpression.evaluate on JexlScript
                (instead of JexlScript.execute) which had the unexpected property of only evaluating the first statement
            </action>
            <action dev="henrib" type="fix">
                Fix an edge case of ambiguous method matching (see http://apache-commons.680414.n4.nabble.com/jexl-mathod-within-namespace-not-found-if-parameter-is-int-tt4637888.html)
            </action>
            <action dev="henrib" type="fix">
                Fix issue wrt isEmpty and method varargs (assignable types vs equal types)
                (see http://apache-commons.680414.n4.nabble.com/jexl-empty-function-crashes-if-called-with-int-tt4637895.html)
            </action>
            <action dev="henrib" type="add" issue="JEXL-133" due-to="Alfred Reibenschuh">
                String matching Operator short-hand inspired by CSS3
            </action>
            <action dev="henrib" type="add" >
                Added the range operator (x .. y)
            </action>
            <action dev="henrib" type="add" issue="JEXL-128" due-to="Matteo Trotta">
                ObjectContext should implement NamespaceResolver
            </action>
            <action dev="henrib" type="add" issue="JEXL-127">
                Allow the creation of functions
            </action>
            <action dev="henrib" type="add" issue="JEXL-123">
                Redesign API for stability
            </action>
            <action dev="henrib" type="add" issue="JEXL-122">
                Move JEXL from org.apache.comms.jexl2 to org.apache.commons.jexl3
            </action>
            <action dev="henrib" type="fix" issue="JEXL-136">
                Script calls within scripts may fail with number arguments
            </action>
            <action dev="henrib" type="fix" issue="JEXL-135" due-to="Tomas Kukosa">
                using map as script parameter or local variable
            </action>
            <action dev="henrib" type="fix" issue="JEXL-134" due-to="Manoj Mokashi">
                Issue with evaluation of concat of variables : \r + \n gives 0
            </action>
            <action dev="henrib" type="fix" issue="JEXL-131" due-to="Clay Bruce">
                UnifiedJexl (2.1.x) parsing may fail with NPE
            </action>
            <action dev="henrib" type="fix" issue="JEXL-130" due-to="William Bakker">
                Ternary Conditional fails for Object values
            </action>
            <action dev="henrib" type="add" issue="JEXL-126" due-to="Grace">
                Decimal numbers literals fix be 'double' by default (instead of 'float')
            </action>
        </release>
        <release version="2.1.1" date="2011-12-24">
            <action dev="henrib" type="fix" issue="JEXL-124">
                Array parameters to methods don't work anymore (regression)
            </action>
        </release>
        <release version="2.1" date="2011-13-11">
            <action dev="henrib" type="add" issue="JEXL-121">
                Add simple template features
            </action>
            <action dev="henrib" type="fix" issue="JEXL-120" due-to="Lukas Krecan">
                Make ParseException work in sandboxed environment
            </action>
            <action dev="henrib" type="add" issue="JEXL-119">
                Allow indexed properties container resolution in expressions
            </action>
            <action dev="henrib" type="add" issue="JEXL-118" due-to="Max Tardiveau">
                Provide an IN operator: =~ / match operator extended to provide IN behavior (!~ as NOT IN)
            </action>
            <action dev="henrib" type="add" issue="JEXL-116" due-to="Sarel Botha">
                Add control over classes, methods, constructors and properties allowed in scripts
            </action>
            <action dev="henrib" type="add" issue="JEXL-115" due-to="Sarel Botha">
                Add support for asynchronous script execution and cancellation
            </action>
            <action dev="henrib" type="add" issue="JEXL-114">
                Allow scripts to create local variables // Add return keyword
            </action>
            <action dev="henrib" type="add" issue="JEXL-113" due-to="Max Tardiveau">
                Add functions to extract which variables, parameters and local variables are used to evaluate a script
            </action>
            <action dev="henrib" type="fix" issue="JEXL-112" due-to="sebb">
                Cannot parse Integer.MIN_VALUE.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-24" due-to="freish">
                Support Long for integer literal instead of Integers.
            </action>
            <action dev="henrib" type="add">
                Added ObjectContext that wraps an object as JexlContext and added JexlContext as source to solve
                top-level namespace functions.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-111" due-to="freish">
                expression execute error depending on numeric type
            </action>
            <action dev="henrib" type="add" issue="JEXL-83" due-to="sebb">
                Make JexlArithmetic immutable (and threadsafe); also added a mutable JexlThreadedArithmetic.
            </action>
            <action dev="henrib" type="fix" issue="JEXL-108" due-to="Cristian Lorenzetto">
                Parsing error if i define a empty literal array/map
            </action>
            <action dev="henrib" type="fix" issue="JEXL-107">
                Literals and parenthesized expressions can not be used as references
            </action>
            <action dev="henrib" type="fix" issue="JEXL-106" due-to="Michal Sabol">
                When divide two BigDecimal values in an expression it results in java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
            </action>
            <action dev="henrib" type="add" issue="JEXL-105" due-to="Cary Thompson">Array literals are considered constant even when they are not.</action>
            <action dev="henrib" type="fix" issue="JEXL-104" due-to="Andreas Haufler">NPE in JexlArithmetic when an Array-Expression containing a null is used.</action>
            <action dev="henrib" type="add" issue="JEXL-102" due-to="sebb">Add "jexl2" as a supported name</action>
            <action dev="henrib" type="add" issue="JEXL-101" due-to="Tobias Shulte">
                Vararg methods where the first argument is no vararg can not be called with only the fixed parameters given
            </action>
        </release>
        <release version="2.0.1" date="2010-03-28">
            <action dev="henrib" type="add" issue="JEXL-100">Array access expressions fail when evaluated twice and cache is enabled</action>
            <action dev="henrib" type="add" issue="JEXL-99" due-to="Marcel Schoen">Documentation of Thread Safety / Invalid code examples on homepage</action>
            <action dev="henrib" type="add" issue="JEXL-98" due-to="Marcel Schoen">Quote escaping cannot be escaped</action>
        </release>
        <release version="2.0" date="2010-02-02">
            <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 behavior 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>
