Janino Changelog

What's new in Janino 2.7.8

Jan 31, 2015
  • JANINO-186 Code size error message should include method name

New in Janino 2.7.7 (Dec 8, 2014)

  • JANINO-182 Reference types "java.lang.Double" and "java.lang.Float" don't match
  • JANINO-184 "Operand stack incosistent..." exception while compiling legal (but dead) code

New in Janino 2.7.6 (Aug 18, 2014)

  • 'IClass.findIMethod(name, parameterTypes)' now ignores synthetic bridge methods by picking the method with the most significant return type.
  • JANINO-180 NullPointerException with JDK8
  • Reclassification of 'empty package types' was forgotten (JLS7: 6.5.2.BL1.B3.1 and .2). This caused 'EvaluatorTests.testWideInstructions()' to fail.
  • JANINO-178 ConcurrentModificationException while compiling anonymous class
  • JANINO-179 ClassCastException: ReflectionIClass
  • JANINO-174 MethodDescriptors should be cached in IMethod.getDescriptor
  • JANINO-172 qualified-name reclassifcations broken
  • JANINO-181 Add OSGi info in manifest.

New in Janino 2.7.5 (Jul 14, 2014)

  • JANINO-173 [janino-user] Dynamically loading from source + AST walk & transforms
  • JANINO-176 push latest version to maven central
  • JANINO-156 Tagged releases should contain parent pom and correct versions
  • Made JANINO available on MAVEN CENTRAL.

New in Janino 2.7.4 (Feb 4, 2014)

  • Simple implementation of type variables.
  • JANINO-170 NullPointerExceptions on Google AppEngine

New in Janino 2.7.3 (Jan 21, 2014)

  • Implemented 'enhanced FOR statement on Iterable' (with type inference).
  • Added parsing of type parameters.

New in Janino 2.7.2 (Jan 14, 2014)

  • JANINO-167 include Mod.is*() convenience methods
  • Allow an 'ArrayType' as a 'TypeArgument'.
  • Local variable declaration statement with parameterized type didn't work.
  • Added the 'enhanced FOR statement' (except for Iterable, which doesn't make much sense without generics).

New in Janino 2.7.1 (Nov 14, 2013)

  • "Missing @Override" is no longer an error, just a warning
  • 'ErrorHandler' and 'WarningHandler' moved from JANINO to COMMONS-COMPILER and can now be installed on ICookable - useful for testing.
  • JANINO-161 Operand stack underrun
  • Added 'SimpleConstant'.
  • JANINO-163 JANINO complains about "unreachable code"
  • JANINO-164 Add VARARGS support
  • Added tons of JAVADOC (thanks CheckStyle)
  • Last CheckStyle clean-up corrections -- all clean now!!
  • JANINO-165 Please expose Unparser's states to its subclasses

New in Janino 2.7.0 (Aug 12, 2013)

  • Added he 'assert' statement (simplified, ASSERTions are ALWAYS enabled, as if '-ea' were given)
  • Added annotations (but not yet annotation declarations)
  • Implemented '@Override'
  • Dropped support for Java 1.4 and 5

New in Janino 2.6.2 (Jun 24, 2013)

  • JANINO-148 Support Java 6 class file format
  • JANINO-147 JaninoRuntimeException: Cannot "set()" Offset more than once
  • JANINO-149 Janino incorrectly accepts String literals with invalid escape characters
  • JANINO-150 Special-value Float and Double literals don't unparse correctly
  • JANINO-152 Janino does not throw exception when compiling code with exceptions listed in wrong order
  • JANINO-155 Compound assignment does not implement boxing conversion
  • JANINO-157 Fail to "return x": Assignment conversion not possible from type "java.lang.Object" to type "java.lang.Long"
  • JANINO-153 Unable to cast from primitives to classes like Comparable
  • Various enhancements to JDISASM

New in Janino 2.6.1 (Jun 24, 2013)

  • Added version information to the META-INF/MANIFEST.MF file of the JANINO JARs.
  • Added CompilerFactoryFactory.getSpecificationVersion() and ICompilerFactory.getImplementationVersion().
  • Fixed up the handling of debug options - added "ICookable.setDebuggingInfo(source, lines, vars)".
  • Gave up on "EnumeratorSet" and "DebuggingInfo" - these mimic Java 5 ENUMs and were ugly.

New in Janino 2.6.0 (Jun 24, 2013)

  • Implements a number of incompatible changes:
  • CompileException was moved from package org.codehaus.janino to package org.codehaus.commons.compiler (and so were its buddies Location, LocatedException and CausedException).
  • ParseException and ScanException were removed; all methods that previously threw one or more of CompileException, ParseException and ScanException now throw only CompileException. (This is an API simplification honoring the fact that applications rarely want to differentiate between scan, parse and compilation problems).
  • The core functionality of JANINO (expression evaluator, script evaluator, class body evaluator, simple compiler and Java source class loader) was extracted to new interfaces declared in the new package org.codehaus.commons.compiler, while the original API remains unchanged.
  • A second implementation of the org.codehaus.commons.compiler interfaces was added, based on the javax.tools.JavaCompiler API that exists since JDK 1.6. This implementation is available in the commons-compiler-jdk.jar file.
  • Rather than instantiating e.g. org.codehaus.janino.ExpressionEvaluator directly, applications can now alternatively call org.codehaus.commons.compiler.CompilerFactoryFactory.getDefaultCompilerFactory().newExpressionEvaluator(), which will use the first implementation of IExpressionEvaluator on the class path (be it janino.jar or commons-compiler-jdk.jar, or yet another implementation).
  • The JUNIT regression test suite was restructured so that if differentiates between implementation-independent tests, which are automatically executed against every implementation on the class path, and implementation-specific tests.
  • Also, the following bugs were fixed:
  • JANINO-143 java.lang.ClassFormatError: Duplicate method name&signature in class file Transformer1$1$1
  • JANINO-146 Cannot compile on Java 1.6/6 if extended class does not implement an existing bridge method