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

asf-gitbox-commits pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-dev-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 7c6f45ca 2026/07/15 03:53:40: Generated dev website from 
groovy-website@5c83f33
7c6f45ca is described below

commit 7c6f45ca8d31c64d17bc284fbaf6aa3f15039101
Author: jenkins <[email protected]>
AuthorDate: Wed Jul 15 03:53:40 2026 +0000

    2026/07/15 03:53:40: Generated dev website from groovy-website@5c83f33
---
 search/search-index.json |  2 +-
 wiki/GEP-27.html         | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/search/search-index.json b/search/search-index.json
index 45dbba65..10af223a 100644
--- a/search/search-index.json
+++ b/search/search-index.json
@@ -891,7 +891,7 @@
     {
         "id": "wiki/GEP-27.html",
         "title": "The Apache Groovy programming language - Developer docs - 
GEP-27",
-        "content": "The Apache Groovy programming language - Developer docs - 
GEP-27 Socialize Discuss on the mailing list Groovy on X Groovy on Bluesky 
Groovy on Mastodon Groovy on LinkedIn Events and conferences Source code on 
GitHub Report issues in Jira Stack Overflow questions Slack Community You are 
using an outdated browser. Please upgrade your browser to improve your 
experience. Apache Groovy&trade; Learn Documentation Download Support 
Contribute Ecosystem Blog posts Socialize GE [...]
+        "content": "The Apache Groovy programming language - Developer docs - 
GEP-27 Socialize Discuss on the mailing list Groovy on X Groovy on Bluesky 
Groovy on Mastodon Groovy on LinkedIn Events and conferences Source code on 
GitHub Report issues in Jira Stack Overflow questions Slack Community You are 
using an outdated browser. Please upgrade your browser to improve your 
experience. Apache Groovy&trade; Learn Documentation Download Support 
Contribute Ecosystem Blog posts Socialize GE [...]
         "url": "wiki/GEP-27.html",
         "site": "dev"
     },
diff --git a/wiki/GEP-27.html b/wiki/GEP-27.html
index 1ee6c8ac..939a4881 100644
--- a/wiki/GEP-27.html
+++ b/wiki/GEP-27.html
@@ -873,6 +873,15 @@ proof and, for iteration intrinsics, knowledge of the 
callee.</p>
 <code>Closure</code> cases are one mechanism selecting different wrappers.</p>
 </div>
 <div class="paragraph">
+<p>Convergence also runs the other way: generated closure classes (S0 — 
everything packing declines)
+can adopt the packed dispatch discipline without being packed. The compiler 
knows every <code>doCall</code>
+signature at emission time, so it can emit a 
<code>call(Object&#8230;&#8203;)</code> override on the closure class that
+arity-switches directly to the right <code>doCall</code> (with the 
MOP-transparency guard inlined). The
+Java/GDK path then becomes plain virtual dispatch — capability-clean under 
JPMS, no reflection —
+and the runtime&#8217;s reflective <code>doCall</code> cache in 
<code>Closure.call</code> demotes to serving only legacy jars
+and hand-written subclasses. That cache is a bridge, not a destination.</p>
+</div>
+<div class="paragraph">
 <p>A related follow-up surfaced in review: <code>MethodClosure</code> (from 
<code>.&amp;</code> method references) is the same
 shape — a <code>Closure</code> whose target is a known method that cannot 
honour a delegate — but it dispatches
 by name with runtime overload selection and <strong>silently ignores</strong> 
a caller-set delegate, whereas
@@ -1397,6 +1406,13 @@ dispatch of closure classes does not: the hosting 
class&#8217;s own <code>invoke
 its lookup — the capability model Java lambdas use — and handing the closure 
across a module
 boundary is the grant. This deliberately moves enforcement from invocation 
time to creation time.</p>
 </li>
+<li>
+<p>Packing is independent of Groovy&#8217;s call-site strategy: its 
<code>invokedynamic</code>/constant-dynamic usage
+is JDK bootstrap machinery (the same category as 
<code>LambdaMetafactory</code> for statically compiled
+lambdas), emitted regardless of the <code>indy</code> setting — verified 
byte-identical class counts and
+behaviour under classic (<code>indy=false</code>) compilation, where the 
dynamic path flows through the
+classic call-site caches to the same dispatch tables.</p>
+</li>
 </ul>
 </div>
 </div>

Reply via email to