[
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)