Changelog for Groovy 4.0.0-rc-1

Bug

  • [GROOVY-7473] - ineffient code generation
  • [GROOVY-8693] - Calling indirect default interface methods fails both dynamic/static compiled
  • [GROOVY-10277] - STC fails to catch type error on the return type of lambdas
  • [GROOVY-10339] - STC instantiates parameterized function with a wrong type leading to unsoundness
  • [GROOVY-10347] - STC: lowed bound wildcard inference produces false positives
  • [GROOVY-10351] - Wrong type argument is inferred on combining use-site variance and diamond operator
  • [GROOVY-10375] - SC: cast exception for private property access from lambda
  • [GROOVY-10379] - Error for super class and super interface methods of same name
  • [GROOVY-10380] - SC: IncompatibleClassChangeError when calling interface default method from non-public interface
  • [GROOVY-10405] - @AutoClone breaks in Java17 for File properties
  • [GROOVY-10429] - StringBuilder misses setLength method in Java17

Dependency upgrade

Improvement

  • [GROOVY-7001] - generics info can be improved for DGM methods with a collector
  • [GROOVY-10341] - "super" invocations of abstract methods should be caught at compile time with static compilation enabled
  • [GROOVY-10352] - Java8 does not load enum values into annotation attributes
  • [GROOVY-10353] - StaticTypeCheckingSupport#evaluateExpression can provide lightweight evaluation for simple expressions
  • [GROOVY-10361] - TupleConstructor could be improved to have a smarter mode for handling default values
  • [GROOVY-10372] - STC: check lambda or closure parameter types against target method
  • [GROOVY-10377] - SC: === and !== compiled to ScriptBytecodeAdapter#compareIdentical
  • [GROOVY-10378] - Provide a mechanism to prioritise AST transforms running at the same stage