The Jexl 2.0 branch now has only a few incompatibilities reported by
Clirr (see below).

Also the 2.0.1 JUnit tests now run (with minor essential changes)
against both 2.0.1 and 2.1-SNAPSHOT.

The remaining errors all relate to adding methods to interfaces.
According to the JLS [1], adding methods to an interface does not
break *binary* compatibility; however of course it will break source
compatibility.
I assume that Clirr has got this wrong; or is failing to distinguish
source compatibility from binary compatibility.
There is a test case to show this -
ScriptTest.testScriptInterfaceBinaryCompat() - in the
COMMONS_JEXL_2_0_1_TEST branch.

I think it would be OK to release the code without changing package
names / Maven id if other Commons developers agree.
What do others think?

Assuming that there are no objections, there is the question of what
version to use.

The changes clearly require at least a minor version bump, i.e. 2.1
rather than 2.0.2.
It is unlikely that any users will have implemented the Script
interface directly; any that have done so will need to update their
source before recompiling.
Does such a source incompatibility require a major version bump to 3.0?
[Note: this does *not* mean a package change is required; however a
package change would require a major version bump]

I think this discussion is best held separately from any release vote,
as there are always plenty of other items to check in a release
vote...

=====

ERROR: 7012: org.apache.commons.jexl2.introspection.Uberspect: Method
'public org.apache.commons.jexl2.introspection.JexlMethod
getConstructorMethod(java.lang.Object, java.lang.Object[],
org.apache.commons.jexl2.JexlInfo)' has been added to an interface
ERROR: 7012: org.apache.commons.jexl2.JexlInfo: Method 'public
org.apache.commons.jexl2.DebugInfo debugInfo()' has been added to an
interface
ERROR: 7012: org.apache.commons.jexl2.Script: Method 'public
java.lang.Object execute(org.apache.commons.jexl2.JexlContext,
java.lang.Object[])' has been added to an interface
ERROR: 7012: org.apache.commons.jexl2.Script: Method 'public
java.lang.String[] getLocalVariables()' has been added to an interface
ERROR: 7012: org.apache.commons.jexl2.Script: Method 'public
java.lang.String[] getParameters()' has been added to an interface
ERROR: 7012: org.apache.commons.jexl2.Script: Method 'public
java.util.concurrent.Callable
callable(org.apache.commons.jexl2.JexlContext)' has been added to an
interface
ERROR: 7012: org.apache.commons.jexl2.Script: Method 'public
java.util.concurrent.Callable
callable(org.apache.commons.jexl2.JexlContext, java.lang.Object[])'
has been added to an interface
ERROR: 7012: org.apache.commons.jexl2.Script: Method 'public
java.util.Set getVariables()' has been added to an interface

[1] 
http://java.sun.com/docs/books/jls/second_edition/html/binaryComp.doc.html#45347

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to