[ 
https://issues.apache.org/jira/browse/GROOVY-12042?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul King updated GROOVY-12042:
-------------------------------
    Description: 
h2. GINQ graduation: work done

GINQ has been incubating since 4.0.0 (~4.5 years, 494 spec tests, no semantic 
churn). The roadmap
(SQL backend [GEP-26], GEP-18 concurrency alignment, query continuation, async 
sources) is entirely
*additive* to the public surface, so graduating the stable parts now does not 
constrain any future
work. This graduates the user-facing surface while keeping only the 
genuinely-unstable provider SPI
(and the {{agg()}} hook) marked incubating.

h3. Graduated -- {{@Incubating}} removed (stable user-facing surface)
* (/) {{groovy.ginq.transform.GQ}} -- the {{@GQ}} annotation
* (/) {{org.apache.groovy.ginq.GinqGroovyMethods}} -- the {{GQ}}/{{GQL}} macros

h3. Kept incubating -- the genuinely-unstable extension surface
* {{org.apache.groovy.ginq.dsl.GinqAstVisitor}} -- the provider SPI contract a 
custom walker implements ({{@Incubating}}, type level)
* {{org.apache.groovy.ginq.dsl.GinqAstBaseVisitor}} -- the convenience base for 
custom walkers ({{@Incubating}}, type level)
* {{@GQ.astWalker()}} member -- {{@Incubating}} + javadoc cross-linking the SPI 
(selector for a custom walker)
* {{astWalker:}} macro config key -- code comment noting the SPI is incubating 
(covers the {{GQ(astWalker: ...)}} path)
* User guide "Customize GINQ" section -- INCUBATING note
* {{agg()}} custom aggregation -- existing INCUBATING doc label left as-is

h3. Files changed
|| File || Change ||
| {{transform/GQ.java}} | {{@Incubating}} removed from the type; added to the 
{{astWalker()}} member (+ import, + javadoc) |
| {{GinqGroovyMethods.groovy}} | {{@Incubating}} removed from the class (+ 
import); comment on the {{astWalker}} config key |
| {{dsl/GinqAstVisitor.java}} | {{@Incubating}} added at type level (+ import) |
| {{dsl/GinqAstBaseVisitor.java}} | {{@Incubating}} added at type level (+ 
import) |
| {{spec/doc/ginq-userguide.adoc}} | INCUBATING note on the "Customize GINQ" 
section |

h3. Notes
* The only {{Incubating}}/{{INCUBATING}} references left in GINQ are the 
deliberate fences above (verified by grep); no unused imports.
* Changes are compile-safe (annotation add/remove with no members used; 
{{@Incubating}} is RUNTIME-retained on the SPI types, doc-only on the 
{{SOURCE}}-retained {{@GQ}} member).
* The runtime result surface ({{Queryable}}, {{GroupResult}}, {{NamedRecord}}, 
{{Window}}, bound types) is already free of incubating markers and is settled 
(the {{groupby...into}} group model landed in [GROOVY-11915]); the SQL backend 
consumes it rather than changing it.

h3. Deliberately not done (separate calls)
* {{withoutBinaryCompatibilityChecks()}} in {{groovy-ginq/build.gradle}} -- 
whether to enable bin-compat enforcement is a separate decision; recent 
graduations (contracts, type checkers) left theirs off, so it was not flipped 
here.
* The {{provider:}} key introduced by [GEP-26] should carry the same 
{{@Incubating}} marking until the SPI settles.

> Graduate groovy-ginq from incubating to stable
> ----------------------------------------------
>
>                 Key: GROOVY-12042
>                 URL: https://issues.apache.org/jira/browse/GROOVY-12042
>             Project: Groovy
>          Issue Type: Task
>            Reporter: Paul King
>            Priority: Major
>
> h2. GINQ graduation: work done
> GINQ has been incubating since 4.0.0 (~4.5 years, 494 spec tests, no semantic 
> churn). The roadmap
> (SQL backend [GEP-26], GEP-18 concurrency alignment, query continuation, 
> async sources) is entirely
> *additive* to the public surface, so graduating the stable parts now does not 
> constrain any future
> work. This graduates the user-facing surface while keeping only the 
> genuinely-unstable provider SPI
> (and the {{agg()}} hook) marked incubating.
> h3. Graduated -- {{@Incubating}} removed (stable user-facing surface)
> * (/) {{groovy.ginq.transform.GQ}} -- the {{@GQ}} annotation
> * (/) {{org.apache.groovy.ginq.GinqGroovyMethods}} -- the {{GQ}}/{{GQL}} 
> macros
> h3. Kept incubating -- the genuinely-unstable extension surface
> * {{org.apache.groovy.ginq.dsl.GinqAstVisitor}} -- the provider SPI contract 
> a custom walker implements ({{@Incubating}}, type level)
> * {{org.apache.groovy.ginq.dsl.GinqAstBaseVisitor}} -- the convenience base 
> for custom walkers ({{@Incubating}}, type level)
> * {{@GQ.astWalker()}} member -- {{@Incubating}} + javadoc cross-linking the 
> SPI (selector for a custom walker)
> * {{astWalker:}} macro config key -- code comment noting the SPI is 
> incubating (covers the {{GQ(astWalker: ...)}} path)
> * User guide "Customize GINQ" section -- INCUBATING note
> * {{agg()}} custom aggregation -- existing INCUBATING doc label left as-is
> h3. Files changed
> || File || Change ||
> | {{transform/GQ.java}} | {{@Incubating}} removed from the type; added to the 
> {{astWalker()}} member (+ import, + javadoc) |
> | {{GinqGroovyMethods.groovy}} | {{@Incubating}} removed from the class (+ 
> import); comment on the {{astWalker}} config key |
> | {{dsl/GinqAstVisitor.java}} | {{@Incubating}} added at type level (+ 
> import) |
> | {{dsl/GinqAstBaseVisitor.java}} | {{@Incubating}} added at type level (+ 
> import) |
> | {{spec/doc/ginq-userguide.adoc}} | INCUBATING note on the "Customize GINQ" 
> section |
> h3. Notes
> * The only {{Incubating}}/{{INCUBATING}} references left in GINQ are the 
> deliberate fences above (verified by grep); no unused imports.
> * Changes are compile-safe (annotation add/remove with no members used; 
> {{@Incubating}} is RUNTIME-retained on the SPI types, doc-only on the 
> {{SOURCE}}-retained {{@GQ}} member).
> * The runtime result surface ({{Queryable}}, {{GroupResult}}, 
> {{NamedRecord}}, {{Window}}, bound types) is already free of incubating 
> markers and is settled (the {{groupby...into}} group model landed in 
> [GROOVY-11915]); the SQL backend consumes it rather than changing it.
> h3. Deliberately not done (separate calls)
> * {{withoutBinaryCompatibilityChecks()}} in {{groovy-ginq/build.gradle}} -- 
> whether to enable bin-compat enforcement is a separate decision; recent 
> graduations (contracts, type checkers) left theirs off, so it was not flipped 
> here.
> * The {{provider:}} key introduced by [GEP-26] should carry the same 
> {{@Incubating}} marking until the SPI settles.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to