[
https://issues.apache.org/jira/browse/GROOVY-12042?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18092121#comment-18092121
]
ASF GitHub Bot commented on GROOVY-12042:
-----------------------------------------
paulk-asert opened a new pull request, #2640:
URL: https://github.com/apache/groovy/pull/2640
(no comment)
> 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)