Changelog for Groovy 2.3.0-beta-1

Bug

  • [GROOVY-5249] - Avoid unnecessary locking in ClassInfo.getMetaClass
  • [GROOVY-5413] - groovyc should emit errors when @Override is not respected
  • [GROOVY-5842] - Runtimer error when types down match with Map and Map.Entry when using @CompileStatic
  • [GROOVY-5864] - @AutoExternalize doesn't create no-argument constructor
  • [GROOVY-5899] - withObject[Output|Input]Stream - auto detect 'it' type
  • [GROOVY-6314] - ResourceGroovyMethods uses BufferedWriter/BufferedOutputStream
  • [GROOVY-6329] - @Delegate should support including/excluding which methods are delegated to (and optionally complain if multiple exist) - advanced use cases
  • [GROOVY-6330] - Groovy not checking generics information correctly for covariant methods implementing interfaces
  • [GROOVY-6337] - weird verify error with TupleConstructor and Lazy
  • [GROOVY-6440] - Upgrade to Gradle 1.9
  • [GROOVY-6451] - Support repository roots in @GrabResolver should work correctly for relative hrefs
  • [GROOVY-6456] - AbstractHttpServlet.applyResourceNameMatcher race condition *
  • [GROOVY-6465] - List#sort(Comparable) conflict with jdk8 *
  • [GROOVY-6501] - Decouple AST transformation from its interface via ASTTransformationCustomizer
  • [GROOVY-6511] - Illegal use of non virtual function call when compiling with JDK 8
  • [GROOVY-6524] - Implicit closure coercion conflicts with DGM methods in type checked mode
  • [GROOVY-6548] - groovysh: Import command is vulnerable and ugly
  • [GROOVY-6550] - VerifyError when instantiating class that has Java 8 default method in its ancestry
  • [GROOVY-6559] - JsonOutput does not escape single char (char/Character)
  • [GROOVY-6560] - JsonOutput does not escape URL (windows path)
  • [GROOVY-6561] - Implementation for running a script from a URL in GroovyMain is flawed.
  • [GROOVY-6573] - TailRecursive creates compilation error
  • [GROOVY-6576] - list literal constructor misses direct constructor call
  • [GROOVY-6577] - misleading error message for boolean assignment
  • [GROOVY-6580] - InnerClassCompletionVisitor does not overwrite existing propertyMissing/methodMissing impls completely
  • [GROOVY-6582] - Script.invokeMethod bypasses getProperty when looking for closure-valued properties.
  • [GROOVY-6593] - Operators other than dot do not support carriage returns
  • [GROOVY-6596] - New template engine: MarkupTemplateEngine with optional type checking
  • [GROOVY-6597] - GroovyClassLoader.addClasspath should respect URI paths and not use URL.equals
  • [GROOVY-6605] - Object ranges should be inferred as Range<Object> for improved fluency
  • [GROOVY-6625] - Sql failed to process query unterminated ' character - legal statement containing quotes
  • [GROOVY-6627] - Problem With CompileStatic And Class.newInstance()
  • [GROOVY-6640] - Compilation warning when using @AutoClone on an object with collection properties
  • [GROOVY-6641] - Compiling a source with a URL pointing to the current working directory produces incorrectly named classes for top-level closures
  • [GROOVY-6646] - vararg method resolution with static compilation selects wrong candidate between (String...) and (Class<?> ...)
  • [GROOVY-6647] - static compilation fails at runtime for calling private constructor
  • [GROOVY-6654] - Can't @Override method with generic argument type in parameterized subclass
  • [GROOVY-6657] - Type checker doesn't find constructor if generic placeholder name doesn't match
  • [GROOVY-6662] - indy caching bug for static method invocations

Improvement

  • [GROOVY-3048] - Groovy Sql API should support stored procedures that have output parameters and return a result set
  • [GROOVY-3328] - Automatic imports for selected text execution
  • [GROOVY-4464] - Loosen white space restrictions
  • [GROOVY-4639] - Add isSet()/hasValue()/similar method to ConfigObject
  • [GROOVY-5159] - Grammar could accept nls! before SPREAD_DOT
  • [GROOVY-5924] - Provide a mechanism to allow the type checker to know what are the expected argument types of a closure
  • [GROOVY-6159] - JsonBuilder list handling improvement
  • [GROOVY-6303] - Add ability to use a different font for the input/output area of Groovy Console
  • [GROOVY-6383] - Allow more conditional blocks other than "environments" in ConfigSlurper
  • [GROOVY-6393] - groovysh: suggest reducing startup time by loading commands from code
  • [GROOVY-6395] - groovysh tab-complete properties of Map/Node instances
  • [GROOVY-6397] - groovysh: prefix commands with ":" to avoid namespace overlap *
  • [GROOVY-6399] - groovysh: Completion of standalone default methods and infix keywords
  • [GROOVY-6448] - Add @DelegatesTo to AstSpecificationCompiler for better IDE autocomplete
  • [GROOVY-6459] - Add comment/uncomment function to groovy-console
  • [GROOVY-6466] - indy DTT#castToType usage
  • [GROOVY-6467] - usage of DTT#castToBoolean in indy
  • [GROOVY-6479] - Closure to SAM interface coercion doesn't handle contravariant types correctly
  • [GROOVY-6499] - groovysh: do not offer GroovyObject Default methods on tab completion
  • [GROOVY-6546] - Improve parser speeds of Groovy JSON parser while maintaining backward compatability
  • [GROOVY-6554] - Improve serialization speeds of JsonOutput while maintaining backward compatibility
  • [GROOVY-6572] - Add faster invocation path for closures in static compilation mode
  • [GROOVY-6585] - Extend @BaseScript so that script bodies can be implemented in a method named something other than run.
  • [GROOVY-6588] - Enhance GroovyAssert for JUnit 4 Support
  • [GROOVY-6592] - Allow @BaseScript on import or package definition
  • [GROOVY-6615] - Support custom abstract method for configured Script base class like @BaseScript does
  • [GROOVY-6645] - AstSpecificationCompiler and his methods should be public
  • [GROOVY-6652] - Upgrade to ASM 5.0.1

New Feature

  • [GROOVY-1642] - Script needs to be able to retrieve the full path of "its" file
  • [GROOVY-6377] - New Groovy NIO module
  • [GROOVY-6570] - Add @TailRecursive AST transformation
  • [GROOVY-6649] - Support a Sortable annotation and transform
  • [GROOVY-6661] - Support the concept of "traits"

Sub-task

  • [GROOVY-5923] - CompileStatic: closure dispatch is sometimes not type checked

Task

* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)