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

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)