Changelog for Groovy 3.0.0-alpha-1

Bug

  • [GROOVY-3525] - Null-safe dereference operator not available for subscript operator access to properties or array/list elements
  • [GROOVY-4438] - Use of an inner enum causes compilation to go into infinite loop
  • [GROOVY-7573] - Groovyc ant task does not release file handles
  • [GROOVY-7721] - Static type checking fails when compiling against a Java8 interface with inherited methods
  • [GROOVY-8277] - [Parrot]Fix gls.syntax.MethodCallValidationTest#testDeclarationInMethodCall
  • [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
  • [GROOVY-8319] - Improve smart type on list expresions
  • [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
  • [GROOVY-8377] - hashCode() generated by @EqualsAndHashCode is inefficient for instances with null fields or properties
  • [GROOVY-8470] - dead loop when compiling 'enum in enum without semicolon'

Dependency upgrade

Improvement

  • [GROOVY-3898] - [PARROT] Allow the specification of types when initializing multiple iteration variables in a "for" construct
  • [GROOVY-7772] - Class.&instanceMethod had better to have same meaning of Class::instanceMethod of Java8
  • [GROOVY-8312] - [PARROT] Deprecate useless features on unicode sequences

New Feature

  • [GROOVY-2840] - [PARROT] Support "not" for in and instanceof
  • [GROOVY-3791] - [PARROT] Support Java Array initializer syntax when not ambiguous
  • [GROOVY-5306] - [PARROT] Add "a ?= 2" support (Elvis assignment): should be expanded to "a = a == null ? 2 : a"
  • [GROOVY-5348] - [PARROT] Implement do/while loop
  • [GROOVY-6336] - [PARROT] Support Java 7 ARM blocks
  • [GROOVY-9128] - [PARROT] Provide proper support for the identical (===) and not identical (!==) operators
  • [GROOVY-9129] - [PARROT] Support safe index operations for lists/arrays including multi-dimensional array/nested list access

Task