Changelog for Groovy 6.0.0-alpha-1
Bug
- [GROOVY-3782] - groovydoc doesn't understand @inheritDoc
- [GROOVY-5986] - GroovyDoc does not include doc-files
- [GROOVY-6491] - Conflicting module versions in OSGi context
- [GROOVY-6526] - AnnotationNode.isTargetAllowed returns true for any value
- [GROOVY-6581] - Custom propertyMissing/methodMissing for static inner classes
- [GROOVY-6844] - "Break label" instruction broken when combining nested loops with "old-school" labeled code blocks
- [GROOVY-7617] - Label is leaking scope when applied to a statement other than a block statement
- [GROOVY-7685] - Category overrides closure delegate
- [GROOVY-7768] - groovy.sql.Sql callWithAllRows returns blank result when passing params
- [GROOVY-7785] - Stack overflow when using too many chained method calls
- [GROOVY-7971] - @CS flow typing incorrectly casting to map at runtime
- [GROOVY-8025] - Using closures with annotations on Spock classes results in Groovydoc exception
- [GROOVY-8877] - No way to add a top-level Groovydoc comment a Groovy script
- [GROOVY-8976] - Groovydoc interprets /** in string as groovydoc comment
- [GROOVY-9057] - Groovydoc should set exit code on errors
- [GROOVY-9295] - Sql.checkForNamedParams false positives
- [GROOVY-9698] - StreamingSAXBuilder repeats xmlns declarations on inner elements
- [GROOVY-9701] - ExtractIndexAndSql does not recognize double-quoted SQL identifiers
- [GROOVY-9805] - Multiple assignment statements seperated by semicolons on a single line within a try catch block can lead to java.lang.VerifyError
- [GROOVY-9992] - Redos in groovy.sql.Sql
- [GROOVY-10162] - GroovyDoc generates CLASS_NAME.1.html if an enum class has an abstract method
- [GROOVY-10198] - Extending a class via its superclass' metaclass changes method visibility rules
- [GROOVY-10547] - Sql.java namedParamSqlCache map is getting populated despite the cacheNamedQueries flag
- [GROOVY-10702] - STC: no error for multiple instanceof and sparse method call
- [GROOVY-11022] - StackOverflowError when having parameterized function with recursive bounds
- [GROOVY-11202] - Support use of patterns with instanceof in groovydoc
- [GROOVY-11208] - No parse error for interface method with default value
- [GROOVY-11762] - callable property field shadowing
- [GROOVY-11775] - Stateful runtime mixins sometimes do not work properly
- [GROOVY-11779] - Object#dump should consider properties when fields are not accessible
- [GROOVY-11820] - Overwriting a getter method in a supertype via category results in inconsistent property / getter behavior
- [GROOVY-11829] - Properties located from a set(key, value) always use the same method even when the value type is better matched by another *
- [GROOVY-11831] - Compiler crash with TYPE_USE annotation on void method during AST transformation
- [GROOVY-11843] - SC: map-style constructor call optimization
- [GROOVY-11846] - AIC within closure has incorrect enclosing method and outer class
- [GROOVY-11849] - groovydoc: Use of patterns with instanceof is not supported
- [GROOVY-11853] - breaking changes for inner class methodMissing and propertyMissing protocol *
- [GROOVY-11858] - Splitting string inside tap closure throws NullPointerException
- [GROOVY-11859] - JarJarTask: Windows build issue where glob patterns containing * are treated as literal file paths
- [GROOVY-11888] - STC: method resolution fails for UnionTypeClassNode due to premature covariant elimination
- [GROOVY-11889] - STC: instanceof check rejects UnionTypeClassNode members as incompatible types
- [GROOVY-11899] - Static methods in Traits do not compile in Java/Groovy joint compiliation
- [GROOVY-11929] - Generic type information erased for super call
- [GROOVY-11954] - groovydoc: short-name type resolution cache makes doc output order-dependent and non-reproducible
- [GROOVY-11955] - Provide a size guard for flattening of chained method calls
- [GROOVY-11959] - multi-assignment failure for singleton primitives
- [GROOVY-11965] - groovydoc incorrectly includes members declared inside anonymous Java class bodies in the generated documentation of the enclosing class
- [GROOVY-11966] - AnnotationNode.isTargetAllowed introduces concurrent write to shared ListHashMap
- [GROOVY-11967] - VerifyError in @CompileStatic constructor with default-valued list parameter
- [GROOVY-11968] - SC: trait static field access generates invalid bytecode under indy=false (GROOVY-11907 follow-up)
- [GROOVY-11971] - StackOverflowError processing generics for kubernetes-client library (improved fix)
- [GROOVY-11980] - @AutoClone clone() override adds CloneNotSupportedException not declared by superclass
- [GROOVY-11982] - Default methods in interface throw IncompatibleClassChangeError under indy=false
- [GROOVY-11983] - STC: unsound smart-cast in else branch of if (cond && !(x instanceof Y))
- [GROOVY-11986] - genericGetMethod registration too permissive: matches any get(X) where X is a supertype of String
Dependency upgrade
- [GROOVY-11732] - Bump gradle to 9.1.0 (build dependency)
- [GROOVY-11759] - Bump jackson to 2.20.0
- [GROOVY-11763] - Bump asciidoctor gradle plugins to 4.0.5 (build dependency)
- [GROOVY-11765] - Bump spotbugs to 4.9.6
- [GROOVY-11766] - Bump checkstyle to 11.0.1 (build dependency)
- [GROOVY-11767] - Bump log4j2 to 2.25.2
- [GROOVY-11783] - Bump jna to 5.18.1
- [GROOVY-11784] - Bump asciidoctorj-pdf to 2.3.20
- [GROOVY-11788] - Bump JUnit to 6.0.3
- [GROOVY-11833] - Bump javaparser to 3.28.0
- [GROOVY-11834] - Bump asciidoctorj-pdf to 2.3.23
- [GROOVY-11835] - Bump cyclonedx-gradle-plugin to 3.0.2
- [GROOVY-11836] - Bump gradle to 9.2.1
- [GROOVY-11847] - Bump jackson to 2.21.0
- [GROOVY-11848] - Bump gradle to 9.3.1
- [GROOVY-11852] - Bump testng to 7.12.0
- [GROOVY-11867] - Bump checkstyle to 12.3.1 (build dependency)
- [GROOVY-11868] - Bump gradle to 9.4.0 (build)
- [GROOVY-11881] - Bump jline to 4.0.7
- [GROOVY-11883] - Bump jackson to 2.21.2
- [GROOVY-11897] - Bump ant version to 1.10.16
- [GROOVY-11917] - Bump ant version to 1.10.17
- [GROOVY-11918] - Bump to latest asciidoctorj versions
- [GROOVY-11948] - Bump jline to 4.0.12
- [GROOVY-11949] - Bump log4j2 to 2.24.4 (test dependency)
- [GROOVY-11960] - Bump org.jboss.bridger:bridger: 1.6.Final → 1.8
- [GROOVY-11961] - Bump org.apache.maven:maven-core: 3.9.14 → 3.9.15
- [GROOVY-11962] - Bump commons-io:commons-io: 2.21.0 → 2.22.0
- [GROOVY-11963] - Bump com.github.ben-manes.versions:com.github.ben-manes.versions.gradle.plugin: 0.53.0 → 0.54.0
- [GROOVY-11969] - Bump junit5 jupiter/platform to 5.14.4/1.14.4
Documentation
- [GROOVY-7525] - package.html not present for all packages
Improvement
- [GROOVY-4634] - Proper support for @Documented on annotations
- [GROOVY-5359] - static propertyMissing catches inherited static methods
- [GROOVY-5436] - add Sql.inList for collection expansion in SQL IN clauses
- [GROOVY-6016] - GroovyDoc support of @value tag
- [GROOVY-6908] - Groovy Ant task should inherit Ant properties when in "forked" mode
- [GROOVY-7463] - break out of labelled statement
- [GROOVY-7571] - XmlUtil should allow user to specify a character encoding when serializing
- [GROOVY-7633] - Add constructor with Map for SAXOptions to XmlSlurper
- [GROOVY-9572] - groovydoc: some __$stMC field is inherited from base class
- [GROOVY-11682] - Support modular external links
- [GROOVY-11790] - java-aware compilation unit: pass along target bytecode configuration
- [GROOVY-11823] - Check whether inserted metaprogramming methods in a static nested class override methods in a superclass and fail, warn, or make it work
- [GROOVY-11838] - Make default annotation targets follow JLS 9.6.4.1 (exclude TYPE_USE and TYPE_PARAMETER)
- [GROOVY-11842] - Invokedynamic first invocation should not have a line with IndyInterface
- [GROOVY-11857] - encapsulate ForStatement without value variable
- [GROOVY-11871] - Support Maven Resolver based version of Grapes
- [GROOVY-11884] - Close gaps in Groovy annotation validation *
- [GROOVY-11885] - groovy-contacts could support scripts
- [GROOVY-11886] - support JDK platform logging instead of System.err for errors and warnings
- [GROOVY-11890] - groovy-contracts could support "@Decreases"
- [GROOVY-11891] - Groovy could provide DGM/ADM isSorted variants
- [GROOVY-11892] - Enhance the groovy.extension.disable system property mechanism
- [GROOVY-11893] - Standardise hooks for Groovy pretty printing
- [GROOVY-11895] - Allow arguments to be set in groovyConsole
- [GROOVY-11901] - Renovate process handling methods
- [GROOVY-11902] - minor groovy-nio improvements
- [GROOVY-11905] - Optimize non-capturing lambdas
- [GROOVY-11906] - VMPlugin cleanup for Groovy 6
- [GROOVY-11908] - Support parameterized type checking extensions
- [GROOVY-11913] - Bring back SwingBuilder widgets list
- [GROOVY-11915] - GINQ: Add groupby...into with first-class GroupResult type
- [GROOVY-11919] - Provide set operators for GINQ, e.g. union, intersect
- [GROOVY-11920] - Include javax.swing.plaf.nimbus in Nimbus LAF check in groovy-swing
- [GROOVY-11921] - groovy-jmx: remove dead IIOP support, refresh docs
- [GROOVY-11922] - Jakarta EE 11 compatibility for groovy-servlet
- [GROOVY-11925] - Improve consistency of TOML functionality
- [GROOVY-11926] - Improve consistency of YAML functionality
- [GROOVY-11927] - Add toMap() and typed parsing support to XmlParser
- [GROOVY-11928] - Make MetaClassImpl.getProperties() respect @Internal
- [GROOVY-11932] - Allow theme switching light/dark/system in groovyConsole
- [GROOVY-11933] - Mesh GROOVY-11879 (async) and GROOVY-9381 (http build) glue via Flow.Publisher
- [GROOVY-11934] - replace old icons with svg and some additional cosmetics
- [GROOVY-11935] - Set invokedynamic call site target immediately to enable earlier JIT inlining
- [GROOVY-11936] - Add Map-based named-parameter overloads for call/callWithRows/callWithAllRows
- [GROOVY-11937] - Highlight `async`, `await` and `defer` in Groovy console
- [GROOVY-11938] - Support for @snippet in Groovydoc
- [GROOVY-11939] - Consolidate inline-tag processing in SimpleGroovyClassDoc
- [GROOVY-11941] - Groovydoc should support --add-stylesheet as per javadoc
- [GROOVY-11942] - generate class hierarchy pages (overview-tree.html, package-tree.html) in groovydoc
- [GROOVY-11943] - Add javadoc-style disable flags: -noindex, -nodeprecatedlist, -nohelp
- [GROOVY-11944] - implement getTagList() and add description() view for runtime Groovydoc
- [GROOVY-11945] - recognise @apiNote, @implSpec, @implNote block tags in groovydoc
- [GROOVY-11946] - support auto dark mode via prefers-color-scheme (CSS variable refactor) in groovydoc
- [GROOVY-11957] - Add DGM#grepping(Iterator)
- [GROOVY-11958] - Add SGM#findGroups/findAllGroups
- [GROOVY-11964] - Additional multi-assignment forms
- [GROOVY-11974] - stub generator could emit records into stubs when in native records mode
- [GROOVY-11976] - stub generation should better account for the shape that will exist after later transforms run when known
- [GROOVY-11978] - RootLoader returns duplicate resource URLs when the same jar appears on parent and child classpaths
- [GROOVY-11979] - Consolidate XML factory hardening and document secure-by-default parsing
New Feature
- [GROOVY-5373] - Sql DataSet fails to work with non-literals in queries (enhancement required)
- [GROOVY-9381] - Add native async/await support
- [GROOVY-11542] - JEP 467 compatibility (markdown documentation comments)
- [GROOVY-11808] - create a DGM#groupByMany extension method
- [GROOVY-11878] - Allow AST transforms to be applicable in more places, initially loop statements
- [GROOVY-11879] - A very simple DSL over the JDK's HTTP client
- [GROOVY-11887] - Scripting support for JUnit6 conditional execution
- [GROOVY-11894] - Provide a NullChecker for groovy-typecheckers
- [GROOVY-11896] - Support module import declarations
- [GROOVY-11909] - Add a @Modifies annotation to groovy-contracts
- [GROOVY-11910] - Add ModifiesChecker type checking extension to verify @Modifies frame conditions
- [GROOVY-11914] - Add PurityChecker type checking extension
- [GROOVY-11923] - Provide a groovy-csv optional module
- [GROOVY-11924] - Provide a minimal declarative http client for the new http builder module
- [GROOVY-11940] - Provide an optional groovy-markdown module with a slurper
- [GROOVY-11950] - Add -preLanguage Groovydoc option to syntax-highlight legacy <pre> blocks
- [GROOVY-11951] - Make DocGDK generation piggy back on new Groovydoc
- [GROOVY-11952] - Integrate GPars with Groovy
- [GROOVY-11953] - Publisher Mesh Logic for async with GPars
- [GROOVY-11970] - Provide support for compound assignment operator overloading (GEP-15)
- [GROOVY-11973] - Allow ASTTransformationCustomizer to support annotations with multiple AST transforms (e.g. @Sealed, @RecordBase) and @AnnotationCollector aliases (e.g. @AutoExternalize) via a new forAnnotation factory method
- [GROOVY-11977] - val type placeholder for final declarations
Question
- [GROOVY-11737] - Improve clarity of Groovy main method selection priority
Sub-task
- [GROOVY-4737] - propertyMissing not called in anonymous or inner classes
- [GROOVY-4862] - propertyMissing / methodMissing called on outer instead of inner class
- [GROOVY-11845] - array initializer for annotation default value
- [GROOVY-11866] - array initializer for annotation attribute value
Task
- [GROOVY-10581] - Prepare for deprecation of security manager (JEP-411)
- [GROOVY-11898] - provide test for OSGi
- [GROOVY-11911] - Deprecate callsite versions of BooleanClosureWrapper
- [GROOVY-11912] - Remove last remnants of JApplet which is gone in JDK26 *
- [GROOVY-11981] - Document XML secure-by-default breaking changes for 6.0.0 *
Wish
- [GROOVY-8699] - Somehow reduce or optimize o.g.c.r calls in CompileStatic
- [GROOVY-9308] - [Parrot] support let or val keyword, aka "final var"
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)