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
- [GROOVY-6347] - Upgrade TestNG dependency to version 6.8.7
- [GROOVY-6366] - Update Jline to 2.11
- [GROOVY-6367] - Update JANSI to 1.11
- [GROOVY-6492] - Upgrade to Gradle 1.10
- [GROOVY-6667] - Dependency upgrades: ant to 1.9.3, xmlunit to 1.5, xstream to 1.4.7
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)