This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git


The following commit(s) were added to refs/heads/7.0.x by this push:
     new 2362b3c0f0 docs: expand on Groovy 4 differences
2362b3c0f0 is described below

commit 2362b3c0f02dc2d60b723642a1ca72d9e8aaa64d
Author: James Daugherty <[email protected]>
AuthorDate: Thu Sep 18 13:32:26 2025 -0400

    docs: expand on Groovy 4 differences
---
 grails-doc/src/en/guide/upgrading/upgrading60x.adoc | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/grails-doc/src/en/guide/upgrading/upgrading60x.adoc 
b/grails-doc/src/en/guide/upgrading/upgrading60x.adoc
index f57d71ea36..e24764b15e 100644
--- a/grails-doc/src/en/guide/upgrading/upgrading60x.adoc
+++ b/grails-doc/src/en/guide/upgrading/upgrading60x.adoc
@@ -33,14 +33,19 @@ Doing so will ensure a seamless transition to the latest 
version of Grails and e
 ==== 2. Groovy {groovyVersion} as a baseline:
 
 Grails {version} adopts Groovy {groovyVersion} as it's baseline requirement.
-Several changes in Groovy 4 can affect your application.
-Notable changes include:
+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.
 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.
+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 iw 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.
+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.
 In your gradle file, you can force a dependency upgrade via this code:

Reply via email to