This is an automated email from the ASF dual-hosted git repository.

paulk-asert pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 8d81cb0  draft retrospective GEP for traits
8d81cb0 is described below

commit 8d81cb09d4b8d001c72c9d53d881ea2f7dcfd9f8
Author: Paul King <[email protected]>
AuthorDate: Wed May 6 12:40:43 2026 +1000

    draft retrospective GEP for traits
---
 site/src/site/releasenotes/groovy-5.0.adoc | 11 +++++++
 site/src/site/releasenotes/groovy-6.0.adoc | 46 ++++++++++++++++++++++++++++--
 2 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/site/src/site/releasenotes/groovy-5.0.adoc 
b/site/src/site/releasenotes/groovy-5.0.adoc
index 5909dd2..7e1afe6 100644
--- a/site/src/site/releasenotes/groovy-5.0.adoc
+++ b/site/src/site/releasenotes/groovy-5.0.adoc
@@ -1317,3 +1317,14 @@ Groovy 5 has been tested on JDK versions 11 through 25.
 == More information
 
 You can browse all the 
link:../changelogs/changelog-5.0.0-unreleased.html[tickets closed for Groovy 
5.0 in JIRA].
+
+[[Groovy5.0releasenotes-5.0.7]]
+== Addendum for 5.0.7 (pending)
+
+* The Groovy 5.0 change to `File`/`Path` truthiness -- whereby a
+non-existent file is _falsy_ -- can be reverted as a porting aid by
+setting `-Dgroovy.truth.file.exists.enabled=false`. With the flag set
+to `false`, any non-`null` `File` or `Path` reference is truthy
+(matching Groovy 4 behaviour); the default (`true`) preserves the
+Groovy 5 existence-aware semantics
+(https://issues.apache.org/jira/browse/GROOVY-11996[GROOVY-11996]).
\ No newline at end of file
diff --git a/site/src/site/releasenotes/groovy-6.0.adoc 
b/site/src/site/releasenotes/groovy-6.0.adoc
index 23d5154..0219639 100644
--- a/site/src/site/releasenotes/groovy-6.0.adoc
+++ b/site/src/site/releasenotes/groovy-6.0.adoc
@@ -1267,7 +1267,8 @@ equally to `val` -- chiefly a field named `val` (or 
`var`) declared
 immediately before a method or constructor, and `val as Type` cast
 expressions. For codebases that need more time to migrate, a
 `-Dgroovy.val.enabled=false` system property disables the keyword
-entirely, lexing `val` as a plain identifier.
+entirely, lexing `val` as a plain identifier
+(https://issues.apache.org/jira/browse/GROOVY-11994[GROOVY-11994]).
 
 See link:../wiki/GEP-16.html[GEP-16] for the full specification,
 including the migration flag and the complete list of edge cases.
@@ -2212,6 +2213,18 @@ provides additional capabilities for users who need them:
   for JUnit Jupiter's conditional execution annotations
   (https://issues.apache.org/jira/browse/GROOVY-11887[GROOVY-11887]),
   allowing conditions to be expressed as Groovy scripts
+* **`@ForkedJvm`** -- runs an annotated test method or class in a
+  freshly forked JVM, with optional `systemProperties` and `jvmArgs`
+  attributes. Useful for tests that need a clean process state, an
+  isolated system property, or specific module-access flags
+  (e.g.&nbsp;`--add-opens=...`)
+  (https://issues.apache.org/jira/browse/GROOVY-11997[GROOVY-11997]).
+* **`@ExpectedToFail`** -- inverts the pass/fail outcome of a test:
+  the test passes when it throws (optionally an exception of a given
+  type or with a message containing a given substring), and fails
+  when it does not. Composes with `@ForkedJvm` in either declaration
+  order
+  (https://issues.apache.org/jira/browse/GROOVY-11997[GROOVY-11997]).
 * **Convenient dependency management** -- a single dependency that
   transitively pulls in compatible JUnit 6 libraries
 
@@ -2573,6 +2586,22 @@ via a new `forAnnotation(...)` static factory that 
returns one customizer
 per resolved transform class
 (https://issues.apache.org/jira/browse/GROOVY-11973[GROOVY-11973]).
 For example: 
`config.addCompilationCustomizers(*ASTTransformationCustomizer.forAnnotation(Sealed))`.
+* Static compilation now supports *serializable method references* and
+serializable lambdas. When the target functional interface is a
+`Serializable` intersection type (e.g.&nbsp;`(Function & Serializable)`),
+the generated synthetic class implements `Serializable` and emits the
+required `$deserializeLambda$` plumbing, so the resulting reference
+or lambda can be persisted, sent across JVMs, or used in frameworks
+that rely on serialised lambdas (such as JPA Criteria APIs and some
+distributed-computing libraries)
+(https://issues.apache.org/jira/browse/GROOVY-11993[GROOVY-11993]).
+* The Groovy 5.0 change to `File`/`Path` truthiness -- whereby a
+non-existent file is _falsy_ -- can be reverted as a porting aid by
+setting `-Dgroovy.truth.file.exists.enabled=false`. With the flag set
+to `false`, any non-`null` `File` or `Path` reference is truthy
+(matching Groovy 4 behaviour); the default (`true`) preserves the
+Groovy 5 existence-aware semantics
+(https://issues.apache.org/jira/browse/GROOVY-11996[GROOVY-11996]).
 
 == Other Module Changes
 
@@ -2595,6 +2624,18 @@ existing named-parameter support on `eachRow`, `rows`, 
etc.
 project's Ant properties when running in forked mode, matching the
 behaviour of non-forked execution
 (https://issues.apache.org/jira/browse/GROOVY-6908[GROOVY-6908]).
+* *groovy-ant*: The `<groovyc>` task gains nested `<jvmarg>`,
+`<sysproperty>`, and `<syspropertyset>` elements (mirroring Ant's
+`<java>` task) that are passed to the spawned compiler JVM when
+`fork="true"`, plus an `inheritAll` attribute to pass _all_ parent-
+project properties as system properties at once. Useful for
+compile-time configuration consumed by AST transforms, the
+parser/lexer, or annotation processors -- for example
+`<jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED"/>` or
+`<sysproperty key="groovy.val.enabled" value="false"/>`. Explicit
+`<sysproperty>` / `<syspropertyset>` entries take precedence on name
+collision with `inheritAll`
+(https://issues.apache.org/jira/browse/GROOVY-11995[GROOVY-11995]).
 * *groovy-jmx*: Removed dead IIOP support and refreshed documentation
 (https://issues.apache.org/jira/browse/GROOVY-11921[GROOVY-11921]).
 * *groovy-servlet*: Jakarta EE 11 compatibility
@@ -2626,7 +2667,8 @@ sibling `var` keyword now apply to `val` as well -- 
chiefly a field
 named `val` declared immediately before a method or constructor, and
 `val as Type` cast expressions. The `-Dgroovy.val.enabled=false`
 system property reverts to the prior behavior as a porting aid.
-(https://issues.apache.org/jira/browse/GROOVY-9308[GROOVY-9308])
+(https://issues.apache.org/jira/browse/GROOVY-9308[GROOVY-9308],
+https://issues.apache.org/jira/browse/GROOVY-11994[GROOVY-11994])
 * Annotation target validation is now enforced for import and loop statements
 (see <<annotation-validation>>).
 (https://issues.apache.org/jira/browse/GROOVY-11884[GROOVY-11884])

Reply via email to