I believe this is the right approach for now, especially given it is just a few 
lines in the generated build.gradle files.  

Disabling it provides closer to Groovy 3 and 5, compile and execution results 
and removes the performance penalty seen with Invoke Dynamic for Grails 7.

Once Invoke Dynamic no longer needs to be disabled for Grails 7 applications, 
by default, we can quickly reverse course.

James Fredley

On 2026/01/17 19:54:05 James Daugherty wrote:
> Hi Everyone,
> 
> As discussed in the weekly dev meeting, I am proposing we disable
> invoke dynamic on newly generated Grails 7 applications.  There are
> multiple reasons for this:
> 
> 1. Some of the issues I've found with Groovy aren't being back ported
> that affect invoke dynamic (mostly CompileStatic issues).  These
> issues are only being fixed in Groovy 5, which we will not adopt until
> Grails 8.
> 
> 2. Performance regressions have been well documented under
> https://github.com/apache/grails-core/issues/15293  The Groovy team
> needs time to address these issues.
> 
> 3. Disabling will only occur on newly generated applications & can
> easily be changed to opt-in to invoke dynamic if desired.
> 
> While invoke dynamic will be the only option when we adopt Groovy 5,
> the first impression of using Grails 7 is that it's slower, and
> GrailsCompileStatic does not work in some scenarios.  These issues
> don't exist if invoke dynamic is disabled.
> 
> I've created https://github.com/apache/grails-core/issues/15321 to
> capture this request &
> https://github.com/apache/grails-core/pull/15322 to actually disable
> it.
> 
> What are people's thoughts on this approach?
> 
> Regards,
> James
> 

Reply via email to