Re: My verdict on AST level joint compilation
MG <mgbiz-yvYIh6MZAuFWk0Htik3J/[email protected]> Wed, 29 Apr 2026 20:46:19 +0200
| Newsgroups | gmane.comp.lang.groovy.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Paul, even if this topic is not directly relevant to us (we went 100% Groovy in our project some time ago), going for an 80% - 90% approach (by basically introducing something like an "AST-transform-interface" concept), instead of forever waiting for the "perfect" solution (that most likely never comes), seems like a good & workable idea here to me. Cheers, mg Am 29.04.2026 um 05:54 schrieb Paul King: > I updated the GEP and created a spike. In the spike I tried 4 > transforms: @Sortable, @ToString, @TupleConstructor, @Lazy. > The "shape" of what they later fully inject is added during CONVERSION > and appear in the stubs. Basically, any AST transform, on an opt-in > basis, can inject a stub at CONVERSION and fill it out properly during > the normal AST transform call. > > If folks like the idea, I can see what additional transforms this > might work for. It isn't as fancy as Jochen's original proposal, and > it isn't a solution that covers every case, but so far it seems to > cover quite a few cases. > > It won't cover situations where the shape of members added in later > injections can't be known in advance. So, there will still be some > caveats but far fewer. And it does mean we (and our users) have to > write the stub injection code for each affected transform if we (they) > want to gain the extra visibility in their stubs. > > Cheers, Paul. > > > On Tue, Apr 28, 2026 at 7:17 AM Paul King <[email protected]> wrote: > > I created a very early alpha GEP capturing a version of Eric's idea: > > https://github.com/apache/groovy-website/blob/asf-site/site/src/site/wiki/GEP-21.adoc > > https://groovy.apache.org/wiki/GEP-21.html > > It was mostly Claude and I haven't vetted it properly yet, so it > might have some holes/hallucinations, but it should serve as a > suitable starting point for an on-going conversation. > > I would also be keen to help progress this, but more than happy if > someone else wants to take the lead. > > Cheers, Paul. > > > On Tue, Apr 28, 2026 at 1:53 AM Jochen Theodorou > <[email protected]> wrote: > > On 4/27/26 16:35, Milles, Eric (TR Technology) via dev wrote: > [...] > > In general, I think the expectation is that we offer a > single source > > folder that can have bi-directional dependencies between > groovy and java > > sources. > > it would actually be interesting to know more about the > expectations of > our users here > > > In practice, this has probably reached a good-enough state. > > The cost of supporting the last 20% -- features like @Delegate, > > @Builder, and so on -- may or may not be worth the > complexity or risk. > > agreed > > > I have considered the idea of split-phase AST transforms. > For example, > > if a transform can run in CONVERSION or SEMANTIC_ANALYSIS to > add some > > tags (annotations, interfaces, metadata, ...) or stub > elements (fields, > > methods, inner classes, ...). Then a second pass of the > transform runs > > in CANONICALIZATION or INSTRUCTION_SELECTION to finish off > the code > > generation. This sort of thing could help with java stubs. > > yes, plus the transform could carry a marker interface that > shows it is > joint compilation friendly. > > bye Jochen >