This is an automated email from the ASF dual-hosted git repository. jdaugherty pushed a commit to branch invokeDynamicDisable in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit e4663d5753b29d663695be1f407cb627fefdcb23 Author: James Daugherty <[email protected]> AuthorDate: Sat Jan 17 14:42:29 2026 -0500 #15321 - docs - fix list items in groovy upgrade notes --- grails-doc/src/en/guide/upgrading/upgrading60x.adoc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/grails-doc/src/en/guide/upgrading/upgrading60x.adoc b/grails-doc/src/en/guide/upgrading/upgrading60x.adoc index 6d4c91127b..fadd2c44b2 100644 --- a/grails-doc/src/en/guide/upgrading/upgrading60x.adoc +++ b/grails-doc/src/en/guide/upgrading/upgrading60x.adoc @@ -36,18 +36,17 @@ Grails {version} adopts Groovy {groovyVersion} as it's baseline requirement. Several changes in https://groovy-lang.org/releasenotes/groovy-4.0.html[Groovy 4] can affect your application. Changes that may affect a Grails Application or Plugin include: -1. https://issues.apache.org/jira/browse/GROOVY-10621[GROOVY-10621] - Primitive booleans will no longer generate the form of isProperty & getProperty. +* https://issues.apache.org/jira/browse/GROOVY-10621[GROOVY-10621] - Primitive booleans will no longer generate the form of isProperty & getProperty. They will only generate isProperty(). For Grails Domain objects, grails sometimes generates these properties. It is advisable to switch to the new form of the property. -2. https://issues.apache.org/jira/browse/GROOVY-5169[GROOVY-5169] & https://issues.apache.org/jira/browse/GROOVY-10449[GROOVY-10449] - Fields with a public modifier were not returned with MetaClassImpl#getProperties() in groovy 3, but are now. -3. Closures using the DELEGATE_FIRST strategy now behave differently. +* https://issues.apache.org/jira/browse/GROOVY-5169[GROOVY-5169] & https://issues.apache.org/jira/browse/GROOVY-10449[GROOVY-10449] - Fields with a public modifier were not returned with MetaClassImpl#getProperties() in groovy 3, but are now. +* Closures using the DELEGATE_FIRST strategy now behave differently. The resolution order in Groovy 3 used to be Delegate's invokeMethod, Owner's invokeMethod, Delegate's invokeMissingMethod, Owner's invokeMissingMethod. In Groovy 4, the order is now Delegate's invokeMethod, Delegate's invokeMissingMethod, Owner's invokeMethod, Owner's invokeMissingMethod. -4. Closures defined in a parent class that reference its private properties or methods may no longer have access to them in subclasses. +* Closures defined in a parent class that reference its private properties or methods may no longer have access to them in subclasses. See https://issues.apache.org/jira/browse/GROOVY-11568[GROOVY-11568] for more details. - -Some older libraries may include an older version of groovy, but still be compatible with Groovy 4. One example is GPars. +* Some older libraries may include an older version of groovy, but still be compatible with Groovy 4. One example is GPars. In your gradle file, you can force a dependency upgrade via this code: [source,groovy] @@ -62,7 +61,7 @@ In your gradle file, you can force a dependency upgrade via this code: } ---- -5. By default, Groovy 4 switches away from callsite optimizations and uses invokedynamic instead. This can result in performance regressions compared to Grails 6. Groovy 5 will remove the ability to disable invokedynamic, but to disable it for Groovy 4, modify your `build.gradle` to include the following: +* By default, Groovy 4 switches away from callsite optimizations and uses invokedynamic instead. This can result in performance regressions compared to Grails 6. Groovy 5 will remove the ability to disable invokedynamic, but to disable it for Groovy 4, modify your `build.gradle` to include the following: [source,groovy] .build.gradle
