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
- [GROOVY-12260] - Bump antlr to 4.13.2.15
- [GROOVY-12261] - Bump io.github.ben-manes.versions.gradle.plugin to 0.61.0
- [GROOVY-12262] - Bump logback to 1.6.3 (test dependency)
- [GROOVY-12286] - Bump jackson to 2.22.2
- [GROOVY-12291] - Bump reactor to 3.8.7
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)