You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Emmanuel Bourg <eb...@apache.org> on 2015/12/28 18:16:29 UTC

[ANNOUNCEMENT] Apache Commons JEXL 3.0 released

The Apache Commons Team is pleased to announce the release of JEXL 3.0.

The release is available for download at:
https://commons.apache.org/jexl/download_jexl.cgi

JEXL is a library intended to facilitate the implementation of dynamic
and scripting features in applications and frameworks written in Java.
JEXL implements an Expression Language based on some extensions to the
JSTL Expression Language supporting most of the constructs seen in
shell-script or ECMAScript.

JEXL 3.0 is a major release changing the public JEXL API.;Due to binary
and source incompatibilities and the scope of modifications, JEXL has
moved to the org.apache.commons.jexl3 package and the Maven artifactId
changed to commons-jexl3.

However, this is a drop-in replacement through JSR-223 and casual code
usage should find easy equivalence between jexl-2.x and 3.x (besides the
package name).

Also note that JEXL 3.0 now requires Java 6.


What's new in 3.0:
==================
* A redesigned API that properly segregates the "public" part and the
"internal" parts of JEXL.
* A real difference between Expression and Script (scripts accept
statements: for, while, etc).
* The ability to create JEXL functions in script, closure/variables
hoisting/currying included.
* A set of assignment operators (+=, *= , ...).
* A set of String matching operators (^= startsWith, $= endsWith) and
their negative counterparts (!^, !$)
* A range operator (x .. y) to ease writing loops (for(var x : 1 .. 10))
* A literal set syntax to ease creating sets: { 1, 2...}

New features in 3.0:
====================
* JEXL-178: 'Unsolvable property' message to provide details about
underlying exception
* JEXL-177: Unified expressions to be used in String literals in JEXL
scripts
* JEXL-176: Synonym operator name 'in' for operator =~ // Remove
'foreach...in' syntax
* JEXL-174: Overloadable property access operators
* JEXL-173: Duck-typed java closures
* JEXL-170: Implement assignment operators
* JEXL-164: public getters for high/low properties for IntegerRange and
LongRange
* JEXL-152: Extend Range literal to support Long values
* JEXL-149: Set Construction as per EL 3.0 spec
* JEXL-133: String matching Operator short-hand inspired by CSS3
* JEXL-128: ObjectContext<> should implement NamespaceResolver
* JEXL-127: Allow the creation of functions
* JEXL-123: Redesign API for stability
* JEXL-122: Move JEXL from org.apache.comms.jexl2 to
org.apache.commons.jexl3
* JEXL-136: Script calls within scripts may fail with number arguments
* JEXL-135: Using map as script parameter or local variable
* JEXL-134: Issue with evaluation of concat of variables : \r + \n gives 0
* JEXL-131: UnifiedJexl parsing may fail with NPE
* JEXL-130: Ternary Conditional fails for Object values
* JEXL-126: Decimal numbers literals should be 'double' by default
(instead of 'float')

Bugs Fixed in 3.0:
==================
* JEXL-184: dot-ed identifiers parsing failure
* JEXL-180: Documentation - suggests using float for financials
* JEXL-171: Map access operator does not work if key name clashes with
map property name
* JEXL-169: A string is wrongly identified as FloatingPointNumber
* JEXL-168: Dedicated operator for String concatenation
* JEXL-79:  Add support for growable arrays (ArrayLists)
* JEXL-167: Possible loss of value when converting BigDecimal to BigInteger
* JEXL-166: Incorrect operator symbol for bitwise complement in
jexlArithmetic
* JEXL-163: empty(new ("java.lang.Long", 4294967296)) returns true
* JEXL-162: empty() function throws an exception : unsupported type
* JEXL-160: typo in package.html
* JEXL-158: Handle locale decimal separators correctly
* JEXL-157: Replace File.pathSeparator with File.separator
* JEXL-146: Performance problem in Interpreter.unknownVariable mechanism
* JEXL-145: Sandbox calling wrong check (classname vs class)
* JEXL-144: Empty array property setting fails
* JEXL-142: Map expression issue with empty key
* JEXL-141: Suffix for Big Decimal and Big Integer Literal is
incorrectly mentioned in Java docs
* JEXL-137: Invalid script variable list for nested array/map access


Historical list of changes:
http://commons.apache.org/jexl/changes-report.html

For complete information on Apache Commons JEXL, including instructions
on how to submit bug reports, patches, or suggestions for improvement,
see the Apache Commons JEXL website:

http://commons.apache.org/jexl/

Emmanuel Bourg, on behalf of the Apache Commons Team