Changelog for Groovy 5.0.8

Bug

  • [GROOVY-12134] - @Delegate regression: fails to skip a final method inherited from a precompiled superclass
  • [GROOVY-12144] - AstNodeToScriptAdapter decompiler drops or corrupts several constructs when rendering AST back to source
  • [GROOVY-12146] - Regression of GROOVY-11715 - Unordered Annotation members
  • [GROOVY-12149] - Nondeterministic reflection order flows into generated bytecode, breaking reproducible builds
  • [GROOVY-12154] - `@CompileStatic` lambda with a primitive-typed parameter targeting a generic functional interface fails at runtime with `LambdaConversionException`
  • [GROOVY-12172] - Groovy 5.0.7 fails to compile or startup with UnsupportedOperationException
  • [GROOVY-12184] - unsound cast for property access on union type (instanceof A || instanceof B) throws ClassCastException (fix for GROOVY_5_0_X)
  • [GROOVY-12188] - Incorrect "abstract method not implemented … same name but different return type" error for a valid covariant override
  • [GROOVY-12190] - @TypeChecked switch on enum: unqualified case constants pass type checking but throw MissingPropertyException at runtime
  • [GROOVY-12203] - False positive "name clash" for a valid override when a `? super` wildcard uses a type that declares the same type variable name

Dependency upgrade

Improvement

  • [GROOVY-12140] - box-identity divergence for primitive varargs with classic bytecode
  • [GROOVY-12156] - chooseBestMethod returns candidates in identity-hash order, making static-compilation output path-dependent
  • [GROOVY-12157] - Covariant bridge methods are emitted in hash order, not the order they are found
  • [GROOVY-12159] - Synthetic class-literal fields and accessors are emitted in hash order, not the order the literals were encountered
  • [GROOVY-12160] - @AnnotationCollector emits collected annotation members in hash order when the collector is precompiled
  • [GROOVY-12201] - Add JDK 27 constant for GROOVY 5