jamesfredley opened a new pull request, #16165:
URL: https://github.com/apache/grails-core/pull/16165

   ## Purpose
   
   Enable Groovy invokedynamic by default on Grails 9.
   
   Grails 7 disabled indy because Groovy 4 paid a 2-8x penalty 
([#15293](https://github.com/apache/grails-core/issues/15293)). Grails 9 is on 
Groovy 6. Earlier A/B work on `perf/indy-vs-callsite-g6` showed:
   
   - microbenchmarks: positive for indy
   - app-level HTTP benches: flat to slightly negative
   
   That is still a large improvement over the old 2-8x hit. This PR flips the 
default so generated apps match Groovy 6's preferred dispatch. The 
`performance` label is set so CI JMH can measure this default against `9.0.x`.
   
   ## What changed
   
   - `grails { indy }` convention is now `true`
   - Opt out: `grails { indy = false }`
   - `CompilePlugin` honors `-PgrailsIndy` for framework modules (same toggle 
CI already uses)
   - Non-indy still needs `groovy-callsite` (BOM-managed)
   - `whatsNew.adoc` documents the default and the opt-out
   
   ## Not in this PR
   
   The full app-bench harness from `perf/indy-vs-callsite-g6` is not copied 
here. That branch is 3.7k lines and stale vs current `9.0.x`. CI JMH via the 
`performance` label is the measurement path.
   
   ## Test plan
   
   - [x] `GrailsExtensionSpec` default-on and opt-out
   - [x] `CompilePluginIndySpec` absent / true / false
   - [ ] CI `performance` JMH vs `9.0.x`
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to