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 233d69a8 2026/07/12 14:35:44: Generated dev website from 
groovy-website@28ee6f4
233d69a8 is described below

commit 233d69a8e6c88778e3db6d5936f843eea2579ab7
Author: jenkins <[email protected]>
AuthorDate: Sun Jul 12 14:35:44 2026 +0000

    2026/07/12 14:35:44: Generated dev website from groovy-website@28ee6f4
---
 search/search-index.json |  4 ++--
 wiki/GEP-27.html         | 21 +++++++++++++++++++--
 wiki/geps.html           |  2 +-
 3 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/search/search-index.json b/search/search-index.json
index 66c64395..27d0cb25 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"
     },
@@ -933,7 +933,7 @@
     {
         "id": "wiki/geps.html",
         "title": "The Apache Groovy programming language - GEPs",
-        "content": "The Apache Groovy programming language - GEPs 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 GEPs GEP-1 GEP-2 GEP- [...]
+        "content": "The Apache Groovy programming language - GEPs 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 GEPs GEP-1 GEP-2 GEP- [...]
         "url": "wiki/geps.html",
         "site": "dev"
     },
diff --git a/wiki/GEP-27.html b/wiki/GEP-27.html
index 710147d1..d2128875 100644
--- a/wiki/GEP-27.html
+++ b/wiki/GEP-27.html
@@ -147,7 +147,7 @@
 <strong>Last modification</strong>
 </td>
 <td class="hdlist2">
-<p>2026-07-12</p>
+<p>2026-07-13</p>
 </td>
 </tr>
 </table>
@@ -779,7 +779,8 @@ closures rather than lambdas — now implemented in the code 
generator (GROOVY-1
 for Groovy 6.0 as a stretch goal. It covers the hard cases: no-capture and 
captured closures (by
 value; written captures via shared <code>Reference</code>, including 
<code>=`/`+</code>), <strong>arbitrary-depth nested
 closures</strong>, implicit <code>it</code>, under both 
<code>@CompileStatic</code> and dynamic compilation, correctly declining
-closures that use <code>delegate</code>/<code>owner</code>/<code>super</code>. 
All three safety mechanisms from <em>Guarding the
+closures that use <code>delegate</code>/<code>owner</code>/<code>super</code>, 
or that carry default parameter values (multi-arity —
+see <em>Excluded and deferred features</em>). All three safety mechanisms from 
<em>Guarding the
 dynamic trust assertion</em> are implemented and validated: the mandatory 
<code>PackedClosure</code> runtime
 guard, the compile-time escape decline, and the <code>@PackedClosures(mode = 
WARN | STRICT)</code> decline
 diagnostics. The two headline capabilities are done:</p>
@@ -846,6 +847,17 @@ proof and, for iteration intrinsics, knowledge of the 
callee.</p>
 <p>Fold the lambda and closure code paths behind the single hoist backend, so 
the SAM and
 <code>Closure</code> cases are one mechanism selecting different wrappers.</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
+<code>PackedClosure</code> binds a fixed <code>MethodHandle</code> and 
<strong>rejects</strong> one. The two are worth <em>contract</em>-aligning
+(a shared "known-target, delegate-inert" marker and consistent delegate 
handling), and both could
+share the per-arity handle-selection primitive that default-parameter packing 
(see <em>Excluded and
+deferred features</em>) also needs. Their dispatch models differ enough, 
though — a fixed handle versus
+runtime overload selection — that fully merging them into one path is not a 
goal; this is tracked as a
+separate initiative.</p>
+</div>
 </div>
 <div class="sect2">
 <h3 id="_default_on_hardening">Default-on hardening</h3>
@@ -1256,6 +1268,11 @@ stretch goal) builds on the shared backend proven in 
phases 1–2; phases 4–5
 <td class="tableblock halign-left valign-top"><p class="tableblock">Kept on 
the class-based path initially; hoisting them requires carrying the 
deserialisation machinery to the enclosing class.</p></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Packing 
default-parameter (multi-arity) closures</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">Deferred</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A single 
hoisted method cannot reproduce the arity-overloaded dispatch a default 
parameter generates, so these decline to S0 today. A future slice would hoist 
one method per arity (reusing the existing default-fill codegen) and have the 
adapter select a <code>MethodHandle</code> per arity at call time — the same 
primitive the <em>MethodClosure</em> alignment above would share.</p></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Object 
elision (S3)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Deferred 
(Groovy 7)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The most 
aggressive step; needs escape proof and, for iteration, callee 
knowledge.</p></td>
diff --git a/wiki/geps.html b/wiki/geps.html
index bdcdbc42..f83d6530 100644
--- a/wiki/geps.html
+++ b/wiki/geps.html
@@ -63,7 +63,7 @@
                                     </ul>
                                 </div>
                             </div>
-                        </div><div id='content' class='page-1'><div 
class='row'><div class='row-fluid'><div class='col-lg-3'><ul 
class='nav-sidebar'><li class='active'><a href='#gep'>GEPs</a></li><li><a 
href='#GEP-1' class='anchor-link'>GEP-1</a></li><li><a href='#GEP-2' 
class='anchor-link'>GEP-2</a></li><li><a href='#GEP-3' 
class='anchor-link'>GEP-3</a></li><li><a href='#GEP-4' 
class='anchor-link'>GEP-4</a></li><li><a href='#GEP-5' 
class='anchor-link'>GEP-5</a></li><li><a href='#GEP-6'  [...]
+                        </div><div id='content' class='page-1'><div 
class='row'><div class='row-fluid'><div class='col-lg-3'><ul 
class='nav-sidebar'><li class='active'><a href='#gep'>GEPs</a></li><li><a 
href='#GEP-1' class='anchor-link'>GEP-1</a></li><li><a href='#GEP-2' 
class='anchor-link'>GEP-2</a></li><li><a href='#GEP-3' 
class='anchor-link'>GEP-3</a></li><li><a href='#GEP-4' 
class='anchor-link'>GEP-4</a></li><li><a href='#GEP-5' 
class='anchor-link'>GEP-5</a></li><li><a href='#GEP-6'  [...]
                             <div class='row'>
                                 <div class='colset-3-footer'>
                                     <div class='col-1'>

Reply via email to