blob: f530ffef46579ac1b357c69207957c8bbf29cb41 [file] [log] [blame]
<?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="3.2" date="unreleased">
<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>
</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 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>