Changelog for Groovy 6.0.0-RC-2
Bug
- [GROOVY-12000] - STC: instanceof or combined with not
- [GROOVY-12355] - STC infers BigDecimal for division of Number or wrapper Double/Float operands
- [GROOVY-12361] - CachedMethod DirectInvoker: trampoline for a hidden declaring class throws NoClassDefFoundError on first invoke
- [GROOVY-12363] - Anonymous inner class declared in a @CompileStatic method: super call fails with MissingMethodException (no MOP bridge generated)
- [GROOVY-12364] - Native image: dynamic call to a @CallerSensitive method (e.g. Logger.getLogger) is fatal under AOT link mode
- [GROOVY-12392] - NativeImageMetadataGenerator references deprecated-for-removal Java9
- [GROOVY-12393] - STC: logical-or guard on a closure or loop parameter infers the variable as void
Dependency upgrade
- [GROOVY-12356] - Bump jline to 4.4.2
- [GROOVY-12367] - Bump slf4j to 2.0.19
- [GROOVY-12377] - Bump ant version to 1.10.18
- [GROOVY-12396] - Bump jline to 4.4.3
Improvement
- [GROOVY-12353] - Improve remaining common syntax error messages (unclosed literals, unexpected characters, missing punctuation, reserved keywords)
- [GROOVY-12354] - Indy: investigate making the reflective cold tier opt-in (groovy.indy.cold.reflection) — it hides the real caller from loggers and StackWalker
- [GROOVY-12357] - YamlSlurper and TomlSlurper: offer the date handling JsonSlurper has (defaults unchanged)
- [GROOVY-12358] - YamlSlurper: document that YAML aliases and merge keys are not resolved
- [GROOVY-12359] - deleteDir: treat Windows directory junctions as leaves, as symbolic links already are
- [GROOVY-12360] - GroovyDocWriter: keep generated pages inside the destination directory
- [GROOVY-12362] - ReflectionUtils.getCallingClass and StackTraceUtils.sanitize should ignore GraalVM's com.oracle.svm frames
- [GROOVY-12365] - native: Ship Groovy's own reachability metadata in the groovy jar
- [GROOVY-12366] - native: add a native-image.properties file
- [GROOVY-12368] - groovy.ast=xml: give the AST dump the source file's permissions
- [GROOVY-12369] - Harden Grape uninstall
- [GROOVY-12370] - GroovyDocWriter: do not copy a symbolic link out of a resource directory
- [GROOVY-12372] - decodeBase64 rejects malformed padding
- [GROOVY-12373] - GroovyServlet: support opt-in verbose error responses
- [GROOVY-12374] - Launchers: match java classpath semantics — no implicit . when -cp is set *
- [GROOVY-12375] - ShortTypeHandling: castToClass should avoid class init
- [GROOVY-12376] - LookAndFeelHelper: detect non-metal classes rather than fail with an obscure error
- [GROOVY-12378] - @Log4j2: staticLocation option to emit compile-time caller locations via LogBuilder.withLocation
- [GROOVY-12379] - native probe: cover groovy-nio, groovy-xml and groovy-json
- [GROOVY-12380] - native: ship the async runtime's reachability metadata with groovy-concurrent-java for pure-Java users
- [GROOVY-12382] - VMPluginFactory: tolerate a runtime without Runtime.version()
- [GROOVY-12383] - VM plugin: fall back to Java 8 accessibility rules when the module system is absent
- [GROOVY-12384] - Direct invokers: check for Android before touching HiddenClassDefiner
- [GROOVY-12385] - ScopedLocal: ScopedValue detection must not assume Runtime.version()
- [GROOVY-12386] - groovy-json: keep System.Logger out of internal static initialisers
- [GROOVY-12387] - Indy: exception-handler combinator bypassed on ART
- [GROOVY-12388] - DgmConverter: avoid MethodType constants in the adapter initialisers
- [GROOVY-12389] - Java8 plugin: skip type-use annotations when the reflection API lacks AnnotatedType
- [GROOVY-12390] - GStringImpl: constant-value check pulls the compiler's ClassHelper into the runtime
- [GROOVY-12391] - grooid jar: java.beans.Transient is rewritten to a class openbeans never had
- [GROOVY-12394] - groovy-nio: ship WatchEvent$Modifier in the module's reachability metadata for Path introspection
- [GROOVY-12395] - IndyCatchCompat: obtain its handles without a by-name lookup so R8 needs no keep rule
Task
- [GROOVY-12371] - SQL: bound the statement cache and make it thread-safe
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)