Changelog for Groovy 6.0.0-beta-3

Bug

  • [GROOVY-10355] - Compiler interpret variable name as class name when in parentheses.
  • [GROOVY-12142] - Metaspace memory leak with parallel deployments on Tomcat
  • [GROOVY-12166] - STC: `return field instanceof Subtype` narrows the field's type class-wide, causing `ClassCastException` -- Groovy 5 regression
  • [GROOVY-12232] - `GroovyCastException: Cannot cast object PojoWrapper` when an as coercion is passed directly as an argument to an anonymous inner class constructor
  • [GROOVY-12257] - Groovy 4 @Immutable bytecode fails on Groovy 5 because ObjectUtil was removed
  • [GROOVY-12280] - AwaitableAdapterRegistry.awaitableCache pins the Groovy class loader via ClassValue associations on platform-class keys
  • [GROOVY-12289] - Switch expressions with duplicate case labels compile under @TypeChecked but fail under @CompileStatic
  • [GROOVY-12290] - Private field access from another class compiles under @TypeChecked but fails under @CompileStatic
  • [GROOVY-12292] - Various combinations of type-checking and static-compilation do not correctly combine *

Dependency upgrade

Improvement

  • [GROOVY-12254] - Make defer fully contextual: parse as a keyword only inside async closures
  • [GROOVY-12255] - Compile switch expressions as first-class AST (no closure desugar) *
  • [GROOVY-12259] - Make category/bulk call-site invalidation O(live SwitchPoint domains) instead of O(loaded classes)
  • [GROOVY-12263] - Invoke cached Closure doCall targets via MethodHandle
  • [GROOVY-12264] - Optimize the unrelated-default-method scan during class generation
  • [GROOVY-12265] - GrapeMaven: fail resolution on checksum mismatch
  • [GROOVY-12266] - Grape: warn on plaintext HTTP resolver roots in @GrabResolver
  • [GROOVY-12267] - JMX operation filter cleanup
  • [GROOVY-12268] - resolveClass initializes classes named in the stream
  • [GROOVY-12269] - improve special character escaping in GroovyScriptEngineFactory #getOutputStatement
  • [GROOVY-12270] - remove legacy JMX connector authentication names
  • [GROOVY-12271] - align groovydoc Snippet file resolution behavior with javadoc
  • [GROOVY-12272] - JsonLexer re-validates the whole prefix per quote
  • [GROOVY-12273] - ConfigObject.writeTo breaks its round-trip contract
  • [GROOVY-12274] - HttpBuilder: drop default headers on a redirect to another origin
  • [GROOVY-12275] - further TagRenderer hardening
  • [GROOVY-12276] - further Closure hardening under readResolve
  • [GROOVY-12277] - improve groovydoc encoding edge cases
  • [GROOVY-12278] - improve attribute name rendering in templates
  • [GROOVY-12279] - SecureASTCustomizer: apply import rules to a method pointer's target type
  • [GROOVY-12283] - SecureASTCustomizer: apply import rules to construction-coercion casts and subscripts
  • [GROOVY-12284] - Specialize indy sameClasses guards for arity 1-4
  • [GROOVY-12285] - STC: index extension methods by name and skip cloning non-generic parameters
  • [GROOVY-12288] - Cache ClassWriter getCommonSuperClass lookups per class

* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)