Changelog for Groovy 2.1.0
Bug
- [GROOVY-3153] - groovy, groovysh, groovyconsole, etc Cannot use spaces in supplied classpath -cp
- [GROOVY-3258] - groovy.xml.QName uses string interning of volatile data and the trim antipattern
- [GROOVY-3326] - Obscure method getTimeZone(java.util.Date) in org.codehaus.groovy.runtime.TimeCategory *
- [GROOVY-3419] - Groovy fails to launch scripts from Cygwin
- [GROOVY-4637] - XmlSlurper Unable to Access Attributes with Same Name but in Different Namespaces
- [GROOVY-4648] - Pasting into groovy console using shift+insert turns overwrite mode on.
- [GROOVY-4670] - groovy.ui.Console cannot be extended
- [GROOVY-4950] - ConfigSlurper broken on AppEngine
- [GROOVY-5009] - Problem dispatching array as argument to a closure
- [GROOVY-5074] - SwingBuilder never shuts down the default executor service
- [GROOVY-5191] - Running script with '--enoding' param and some script parameters
- [GROOVY-5366] - unable to add assertions via compile time transform
- [GROOVY-5394] - Grape's Grab ignores 'ext' when classifier is not set
- [GROOVY-5433] - Node is missing documentation
- [GROOVY-5439] - error: incompatible types on Java stubs returning generics
- [GROOVY-5468] - Documentation error for ExpandoMetaClass
- [GROOVY-5473] - groovysh 2.0.0-beta-3 ERROR java.lang.ClassCastException: required class java.lang.Class but encountered class org.fusesource.jansi.AnsiRenderer
- [GROOVY-5583] - Parsing problem of number literal 0x8000000000000000L
- [GROOVY-5590] - Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.io.IOException: Cannot run program "find": java.io.IOException: error=24, Too many open files
- [GROOVY-5591] - groovy-all-2.0.0-sources.jar is missing lots of source files
- [GROOVY-5598] - Cannot use @CompileStatic with Thread.start method
- [GROOVY-5607] - @Compile static Sql.newInstance
- [GROOVY-5608] - @CompileStatic casting problem
- [GROOVY-5630] - Java stub generator generates wrong cast for return value of generic method
- [GROOVY-5632] - Closure default params can cause BUG! exception in phase 'class generation'
- [GROOVY-5635] - SyntaxException.getEndColumn() returns "getStartColumn() + 1"
- [GROOVY-5636] - java.lang.ArrayIndexOutOfBoundsException: size==0
- [GROOVY-5660] - JsonOutput Date formatting is not threadsafe
- [GROOVY-5665] - Groovyc ant task fails with nested javac when using generics
- [GROOVY-5666] - Incorrectly finding "where" in query string
- [GROOVY-5668] - Input stream not closed
- [GROOVY-5669] - DOMCategory should provide name() convenience method for Node's not just Element's
- [GROOVY-5673] - groovy does not detect correct Java version on Mac
- [GROOVY-5675] - Stub compiler expands generic-inner-class variable declaration incorrectly
- [GROOVY-5687] - Constants defined in an interface not visible to implementing subclass in a static context
- [GROOVY-5691] - TimeoutException immediately thrown when using both TimedInterrupt and with {} closure on a Map
- [GROOVY-5695] - jarsigner fails because two duplicate objects exists in groovy-2.0.1.jar
- [GROOVY-5705] - STC: calling a closure stored in a property yields an NPE
- [GROOVY-5710] - Stub generator should not use raw types when casting default return values
- [GROOVY-5712] - @TypeChecked and "Charset ISO_8859_1_CHARSET = Charset.forName("ISO-8859-1")": Cannot assign value of type java.lang.Class to variable of type java.nio.charset.Charset
- [GROOVY-5723] - Problem with cached calls with GroovyServlet
- [GROOVY-5729] - Delegation to an interface with deprecated methods shows a compile error
- [GROOVY-5732] - Delegating to an abstract class hierarchy doesn't implement interfaces at a higher level
- [GROOVY-5733] - JsonBuilder toPrettyString gen "\"\"" for emtyString it should be ""
- [GROOVY-5737] - @Log won't compile with @CompileStatic if "log" is used in a Closure
- [GROOVY-5738] - The if(instanceof) block is not inferring type in a Closure
- [GROOVY-5739] - performance problem in DefaultGroovyMethods.removeAll()
- [GROOVY-5751] - Adding milliseconds with TimeCategory gives incorrect toString
- [GROOVY-5762] - Static compilation runtime error when using mapped constructor
- [GROOVY-5766] - Changes in groovy.json.JsonOutput require extensive permissions that aren't compatible with some web frameworks.
- [GROOVY-5775] - XmlTemplateEngine does not escape expression values (part 1)
- [GROOVY-5779] - Static type checking - Color.red recognized as int
- [GROOVY-5792] - XmlNodePrinter uses quote variables for more than just attributes
- [GROOVY-5803] - wasted work in "ClassNode.addMixin"
- [GROOVY-5811] - InvokerInvocationException not being unwrapped *
- [GROOVY-5812] - Java code behaves wrong on 2.0.5 but not on 1.8.8
- [GROOVY-5828] - No way to tell @Immutable that you're using an Immutable List structure already
- [GROOVY-5838] - groovydoc not working (ClassNotFoundException)
- [GROOVY-5844] - Copy/paste error in EmptyBorderFactory
- [GROOVY-5849] - wasted work in "ClassCompletionVerifier.checkMethodForWeakerAccessPrivileges"
- [GROOVY-5850] - wasted work in "StaticTypeCheckingVisitor.inferReturnTypeGenerics"
- [GROOVY-5851] - wasted work in "SimpleGroovyClassDocAssembler.extractName"
- [GROOVY-5853] - wasted work in "DefaultGrailsDomainClassInjector.implementsMethod"
- [GROOVY-5854] - wasted work in the "ClassNode" constructor
- [GROOVY-5858] - "string".count('') fails
- [GROOVY-5863] - ImportCustomizer for CompilerCustomizationBuilder is not added to configscript CompilerConfiguration
- [GROOVY-5865] - getAt(EmptyRange) not called when passing an EmptyRange to getAt(Collection)
- [GROOVY-5867] - xml:lang attribute appears to break StreamingMarkupBuilder >= 2.0.6
- [GROOVY-5868] - ConfigObject is unexpectedly no longer Cloneable
- [GROOVY-5870] - Groovy:[Static type checking] - Inconvertible types: cannot cast javax.script.ScriptEngine to javax.script.Invocable
- [GROOVY-5872] - null initial value can't be inferred with generic field of a class
- [GROOVY-5874] - Groovyc: BUG! exception in phase 'class generation' in source unit
- [GROOVY-5878] - startGroovy breaks one-liners containing double quotes
- [GROOVY-5879] - combining the default namespace and normal namespaces with StreamingMarkupBuilder causes issues
- [GROOVY-5880] - @CompileStatic does not infer the type of caught exception
- [GROOVY-5884] - @CompileStatic(SKIP) does not work for constructors
- [GROOVY-5887] - The spread-call syntax is statically compiled for collections, but not for arrays
- [GROOVY-5888] - Compiler wrongly tries only static resolution when calling spread operator on a collection of strings
- [GROOVY-5889] - Compiler hangs on this code
- [GROOVY-5890] - @CompileStatic resolves the 'in' operator wrongly
- [GROOVY-5892] - @CompileStatic VerifyError
- [GROOVY-5897] - Multiple problems with static method invocations and @CompileStatic
- [GROOVY-5901] - @AutoClone excludes param works correctly only for COPY_CONSTRUCTOR AutoCloneStyle
- [GROOVY-5906] - StackOverflow with CompileStatic
- [GROOVY-5907] - Object.with seems to lose typing when generics are used
- [GROOVY-5910] - Non found static type checking extensions throw unexplicit NPE
- [GROOVY-5915] - TokenException returns wrong endColumn value
- [GROOVY-5917] - -configscript option for groovy command.
- [GROOVY-5918] - JsonBuilder.toString() fails with StackOverflowError when using Expando
- [GROOVY-5919] - Multiple problems with @CompileStatic and abstract inheritance
- [GROOVY-5922] - CompileStatic: long loses type when bitwise OR applied to it
- [GROOVY-5925] - Casting map as Random results in java.lang.VerifyError
- [GROOVY-5926] - ArrayIndexOutOfBounds when calling super method in SKIP @CompileStatic section
- [GROOVY-5927] - JsonBuilder.toPrettyString() incorrect for zero-length String
- [GROOVY-5930] - -baseScript option for groovy command
- [GROOVY-5932] - covariant method addition causing call to abstract method
- [GROOVY-5933] - @TypeChecked$TypeCheckingInfo is added to constructors
- [GROOVY-5934] - java.lang.OutOfMemoryError through Iterator.collectEntries and others (part 1: handle collectEntries)
- [GROOVY-5941] - CompileStatic: VerifierError calling method within findAll closure
- [GROOVY-5943] - TypeChecker: Fails with NPE when use generics in inheritance tree?
- [GROOVY-5951] - Compile static: Groovyc reports error after instanceof check
- [GROOVY-6006] - CLONE - ConfigObject is unexpectedly no longer Cloneable
Improvement
- [GROOVY-4432] - Provide a way to see generated stub code
- [GROOVY-4572] - Provide File method to get directory size
- [GROOVY-4714] - @EqualsAndHashCode should allow caching of hashCode values
- [GROOVY-4879] - Add createTempDir() to File
- [GROOVY-5242] - groovy.lang.Closure javadoc should mention method resolution in resolve strategy constants
- [GROOVY-5370] - ConfigSlurper - multiple environment blocks broken
- [GROOVY-5391] - Add ClassNode lookup abstraction for compiler
- [GROOVY-5446] - Make @Delegate carry over method annotations
- [GROOVY-5452] - Process should have a method called closeStreams()
- [GROOVY-5472] - remove $getCallSiteArray for indy compilation
- [GROOVY-5509] - Add base script option to groovyc and its ant task
- [GROOVY-5553] - Provide a builder for compilation customizers
- [GROOVY-5554] - AST customizer working as a guard for another
- [GROOVY-5560] - Add DGM leftShift and other appropriate methods for java.lang.Appendable interface
- [GROOVY-5563] - Option to default to Static Compilation
- [GROOVY-5626] - Remove buildSrc's target and .gradle directories from the source distribution
- [GROOVY-5646] - Allow customization of @Singleton's instance getter name
- [GROOVY-5667] - upgrade to gradle 1.1
- [GROOVY-5680] - collectMany should have a map variant
- [GROOVY-5716] - @Immutable annotation should allow Cloneable fields
- [GROOVY-5745] - DGM should have a getAt method for Iterable
- [GROOVY-5761] - getBytes for GString
- [GROOVY-5767] - Support for DSL type checking
- [GROOVY-5794] - Upgrade junit to 4.11
- [GROOVY-5795] - Upgrade testng to 6.8
- [GROOVY-5796] - upgrade qdox to 1.12.1
- [GROOVY-5813] - array coercion missing for subarray assignment
- [GROOVY-5815] - The range interface should return the generic type T from getTo() and getFrom()
- [GROOVY-5816] - Add an "encoding" option for Groovydoc tool and Ant task
- [GROOVY-5840] - support jar: in addition to file: and http: for urls when running scripts on the command line
- [GROOVY-5845] - Add an includePackage attribute for the ToString AST transform
- [GROOVY-5862] - Pretty toString() for AnnotationConstantExpression
- [GROOVY-5905] - NP when AST implementation class lacks @GroovyASTTransformation
- [GROOVY-5911] - @CompileDynamic annotation
- [GROOVY-5916] - Provide a way to lookup class nodes from static type checking extension scripts
- [GROOVY-5928] - @ToString should allow caching of toString values
New Feature
- [GROOVY-3689] - Element.serialize
- [GROOVY-5503] - Compiler flag for type checking most classes, and TypeUnchecked annotation override
- [GROOVY-5549] - add DGM variant for Map#subMap supporting an array of keys
- [GROOVY-5682] - Add clone or copy constructor to XML Node
- [GROOVY-5714] - @DelegatesTo annotation for IDEs/TypeChecker
- [GROOVY-5877] - Provide a flag for the groovyc ant task to control whether it searches the classpath for source files
- [GROOVY-5886] - Support an Observable version of Set
Sub-task
- [GROOVY-3394] - public api documentation for entire groovy.util.slurpersupport package - especially GPathResult
Task
- [GROOVY-5718] - upgrade to gradle 1.2
- [GROOVY-5860] - Upgrade the GPars dependency to 1.0
Wish
- [GROOVY-5821] - Provide a way to assemble an annoation consisting of several other
- [GROOVY-5904] - Create/Distribute an archive containing source, binary and documentation
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)