Groovy Poster for Community Over Code EU

2024-05-14 Thread Paul King
Hi folks,

We have a poster that will be displayed at Community Over Code EU in
Bratislava in a few weeks.

Here is my current draft:

https://github.com/apache/apachecon-eu/blob/main/static/posters/CoCEU_WhyGroovyToday.pdf

There is a small window to make changes before they send the posters
off to the printers. It will be printed I think on A1 size paper,
about 594mm W x 841mm H (23.4 x 33.1 inches).

At the moment, it is rich in technical content - perhaps a little
light in marketing the benefits. If I was to make changes I'd prefer
to maybe reduce the first slightly and increase the latter. Let me
know if you have any feedback.

Thanks, Paul.


[DRAFT] Apache Groovy Board Report May 2024 (reporting on Feb/Mar/Apr)

2024-05-03 Thread Paul King
Hi Folks,

Any updates/comments before I submit our latest board report?
(Due in a few days.)

Thanks, Paul.

===>8==

## Description:
Apache Groovy is responsible for the evolution and maintenance of the Groovy
programming language.

## Project Status:
Current project status: Ongoing with moderate activity.
Issues for the board: No issues requiring board attention at this time.

## Membership Data:
Apache Groovy was founded 2015-11-18 (8 years ago)
There are currently 21 committers and 12 PMC members in this project.
The Committer-to-PMC ratio is 7:4.

Community changes, past quarter:
- No new PMC members. Last addition was Remko Popma on 2022-07-13.
- No new committers. Last addition was Zongle Wang on 2023-08-22.

## Project Activity:
The project is responding well to raised issues for previous releases and
making steady progress towards our next major goal of releasing Groovy 5.

Recent releases:

4.0.21 was released on 2024-04-09.
5.0.0-alpha-8 was released on 2024-04-09.
4.0.20 was released on 2024-03-14.
5.0.0-alpha-7 was released on 2024-03-14.
3.0.21 was released on 2024-03-01.
4.0.19 was released on 2024-03-01.
5.0.0-alpha-6 was released on 2024-03-01.

## Community Health:
Activity within the issue tracker, mailing lists and GitHub PRs was
similar to previous quarters.

This quarter on our main branch (which corresponds to Groovy 5)
of our core repo, 143 commits were contributed from 10 contributors
including 4 non-committer contributors (2 new). All contributors
during the quarter are from different organisations. All votes for
releases came from folks from different organisations.

We look forward to participating in CommunityOverCode EU in June
and CommunityOverCode NA in October.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Replacing GrapeIvy

2024-05-02 Thread Paul King
Hi folks,

One of the things we know is that Apache Ivy (used by Grab/grapes) is
being maintained less these days. I am going to start a spike to
better understand what a replacement using Apache Maven Resolver might
look like. If anyone has strong opinions or free cycles and wants to
help, let me know and you can join in the fun. Otherwise, I'll create
future issues(s)/PR(s) for folks to look at in due course assuming all
goes well.

Cheers, Paul.


Re: Potential enhancement to type checking extensions

2024-05-01 Thread Paul King
Thanks mg, comments inline.

On Thu, May 2, 2024 at 2:51 AM MG  wrote:
>
> Hi Paul,
>
> if this is to be supported, I would still argue for the more general approach.

Both potential tweaks that I looked at did use the more general approach.

> However, having scanned the blog post, it seems to me the case for having 
> this kind of support is quite weak.

This thread wasn't really about adding support for multiversal
equality per se. It was about potential extensions to the type
checking DSL to allow extensions like multiversal equality (or others)
to be more easily written.

If we were going to consider multiversal equality, we'd discuss that
in a separate thread, and yes, like Scala I would suggest making it
opt-in.

> E.g. change of color code library leading to assertion failing for the wrong 
> reason:
>
> Yes, you will need to change the library everywhere and remove the old 
> library, anything else will lead to a world of pain.

I won't repeat the arguments for multiversal equality from the Scala
docs which the blog post referenced, but the argument is that having
multiversal equality support allows the compiler to better check that
indeed you have changed the "color library" everywhere. The Scala docs
just use in their example a type changed from S to T, so it might not
be as obvious as changing libraries, but rather a single class change
somewhere. In both cases, the compiler would flag the difference. If
you don't want the compiler to flag such a difference, you could write
your code using the old style equals method instead.

> If a step-by-step replacement cannot be avoided, you need to keep the two 
> worlds strictly separated by design...
>
> ...which includes not simply switching the return type of a method, if that 
> method will be called from both worlds !
>
> On the other hand having these kinds of checks in place could potentially 
> lead to problems when using Object collections which use some kind of 
> "already in collection check" using equality, which then might throw if one 
> wants to add an object which does not allow for comparison with most other 
> objects.
>
> In a sense it feels like having this would violate some long held assumptions 
> regarding Object to Object comparability, for little gain, which begs the 
> question if it is practical / woth it.
> From my own experience I can say that over > 40 years of programming in a 
> multitude of (mostly statically typed) languages, I have never wished for a 
> feature like that.
>
> ...and this is coming from someone who is big on static typing & type checks 
> where possible, for readability and avoiding some trivial runtime errors :-)

Agreed on most points but we're straying into discussing multiversal
equality again rather than the type checking extensions DSL.
Multiversal equality was just an example since it appeared recently in
one of my social media feeds and folks seemed interested in it. The
point about Groovy's type checking extensions is that because they are
extensible, we don't need to add this to the language - folks can
easily have an adhoc extension themselves if they want this feature.
If lots of folks were interested in it, we could certainly consider
making an opt-in extension but that is for another thread.

> Cheers,
> mg
>
>
> On 01/05/2024 13:40, Paul King wrote:
>
> Just to come back to this discussion. The existing functionality is
> what I ended up using in this blog post:
>
> https://groovy.apache.org/blog/multiversal-equality
>
> In that post, you can see two code fragments that start with
> "afterVisitMethod" and contain code using the type checking extension
> DSL. I was really hoping to make those examples much smaller but
> didn't get too far.
>
> First, I created a "checkingVisitor" method that takes a code block to
> visit and a map of closures, e.g. visitBinaryExpression: { existing
> code }. This saved a small handful of lines.
>
> I also played around with just making "binaryExpression" methods as
> peers to "afterVisitMethod" but you needed several of those (e.g. also
> bitwiseNegation and declaration expressions to cover the cases we have
> in our existing checkers) and before and after variants. This added
> quite some complexity.
>
> To cut a long story short, I have left the functionality as is for
> now. There is still scope for making improvements in the future, but
> the need for the change now seemed less compelling to me after this
> little exercise. Let me know if you have differing thoughts.
>
> Cheers, Paul.
>
>
> On Tue, Apr 9, 2024 at 1:21 PM Paul King  wrote:
>
> I also think option 4 is the right way to go. Option 3 has the benefit
> that both the operator and method call could be covered just

Re: Potential enhancement to type checking extensions

2024-05-01 Thread Paul King
Just to come back to this discussion. The existing functionality is
what I ended up using in this blog post:

https://groovy.apache.org/blog/multiversal-equality

In that post, you can see two code fragments that start with
"afterVisitMethod" and contain code using the type checking extension
DSL. I was really hoping to make those examples much smaller but
didn't get too far.

First, I created a "checkingVisitor" method that takes a code block to
visit and a map of closures, e.g. visitBinaryExpression: { existing
code }. This saved a small handful of lines.

I also played around with just making "binaryExpression" methods as
peers to "afterVisitMethod" but you needed several of those (e.g. also
bitwiseNegation and declaration expressions to cover the cases we have
in our existing checkers) and before and after variants. This added
quite some complexity.

To cut a long story short, I have left the functionality as is for
now. There is still scope for making improvements in the future, but
the need for the change now seemed less compelling to me after this
little exercise. Let me know if you have differing thoughts.

Cheers, Paul.


On Tue, Apr 9, 2024 at 1:21 PM Paul King  wrote:
>
> I also think option 4 is the right way to go. Option 3 has the benefit
> that both the operator and method call could be covered just by
> handling the method call (since the former is converted into the
> latter). Option 4 might require you to cover both cases in your type
> extension - but that might also be what is desired. Looking at Scala,
> it seems that they only apply Multiversal Equality when using the
> operator, not when using the equals method.
>
> Cheers, Paul.
>
> On Mon, Apr 8, 2024 at 11:28 PM Jochen Theodorou  wrote:
> >
> > On 08.04.24 13:56, Paul King wrote:
> > [...]
> > > What I wanted to show is the same examples but using the '==' and '!='
> > > operators, since that would be the typical Groovy style for this
> > > scenario. Unfortunately, using the type checking extension DSL doesn't
> > > currently work for binary operators. The swap from '==' to the
> > > 'equals' method call occurs well after type checking is finished. The
> > > same would apply to operators eventually falling back to 'compareTo'.
> >
> > the replacements may be even on ScriptBytecodeAdapter.
> >
> > > You can still make it work by not using the DSL and writing your own
> > > type checking extension, but that's significantly more work.
> > >
> > > Our options seem to be:
> > > (1) not trying to make this work
> > > (2) modify operators to method call expressions earlier (might remove
> > > some optimization steps)
> > > (3) tweak StaticTypeCheckingVisitor#visitBinaryExpression to support
> > > before/after method call hooks for known cases like equals/compareTo
> > > with a pretend method call
> > > (4) alter the TypeCheckingExtension interface with before/after binary
> > > expression calls.
> > >
> > [...]
> > >
> > > Does anyone have strong opinions on this before I start having a play
> > > and seeing what might work? In particular, a preference for option 3
> > > or 4?
> >
> > Doing that only for special cases does not sound right to me. I would be
> > for option 4... is there anything speaking against that?
> >
> > bye Jochen
> >


[ANNOUNCE] Apache Groovy 4.0.21 released

2024-04-09 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 4.0.21
of Apache Groovy which includes support for running Groovy on JDK 23.

Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_4_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 8 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354415

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[RESULT][VOTE] Release Apache Groovy 4.0.21

2024-04-08 Thread Paul King
The vote has passed with THREE +1 binding votes, ONE additional +1
vote, and no other votes.

I'll proceed with the next steps.

Paul.


On Sat, Apr 6, 2024 at 3:32 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 4.0.21 release!
>
> This release includes 8 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354415
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_21
> Tag commit id: 9ca628fdf0871ac299b464867b1329de77a72ef4
>
> The artifacts to be voted on are located as follows (r68338).
> Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.21/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/4.0.21/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 4.0.21.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 4.0.21
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 4.0.21 because...
>
> Here is my vote:
>
> +1 (binding)


[ANNOUNCE] Apache Groovy 5.0.0-alpha-8 released

2024-04-08 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 5.0.0-alpha-8
of Apache Groovy which includes support for running Groovy on JDK 23.

Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This is a pre-release of a new version of Groovy.
We greatly appreciate any feedback you can give us when using this version.

This release includes 15 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354408

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-8

2024-04-08 Thread Paul King
The vote has passed with THREE +1 binding votes and no other votes.

I'll proceed with the next steps.

Paul.

On Sat, Apr 6, 2024 at 2:18 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-8 release!
>
> This release includes 15 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354408
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_8
> Tag commit id: f6221ee780bfb2f84fb197da2c13387c4e93a019
>
> The artifacts to be voted on are located as follows (r68337).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-8/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-8/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-8.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 5.0.0-alpha-8
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-8 because...
>
> Here is my vote:
>
> +1 (binding)


Re: Potential enhancement to type checking extensions

2024-04-08 Thread Paul King
I also think option 4 is the right way to go. Option 3 has the benefit
that both the operator and method call could be covered just by
handling the method call (since the former is converted into the
latter). Option 4 might require you to cover both cases in your type
extension - but that might also be what is desired. Looking at Scala,
it seems that they only apply Multiversal Equality when using the
operator, not when using the equals method.

Cheers, Paul.

On Mon, Apr 8, 2024 at 11:28 PM Jochen Theodorou  wrote:
>
> On 08.04.24 13:56, Paul King wrote:
> [...]
> > What I wanted to show is the same examples but using the '==' and '!='
> > operators, since that would be the typical Groovy style for this
> > scenario. Unfortunately, using the type checking extension DSL doesn't
> > currently work for binary operators. The swap from '==' to the
> > 'equals' method call occurs well after type checking is finished. The
> > same would apply to operators eventually falling back to 'compareTo'.
>
> the replacements may be even on ScriptBytecodeAdapter.
>
> > You can still make it work by not using the DSL and writing your own
> > type checking extension, but that's significantly more work.
> >
> > Our options seem to be:
> > (1) not trying to make this work
> > (2) modify operators to method call expressions earlier (might remove
> > some optimization steps)
> > (3) tweak StaticTypeCheckingVisitor#visitBinaryExpression to support
> > before/after method call hooks for known cases like equals/compareTo
> > with a pretend method call
> > (4) alter the TypeCheckingExtension interface with before/after binary
> > expression calls.
> >
> [...]
> >
> > Does anyone have strong opinions on this before I start having a play
> > and seeing what might work? In particular, a preference for option 3
> > or 4?
>
> Doing that only for special cases does not sound right to me. I would be
> for option 4... is there anything speaking against that?
>
> bye Jochen
>


Potential enhancement to type checking extensions

2024-04-08 Thread Paul King
Hi folks,

I was putting together a blog post on supporting Multiversal Equality
with Groovy. It's an optional feature in Scala 3:

https://docs.scala-lang.org/scala3/book/ca-multiversal-equality.html

Using the example (involving print and audio books) from the above
link, we can write an ad-hoc type checking extension something like
this:

beforeMethodCall { call ->
if (call.methodAsString == 'equals') {
lhsType = getType(call.objectExpression)
rhsType = getType(call.arguments[0])
if (lhsType != rhsType &&
lhsType != classNodeFor(PrintedBook) &&
rhsType != classNodeFor(AudioBook)) {
addStaticTypeError("Invalid equality check: $lhsType.name
!= $rhsType.name", call)
handled = true
}
}
}

This turns on strict equality checking except for the particular
ad-hoc exclusion listed for print  and audio books. So the following
would be true:

42.equals('foo') // STC error: int and String aren't compatible
aBook.equals(pBook) // STC error: due to the order we gave in the exclusion
pBook.equals(aBook) // compiles and returns true due to equals
definition (not shown)

The blog discusses how we could make it less ad-hoc if we wanted to by
introducing a CanEqual marker interface and so forth, but that's
off-topic for just now.

What I wanted to show is the same examples but using the '==' and '!='
operators, since that would be the typical Groovy style for this
scenario. Unfortunately, using the type checking extension DSL doesn't
currently work for binary operators. The swap from '==' to the
'equals' method call occurs well after type checking is finished. The
same would apply to operators eventually falling back to 'compareTo'.

You can still make it work by not using the DSL and writing your own
type checking extension, but that's significantly more work.

Our options seem to be:
(1) not trying to make this work
(2) modify operators to method call expressions earlier (might remove
some optimization steps)
(3) tweak StaticTypeCheckingVisitor#visitBinaryExpression to support
before/after method call hooks for known cases like equals/compareTo
with a pretend method call
(4) alter the TypeCheckingExtension interface with before/after binary
expression calls.

Note that while the multiversal equality example has some interest, it
isn't really what I am trying to fix here. It just shows a hole in the
type checking extension DSL support that I'd like to fix if we can
find a nice fix. If someone wanted to make it a type error to compare
'int's and 'float's (say), they would face the same issue but with
compareTo not equals.

Does anyone have strong opinions on this before I start having a play
and seeing what might work? In particular, a preference for option 3
or 4?

Cheers, Paul.


[VOTE] Release Apache Groovy 4.0.21

2024-04-05 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 4.0.21 release!

This release includes 8 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354415

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_21
Tag commit id: 9ca628fdf0871ac299b464867b1329de77a72ef4

The artifacts to be voted on are located as follows (r68338).
Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.21/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/4.0.21/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 4.0.21.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 4.0.21
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 4.0.21 because...

Here is my vote:

+1 (binding)


[VOTE] Release Apache Groovy 5.0.0-alpha-8

2024-04-05 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-8 release!

This release includes 15 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354408

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_8
Tag commit id: f6221ee780bfb2f84fb197da2c13387c4e93a019

The artifacts to be voted on are located as follows (r68337).
Source release:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-8/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-8/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 5.0.0-alpha-8.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 5.0.0-alpha-8
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 5.0.0-alpha-8 because...

Here is my vote:

+1 (binding)


Next releases

2024-04-03 Thread Paul King
Hi folks,

I'd like to do another 4 & 5 release over the weekend or early next
week. Mostly just to get the JDK23 support out. Time to finish up any
changes you might be working on, but also let me know if you have any
changes that we should really wait for.

Thanks, Paul.


Some potential additional DGM methods

2024-03-27 Thread Paul King
Hi folks,

We have done some work in DefaultGroovyMethods and ArrayGroovyMethods
in Groovy 5 to improve performance. There is one area which I think
would still be useful to attend to and that is various use cases of
transpose(). This method is really handy but creates additional
aggregates (lists or arrays) when oftentimes, these are just going to
be iterated in subsequent steps. This consumes time and memory for
large aggregates. This is streams territory in some sense, but
particularly within ArrayGroovyMethods, our extension methods have
numerous advantages over streams in certain circumstances. So, I'd
like to propose a "zip" method and a "columns" method.

I'd only propose zipping 2 aggregates initially. Some
languages/libraries support more aggregates but we already have
transpose and we can always add more variants if zip proves popular.
The zip method returns an iterator, so:

[listA, listB].transpose().xxx()

is the same as:

listA.zip(listB).xxx()

but uses an iterator rather than creating new lists.

Here's some examples:

def one = ['cat', 'spider']
def two = ['fish', 'monkey']
assert ['catfish', 'spidermonkey'] == one.zip(two).collect{ a, b -> a + b }
assert one.zip(two).any{ a, b -> a.size() == b.size() }
assert !one.zip(two).every{ a, b -> a.size() == b.size() }
//   equivalent:
//assert ['catfish', 'spidermonkey'] == [one,
two].transpose().collect{ a, b -> a + b }
//assert [one, two].transpose().any{ a, b -> a.size() == b.size() }
//assert ![one, two].transpose().every{ a, b -> a.size() == b.size() }

int[] small = [1, 2, 3]
int[] large = [100, 200, 300]
assert [101, 202, 303] == small.zip(large).collect{ a, b -> a + b }
//   equivalent:
//assert [101, 202, 303] == [small, large].transpose().collect{ a, b -> a + b }

The other use case is avoiding transpose for large 2D arrays when all
you want is traversal. For that I propose a column iterator:

int[][] nums = [[1, 2, 3],
[10, 20, 30],
[100, 200, 300],
[1000, 2000, 3000]]

assert [6, 60, 600, 6000] == nums.collect{ int[] row -> row.sum() }
assert [, , ] == nums.columns().collect{ int[] col -> col.sum() }
//equivalent:
//assert [, , ] == nums.transpose().collect{ int[] row ->
row.sum() }

I welcome feedback, but I'll create a PR in the next couple of days,
so you can also wait and give feedback on that if you prefer.

Cheers, Paul.


Re: [GSoC 2024] Idea: A Basic Superset of Java | Java+

2024-03-24 Thread Paul King
[Comments inline below.]

On Mon, Mar 25, 2024 at 12:53 PM Caleb Brandt  wrote:
> I'm sorry if I accidentally sounded like I was insulting Groovy there!  
> Groovy's features are tremendously powerful, and it's a blast to work with 
> from what I've seen.  I only meant to say that the layman's perception of 
> Groovy is that it, like Scala or Kotlin, is a language relatively distant 
> from normal Java, and thus is fairly intimidating.

It isn't a case of being insulted. I was just correcting what might be
thought of as invalid perceptions. Groovy uses Java syntax and adds
shortcuts which you can use, or not, depending on how comfortable you
are with the improvements. Scala and Kotlin have different syntax to
Java. So, there should be no need to feel intimidated if you are
already a Java developer when moving to Groovy.

> I think having something that acts as a midpoint between "a comprehensive 
> language built off of Java" and "vanilla Java" has the potential to reach a 
> much larger casual audience - people who wouldn't consider a full-blown 
> language shift but might consider a plugin to speed up development - so it 
> would still be worth investing in.  Or in this case, giving some pointers as 
> I basically build the entire project myself, as is the case with Google 
> Summer of Code projects.

There are lots of ways to describe things. A "full-blown language
shift" is a strong term when you don't have to change language syntax
in 99% of cases. But a simple "plugin to speed up development" might
be an over-simplification given that it might mean losing IDE support,
losing ability to debug, and so forth. You should ask the Lombok folks
how much IDE support they get for free vs requires special IDE
support. Also, why I gave references to Manifold and Jactl.

In general, the technical part of the problem is the simple part. It
is useful to ask, how do you intend to market the technology, and how
will you maintain interest in the technology over many years when you
personally have moved on to other interests.

Cheers, Paul.

> Either way, thank you so much for your opinion!  Even though I personally 
> disagree, I can see where you're coming from, and that's the important part. 
> :D
>
> I look forward to working with you if I ever contribute to the Groovy project 
> in the future!
>
>
> Thanks again,
>
> Caleb Brandt
>
> On Sun, Mar 24, 2024 at 8:49 PM Paul King  wrote:
>>
>> Technically, what you suggest would be feasible. Whether it is worth
>> doing is the big question.
>>
>> Other things you might want to look at are https://jactl.io/ and
>> http://manifold.systems/.
>>
>> My advice, don't gauge Groovy usage based on one DSL, Gradle. Gradle
>> could have written a type-checked Groovy DSL but went down the Kotlin
>> path instead. Were your issues with Gradle due to its complex build
>> model or the thin Groovy DSL layer?
>>
>> We'd love to have you work on Groovy features or Groovy marketing! :-)
>>
>> Cheers, Paul.
>>
>> On Mon, Mar 25, 2024 at 9:22 AM Caleb Brandt  wrote:
>> >
>> > Well, maybe Groovy did get a better static analyzer, but I sure haven't 
>> > seen it.  Marketing is the other biggest thing, and my (and the entire 
>> > Minecraft community's) poor experience with Gradle makes me cringe at the 
>> > idea of using Groovy for a larger project, even if it's actually really 
>> > well made.
>> >
>> > So yeah, Groovy absolutely has everything I'm talking about, but I want 
>> > Java to have it too.  It seems like it would be pretty straightforward to 
>> > do so, so do you think it's as feasible as I'd imagine it to be?
>> >
>> > On Sun, Mar 24, 2024 at 7:16 PM Caleb Brandt  
>> > wrote:
>> >>
>> >> Oh absolutely, but the impression I and a lot of other users who aren't 
>> >> familiar with Groovy got was unfortunately fairly far from that.  Lack of 
>> >> first-class static analysis, Gradle being... not the best representation 
>> >> let's say, and the aggressive use of closures make it feel like it's a 
>> >> much more complicated language than it is.
>> >>
>> >> The biggest problem is the STATIC ANALYSIS, though. If you can't use the 
>> >> high-octane intellisense features, type inference, and code refactoring 
>> >> tools you're used to in your home language, you'll bear with the minor 
>> >> annoyance of its drawbacks, even though it's really grating after a 
>> >> while.  As a compiled language, static analysis has to be built from the 
>> >> ground up with its compiler in mind, and Groovy unfortuna

Re: [GSoC 2024] Idea: A Basic Superset of Java | Java+

2024-03-24 Thread Paul King
Technically, what you suggest would be feasible. Whether it is worth
doing is the big question.

Other things you might want to look at are https://jactl.io/ and
http://manifold.systems/.

My advice, don't gauge Groovy usage based on one DSL, Gradle. Gradle
could have written a type-checked Groovy DSL but went down the Kotlin
path instead. Were your issues with Gradle due to its complex build
model or the thin Groovy DSL layer?

We'd love to have you work on Groovy features or Groovy marketing! :-)

Cheers, Paul.

On Mon, Mar 25, 2024 at 9:22 AM Caleb Brandt  wrote:
>
> Well, maybe Groovy did get a better static analyzer, but I sure haven't seen 
> it.  Marketing is the other biggest thing, and my (and the entire Minecraft 
> community's) poor experience with Gradle makes me cringe at the idea of using 
> Groovy for a larger project, even if it's actually really well made.
>
> So yeah, Groovy absolutely has everything I'm talking about, but I want Java 
> to have it too.  It seems like it would be pretty straightforward to do so, 
> so do you think it's as feasible as I'd imagine it to be?
>
> On Sun, Mar 24, 2024 at 7:16 PM Caleb Brandt  wrote:
>>
>> Oh absolutely, but the impression I and a lot of other users who aren't 
>> familiar with Groovy got was unfortunately fairly far from that.  Lack of 
>> first-class static analysis, Gradle being... not the best representation 
>> let's say, and the aggressive use of closures make it feel like it's a much 
>> more complicated language than it is.
>>
>> The biggest problem is the STATIC ANALYSIS, though. If you can't use the 
>> high-octane intellisense features, type inference, and code refactoring 
>> tools you're used to in your home language, you'll bear with the minor 
>> annoyance of its drawbacks, even though it's really grating after a while.  
>> As a compiled language, static analysis has to be built from the ground up 
>> with its compiler in mind, and Groovy unfortunately never received 
>> first-class support like Kotlin or Scala...
>>
>> The Java transpilation would completely solve the static analysis problem 
>> though, as we would easily be compatible with the highest-end static 
>> analysis tools through the same mechanism that C macros get linted.
>>
>> On Sun, Mar 24, 2024 at 7:04 PM Paul King  wrote:
>>>
>>> One of Groovy's goals is to be simple to learn for Java users, so you
>>> can in fact just use the Java syntax that you are familiar with and
>>> take on board as many (or as few) Groovy idioms as you feel
>>> comfortable with.
>>>
>>> On Mon, Mar 25, 2024 at 8:27 AM Caleb Brandt  
>>> wrote:
>>> >
>>> > Thank you so much for the reply, Paul!
>>> >
>>> > And you're absolutely right: Groovy does give you all of those things, as 
>>> > do Kotlin and Scala.  The issue I'm trying to solve isn't one of "not 
>>> > enough features in other languages", but one of "too many features".  For 
>>> > example, Kotlin has every single one of the features I mentioned, but the 
>>> > amount of changes makes the jump from Java a steep one.
>>> >
>>> > Similarly, Groovy is extremely intimidating to long-time Java developers 
>>> > because of the sheer amount that it changes.  While it's certainly the 
>>> > closest of the non-Java JVM languages to Java, it still has entirely new 
>>> > syntax, new libraries, new standards, and many things that don't have a 
>>> > direct Java analogue due to the bytecode tricks used.
>>> >
>>> > The whole point of this is to essentially "trickle down" some of those 
>>> > advanced JVM-language features to pure Java, so people can use some of 
>>> > these quality-of-life features without needing to learn a whole new 
>>> > language to use them.  A dialect, if you will.
>>> >
>>> > On Sun, Mar 24, 2024 at 6:09 PM Paul King  wrote:
>>> >>
>>> >> Hi Caleb, what you are describing as your desired goal sounds alot
>>> >> like Groovy to me. Can you elaborate on anything that you desire that
>>> >> Groovy doesn't already give you?
>>> >>
>>> >> Thanks, Paul.
>>> >>
>>> >> On Mon, Mar 25, 2024 at 1:58 AM Caleb Brandt  
>>> >> wrote:
>>> >> >
>>> >> > I. forgot to subscribe to this list first. :/ Please prune the 
>>> >> > duplicate that's under moderation.
>>> >> >
>>> >> > Also, if this isn't the

Re: [GSoC 2024] Idea: A Basic Superset of Java | Java+

2024-03-24 Thread Paul King
One of Groovy's goals is to be simple to learn for Java users, so you
can in fact just use the Java syntax that you are familiar with and
take on board as many (or as few) Groovy idioms as you feel
comfortable with.

On Mon, Mar 25, 2024 at 8:27 AM Caleb Brandt  wrote:
>
> Thank you so much for the reply, Paul!
>
> And you're absolutely right: Groovy does give you all of those things, as do 
> Kotlin and Scala.  The issue I'm trying to solve isn't one of "not enough 
> features in other languages", but one of "too many features".  For example, 
> Kotlin has every single one of the features I mentioned, but the amount of 
> changes makes the jump from Java a steep one.
>
> Similarly, Groovy is extremely intimidating to long-time Java developers 
> because of the sheer amount that it changes.  While it's certainly the 
> closest of the non-Java JVM languages to Java, it still has entirely new 
> syntax, new libraries, new standards, and many things that don't have a 
> direct Java analogue due to the bytecode tricks used.
>
> The whole point of this is to essentially "trickle down" some of those 
> advanced JVM-language features to pure Java, so people can use some of these 
> quality-of-life features without needing to learn a whole new language to use 
> them.  A dialect, if you will.
>
> On Sun, Mar 24, 2024 at 6:09 PM Paul King  wrote:
>>
>> Hi Caleb, what you are describing as your desired goal sounds alot
>> like Groovy to me. Can you elaborate on anything that you desire that
>> Groovy doesn't already give you?
>>
>> Thanks, Paul.
>>
>> On Mon, Mar 25, 2024 at 1:58 AM Caleb Brandt  wrote:
>> >
>> > I. forgot to subscribe to this list first. :/ Please prune the 
>> > duplicate that's under moderation.
>> >
>> > Also, if this isn't the right place for this, please tell me where I 
>> > should send it. I don't want to come barging in ignoring the way you guys 
>> > do things. I'm just really excited to possibly work with you guys.
>> >
>> >
>> > On Sun, Mar 24, 2024, 10:38 AM Caleb Brandt  
>> > wrote:
>> >>
>> >> Hi all,
>> >>
>> >> I wanted to submit a new idea for this summer's GSoC.  You should stick 
>> >> around, because I trust you'll find this as interesting as I do.
>> >>
>> >>
>> >> Motivation:
>> >>
>> >> I know you made Groovy, but if you're anything like me, you love Java.
>> >>
>> >> I mean, how could you not: Java is unparalleled when it comes to 
>> >> readability and structure while still being powerful.  You can track data 
>> >> flow through a program at a glance, there are a thousand easy-to-use and 
>> >> intuitive libraries, and - as much as I love C++ - there aren't any 
>> >> ambiguous operators, syntax that's only valid in one specific place, or 
>> >> random macro usage in the main library functions.  You know exactly what 
>> >> something does just by looking at it, and that's still such a breath of 
>> >> fresh air even in the modern programming space.  These new languages try 
>> >> to be as concise as possible for writing, but they sometimes forget that 
>> >> people have to read the dang thing too, am I right?
>> >>
>> >> But... Java can also be a bit too verbose at times, can't it? We only 
>> >> recently got a concise syntax for POJOs in the form of Records, and they 
>> >> come with their own set of stipulations that make using them somewhat 
>> >> niche.  And that's not to mention the continued waiting for destructuring 
>> >> declarations, the getters and setters left floating around in the class, 
>> >> the endless if-elseif trees checking the same value against different 
>> >> things that make it so hard to track... There are a few areas of 
>> >> improvement; let's say that.
>> >>
>> >> Languages like Scala and Kotlin try to remedy this, but they end up with 
>> >> their own problems like enforced programming models, completely 
>> >> overhauled libraries that lose the intuitiveness of Java's, and just the 
>> >> overall learning curve of being a completely different language. Same 
>> >> thing with Groovy to a lesser extent: these languages are powerful, but 
>> >> they lose the familiarity that comes with Java.
>> >>
>> >> What we need is the ability to just... add some stuff to Java, without 
>> >> making people learn a whole new language to 

Re: [GSoC 2024] Idea: A Basic Superset of Java | Java+

2024-03-24 Thread Paul King
Hi Caleb, what you are describing as your desired goal sounds alot
like Groovy to me. Can you elaborate on anything that you desire that
Groovy doesn't already give you?

Thanks, Paul.

On Mon, Mar 25, 2024 at 1:58 AM Caleb Brandt  wrote:
>
> I. forgot to subscribe to this list first. :/ Please prune the duplicate 
> that's under moderation.
>
> Also, if this isn't the right place for this, please tell me where I should 
> send it. I don't want to come barging in ignoring the way you guys do things. 
> I'm just really excited to possibly work with you guys.
>
>
> On Sun, Mar 24, 2024, 10:38 AM Caleb Brandt  wrote:
>>
>> Hi all,
>>
>> I wanted to submit a new idea for this summer's GSoC.  You should stick 
>> around, because I trust you'll find this as interesting as I do.
>>
>>
>> Motivation:
>>
>> I know you made Groovy, but if you're anything like me, you love Java.
>>
>> I mean, how could you not: Java is unparalleled when it comes to readability 
>> and structure while still being powerful.  You can track data flow through a 
>> program at a glance, there are a thousand easy-to-use and intuitive 
>> libraries, and - as much as I love C++ - there aren't any ambiguous 
>> operators, syntax that's only valid in one specific place, or random macro 
>> usage in the main library functions.  You know exactly what something does 
>> just by looking at it, and that's still such a breath of fresh air even in 
>> the modern programming space.  These new languages try to be as concise as 
>> possible for writing, but they sometimes forget that people have to read the 
>> dang thing too, am I right?
>>
>> But... Java can also be a bit too verbose at times, can't it? We only 
>> recently got a concise syntax for POJOs in the form of Records, and they 
>> come with their own set of stipulations that make using them somewhat niche. 
>>  And that's not to mention the continued waiting for destructuring 
>> declarations, the getters and setters left floating around in the class, the 
>> endless if-elseif trees checking the same value against different things 
>> that make it so hard to track... There are a few areas of improvement; let's 
>> say that.
>>
>> Languages like Scala and Kotlin try to remedy this, but they end up with 
>> their own problems like enforced programming models, completely overhauled 
>> libraries that lose the intuitiveness of Java's, and just the overall 
>> learning curve of being a completely different language. Same thing with 
>> Groovy to a lesser extent: these languages are powerful, but they lose the 
>> familiarity that comes with Java.
>>
>> What we need is the ability to just... add some stuff to Java, without 
>> making people learn a whole new language to use it.
>>
>>
>>
>> So what if we did?
>>
>> Proposal: Add Some Stuff To Java
>>
>> Essentially, the plan is to make a set of syntactically-sugary-delicious 
>> constructs that transpile to plain ol' Java 8 source code, similar to how 
>> TypeScript's advanced features still compile to ECMA2016.
>>
>> The core principles are zero overhead and improved readability; this isn't 
>> remaking the wheel and constructing new libraries, this is just adding 
>> shorthand for ubiquitous and consistent features that we wish we could have 
>> saved time doing by hand.  It's gotta feel like you're just using a version 
>> of Java from the near future: no syntax weirdness, just some extra intuitive 
>> constructs so it's easier both to write and to read.
>>
>> Things like:
>>
>> Getters and setters being part of the variable declaration, and being called 
>> via the property name itself;
>> If/else-if trees that check the same variable against different things being 
>> allowed to be in the form of a `switchif` statement, similar to Kotlin's 
>> sequential switch statements;
>> Python-style "group imports" to save space and local renaming for imported 
>> functions and classes, so people can still give their items descriptive 
>> names without being forced to type the whole thing out every single time 
>> they want to use it;
>> Kotlin-style `with` blocks for the convenience and readability of "chaining" 
>> when chaining isn't an option;
>> The `as` keyword so you aren't forced to relearn lisp every time you need to 
>> cast something multiple times;
>> Destructuring declarations using annotations instead of waiting for pattern 
>> matching to come through
>> Operator overloading so we can do things like "accessing lists through 
>> brackets" and "doing boolean algebra in a readable manner", again declared 
>> using annotations so method names remain informative instead of letting 
>> developers hide actual behavior inside a non-descriptive function name;
>> Extension functions for grouping utility methods with the classes that use 
>> them; and
>> All syntactic sugar added since Java 8, now available for those of us living 
>> in the past (and also a lot of the world, because they don't even make a JRE 
>> for the latest version anymore) 

Re: odd behaviour of functions accepting Map as argument

2024-03-17 Thread Paul King
I'll reply on the user's list since that is where folks will most
likely search for answers to this question.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Mon, Mar 18, 2024 at 6:20 AM Simon Sadedin  wrote:
>
> Sorry all - sent without a subject, so resending to correct that.
>
>> I sent this to groovy-users but didn't get much response. I am trying to 
>> understand some behaviour that is causing subtle and odd bugs in our code, 
>> which might be a bug or might be something I don't understand.
>>
>> The behaviour is that under very specific circumstances, Groovy is coercing 
>> a List of Maps to a single Map. A condensed example is
>>
>>class Foo {
>> def foo(Map obj) {
>> println(obj)
>> }
>> }
>> z = [
>> [ a: 1, b:2]
>> ]
>> f = new Foo()
>> f.foo(z)
>>
>> In here, even though the foo() method requires a Map, the call does not 
>> throw a type mismatch exception. Instead, the foo() method receives the Map 
>> object that is the first entry of the list as its argument. Consequently, it 
>> prints:
>>
>> [a:1, b:2]
>>
>> If instead, it is passed a list containing two Maps, eg: z = [ [ a: 1, b:2], 
>> [c:1, d:2] ], then it does throw a type conversion error. Also notable is 
>> that it will always throw the type conversion error if you attempt to coerce 
>> it outside the context of a function call, for example, using z.asType(Map).
>>
>> So it seems that under very specific circumstances that is both code context 
>> and data dependent, Groovy will perform a different type of type conversion 
>> to what it would do otherwise, but this is data dependent which is a bit 
>> unsatisfying.
>>
>> Can anyone explain why it does this and what the rationale is? Or is it 
>> actually a bug?
>
>
>  Cheers,
>
> Simon


[ANNOUNCE] Apache Groovy 4.0.20 Released

2024-03-13 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 4.0.20 of Apache Groovy.
This is mostly to fix a minor glitch in the 4.0.19 zip distribution
which affected
users on some platforms (Maven jar artifacts weren't impacted) but also contains
some additional fixes and dependency updates.

Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_4_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 7 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354376

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[ANNOUNCE] Apache Groovy 5.0.0-alpha-7 Released

2024-03-13 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 5.0.0-alpha-7 of
Apache Groovy.
This is mostly to fix a minor glitch in the 5.0.0-alpha-6 zip
distribution which affected
users on some platforms (Maven jar artifacts weren't impacted) but also contains
some additional fixes and dependency updates.

Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This is a pre-release of a new version of Groovy.
We greatly appreciate any feedback you can give us when using this version.

This release includes 12 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354374

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 4.0.20

2024-03-13 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.
I'll proceed with the next steps.

Paul.


On Mon, Mar 11, 2024 at 10:16 AM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 4.0.20 release!
>
> This release includes 7 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354376
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_20
> Tag commit id: fb36c6a20b99e388abbe0348c8007f9636ca449a
>
> The artifacts to be voted on are located as follows (r67870).
> Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.20/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/4.0.20/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 4.0.20.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 4.0.20
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 4.0.20 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-7

2024-03-13 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.
I'll proceed with the next steps.

Paul.

On Mon, Mar 11, 2024 at 9:04 AM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-7 release!
>
> This release includes 12 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354374
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_7
> Tag commit id: 6dad260e0702e5c983481502cc8fcb97f4be21e0
>
> The artifacts to be voted on are located as follows (r67868).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-7/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-7/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-7.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 5.0.0-alpha-7
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-7 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 4.0.20

2024-03-10 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 4.0.20 release!

This release includes 7 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354376

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_20
Tag commit id: fb36c6a20b99e388abbe0348c8007f9636ca449a

The artifacts to be voted on are located as follows (r67870).
Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.20/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/4.0.20/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 4.0.20.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 4.0.20
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 4.0.20 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 5.0.0-alpha-7

2024-03-10 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-7 release!

This release includes 12 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354374

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_7
Tag commit id: 6dad260e0702e5c983481502cc8fcb97f4be21e0

The artifacts to be voted on are located as follows (r67868).
Source release:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-7/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-7/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 5.0.0-alpha-7.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 5.0.0-alpha-7
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 5.0.0-alpha-7 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


New releases to fix glitch in previous release

2024-03-07 Thread Paul King
Hi folks,

There was a small glitch in the last 4/5 releases that affects the
distribution zips on some platforms. Jar artifacts not affected. (If
affected, remove the groovy-raw jar from your distribution lib
directory and you will be good to go). I was planning to prep a new
release over the weekend or first thing next week. Shout if you have
any feedback.

Cheers, Paul.


[ANNOUNCE] Apache Groovy 3.0.21 Released

2024-03-01 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 3.0.21 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_3_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 17 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354073

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[ANNOUNCE] Apache Groovy 4.0.19 Released

2024-03-01 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 4.0.19 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_4_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 18 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354149

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 3.0.21

2024-03-01 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.

I'll proceed with the next steps.

Cheers, Paul.


On Tue, Feb 27, 2024 at 9:09 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 3.0.21 release!
>
> This release includes 17 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354073
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_3_0_21
> Tag commit id: c4681c558ccc0644e217beb3ca7cd641fbc2533d
>
> The artifacts to be voted on are located as follows (r67600).
> Source release: https://dist.apache.org/repos/dist/dev/groovy/3.0.21/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/3.0.21/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 3.0.21.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 3.0.21
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 3.0.21 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 4.0.19

2024-03-01 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.

I'll proceed with the next steps.

Cheers, Paul.



On Tue, Feb 27, 2024 at 8:41 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 4.0.19 release!
>
> This release includes 18 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354149
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_19
> Tag commit id: 7d25a39ae4c26f38b86b181c98e079a40e1d787e
>
> The artifacts to be voted on are located as follows (r67599).
> Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.19/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/4.0.19/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 4.0.19.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 4.0.19
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 4.0.19 because...
>
> Here is my vote:
>
> +1 (binding)


[ANNOUNCE] Release Apache Groovy 5.0.0-alpha-6

2024-03-01 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 5.0.0-alpha-6 of
Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This is a pre-release of a new version of Groovy.
We greatly appreciate any feedback you can give us when using this version.

This release includes 29 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354153

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Re: Next releases

2024-03-01 Thread Paul King
Hi folks,

Eric did spot a couple of regressions that crept into the releases
despite our best efforts, but we think they shouldn't impact most
users. I'll go ahead with releases as planned but we'll probably do
another round of releases in a couple of weeks. Please do try out the
releases and shout if you spot any anomalies.

Thanks, Paul.

On Thu, Feb 22, 2024 at 9:31 PM Paul King  wrote:
>
> Hi folks,
>
> I'll kick off another round of releases next week. Make any changes
> you need or let me know if there is anything we should be awaiting
> for. Currently, I am thinking of the next alpha for 5 and a bump of 3
> and 4.
>
> Cheers, Paul.


[RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-6

2024-03-01 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.

I'll proceed with the next steps.

Cheers, Paul.


On Tue, Feb 27, 2024 at 5:45 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-6 release!
>
> This release includes 29 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354153
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_6
> Tag commit id: 5769bc66c28b0ca5e9aedeb8bdef24723e981401
>
> The artifacts to be voted on are located as follows (r67592).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-6/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-6/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-6.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 5.0.0-alpha-6
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-6 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 3.0.21

2024-02-27 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 3.0.21 release!

This release includes 17 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354073

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_3_0_21
Tag commit id: c4681c558ccc0644e217beb3ca7cd641fbc2533d

The artifacts to be voted on are located as follows (r67600).
Source release: https://dist.apache.org/repos/dist/dev/groovy/3.0.21/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/3.0.21/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 3.0.21.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 3.0.21
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 3.0.21 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 4.0.19

2024-02-27 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 4.0.19 release!

This release includes 18 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354149

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_19
Tag commit id: 7d25a39ae4c26f38b86b181c98e079a40e1d787e

The artifacts to be voted on are located as follows (r67599).
Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.19/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/4.0.19/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 4.0.19.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 4.0.19
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 4.0.19 because...

Here is my vote:

+1 (binding)


[VOTE] Release Apache Groovy 5.0.0-alpha-6

2024-02-26 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-6 release!

This release includes 29 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354153

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_6
Tag commit id: 5769bc66c28b0ca5e9aedeb8bdef24723e981401

The artifacts to be voted on are located as follows (r67592).
Source release:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-6/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-6/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 5.0.0-alpha-6.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 5.0.0-alpha-6
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 5.0.0-alpha-6 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Next releases

2024-02-22 Thread Paul King
Hi folks,

I'll kick off another round of releases next week. Make any changes
you need or let me know if there is anything we should be awaiting
for. Currently, I am thinking of the next alpha for 5 and a bump of 3
and 4.

Cheers, Paul.


Re: Performance in Groovy 5

2024-02-21 Thread Paul King
Hi Gabriel,

We are working on several aspects which will improve performance.
We'll be sure to add further details in the release notes if
everything goes to plan. Is there a particular aspect of performance
that is of particular importance to you?

Cheers, Paul.

On Thu, Feb 22, 2024 at 8:01 AM Videla, Gabriel  wrote:
>
> Hi Groovy devs
>
> I was wondering if we should expect some performance improvements in Groovy 5 
> compared to Groovy 4. I checked the release notes[1] and changelogs[2] for 
> Groovy 5 and I didn't see any clear reference to performance improvements so 
> I thought of asking here.
>
> Thanks
> Gabriel
>
> 1. https://groovy-lang.org/releasenotes/groovy-5.0.html
> 2. https://groovy-lang.org/changelogs/changelog-5.0.0-unreleased.html


Re: Redirecting Output of groovy.util.GroovyScriptEngine to a custom Writer

2024-02-13 Thread Paul King
Hi Anadi,

The output for any script can be set through the 'out' property in the
binding:

var script = File.createTempFile('myScript', '.groovy').tap {
write '''
out.println 'hi'
println 6 * 7
printf '%x%n', 6 * 7
out << 'bye'
'''
deleteOnExit()
}
var sw = new StringWriter()
var binding = new Binding(out: sw)
String[] roots = [script.parentFile.absolutePath]
var engine = new GroovyScriptEngine(roots)
engine.run(script.name, binding)
assert sw.toString().readLines() == ['hi', '42', '2a', 'bye']

Cheers, Paul.


On Tue, Feb 13, 2024 at 5:38 PM Anadi Kashyap 
wrote:

> Hello Groovy Developers and Community,
>
> Perhaps my last question was missed so I'm asking it again, would
> appreciate some direction here -
>
> I am currently working with groovy.util.GroovyScriptEngine and I have
> encountered a specific requirement where I need to redirect the output of
> the script engine to a custom Writer, separate from the default
> stdout/stderr, without affecting the rest of the JVM. This functionality is
> somewhat similar to what javax.script.ScriptContext offers with methods to
> set a custom writer.I am aware of
> org.codehaus.groovy.jsr223.GroovyScriptEngineImpl, but it seems limited for
> my use case. I am looking for a way to achieve this with
> groovy.util.GroovyScriptEngine.Could you please guide me on how to redirect
> the output effectively? Is there an existing feature in Groovy that I might
> have missed, or would this be a case for a feature request?Any guidance or
> suggestions would be greatly appreciated.Thank you for your time and
> assistance.
>
> Best regards,
>
> --
> * Anadi Kashyap *
> * Software Engineer *
> --
> [image: 314e Corporation] 
> * E: * anadi.kash...@314ecorp.com
> * T: * +1.510.371.6736
> * M: * +91.891.016.1263
> Connect with me on LinkedIn 
> [image: Book a meeting with 314e in ViVE and HIMSS 2024]
>


[DRAFT] Apache Groovy Board Report Feb 2024 (reporting on Nov/Dec/Jan)

2024-02-06 Thread Paul King
Hi Folks,

Any updates/comments before I submit our latest board report?
(Due early next week.)

Thanks, Paul.

===>8==

## Description:
Apache Groovy is responsible for the evolution and maintenance of the Groovy
programming language.

## Project Status:
Current project status: Ongoing with moderate activity.
Issues for the board: No issues requiring board attention at this time.

## Membership Data:
Apache Groovy was founded 2015-11-18 (8 years ago)
There are currently 21 committers and 12 PMC members in this project.
The Committer-to-PMC ratio is 7:4.

Community changes, past quarter:
- No new PMC members. Last addition was Remko Popma on 2022-07-13.
- Zongle Wang was added as committer on 2023-08-22.

## Project Activity:
The project is responding well to raised issues for previous releases and
making steady progress towards our next major goal of releasing Groovy 5.

Recent releases:
4.0.18 was released on 2024-01-19.
5.0.0-alpha-5 was released on 2024-01-19.
3.0.20 was released on 2023-12-22.
4.0.17 was released on 2023-12-22.
5.0.0-alpha-4 was released on 2023-12-22.
4.0.16 was released on 2023-11-29.
5.0.0-alpha-3 was released on 2023-11-29.

## Community Health:
Activity for the issue tracker was slightly down but activity for the
mailing lists, commit traffic and GitHub PRs was slightly increased.

This quarter on our main branch (which corresponds to Groovy 5)
of our core repo, 201 commits were contributed from 12 contributors
including 4 non-committer contributors (3 new). There were 456 commits
from 12 contributors across all branches.

We look forward to participating in CommunityOverCode EU in June.


[ANNOUNCE] Apache Groovy 5.0.0-alpha-5 Released

2024-01-19 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 5.0.0-alpha-5 of
Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This is a pre-release of a new version of Groovy.
We greatly appreciate any feedback you can give us when using this version.

This release includes 21 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354072

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-5

2024-01-19 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.

I'll proceed with the next steps.

Cheers, Paul.

On Tue, Jan 16, 2024 at 9:46 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-5 release!
>
> This release includes 21 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354072
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_5
> Tag commit id: edcba8e9aec60c8f8657335f686e3683f7ee2857
>
> The artifacts to be voted on are located as follows (r66637).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-5/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-5/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-5.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 5.0.0-alpha-5
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-5 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[ANNOUNCE] Apache Groovy 4.0.18 Released

2024-01-18 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 4.0.18 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_4_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 16 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354066

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 4.0.18

2024-01-18 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.

I'll proceed with the next steps.

Cheers, Paul.

On Wed, Jan 17, 2024 at 1:05 AM Jochen Theodorou  wrote:
>
> +1
>
> Am 16.01.24 um 04:26 schrieb Paul King:
> > Dear development community,
> >
> > I am happy to start the VOTE thread for a Groovy 4.0.18 release!
> >
> > This release includes 16 bug fixes/improvements as outlined in the 
> > changelog:
> > https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354066
> >
> > Tag: 
> > https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_18
> > Tag commit id: c17afaaf3984624e98519fcd397439d152f55b10
> >
> > The artifacts to be voted on are located as follows (r66628).
> > Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.18/sources
> > Convenience binaries:
> > https://dist.apache.org/repos/dist/dev/groovy/4.0.18/distribution
> >
> > Release artifacts are signed with a key from the following file:
> > https://dist.apache.org/repos/dist/release/groovy/KEYS
> >
> > Please vote on releasing this package as Apache Groovy 4.0.18.
> >
> > Reminder on ASF release approval requirements for PMC members:
> > http://www.apache.org/legal/release-policy.html#release-approval
> > Hints on validating checksums/signatures (but replace md5sum with 
> > sha256sum):
> > https://www.apache.org/info/verification.html
> >
> > The vote is open for the next 72 hours and passes if a majority of at
> > least three +1 PMC votes are cast.
> >
> > [ ] +1 Release Apache Groovy 4.0.18
> > [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> > [ ] -1 Do not release Apache Groovy 4.0.18 because...
> >
> > Here is my vote:
> >
> > +1 (binding)
> >
> > <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> > Virus-free.www.avast.com
> > <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> > <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 5.0.0-alpha-5

2024-01-16 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-5 release!

This release includes 21 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354072

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_5
Tag commit id: edcba8e9aec60c8f8657335f686e3683f7ee2857

The artifacts to be voted on are located as follows (r66637).
Source release:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-5/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-5/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 5.0.0-alpha-5.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 5.0.0-alpha-5
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 5.0.0-alpha-5 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Re: Next releases

2024-01-16 Thread Paul King
The 5.0.0-alpha-5 release is delayed. One of the few tasks I didn't
check when we upgraded to Gradle 8.5 was maven publishing. That isn't
working, e.g.:

* What went wrong:
Execution failed for task ':publishMavenPublicationToLocalFileRepository'.
> Failed to publish publication 'maven' to repository 'LocalFile'
   > Invalid publication 'maven': multiple artifacts with the
identical extension and classifier ('jar.asc', 'null').

I'll try to track down the issue. 8.4 shows the same behavior.

Cheers, Paul.

<https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
Virus-free.www.avast.com
<https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Fri, Jan 12, 2024 at 7:11 AM Paul King  wrote:
>
> Hi folks,
>
> I was going to release another Groovy 4.0.x and 5 alpha version in the
> coming days. Time to get in any fixes or let me know if there is stuff
> coming which we should wait for.
>
> Cheers, Paul.


[VOTE] Release Apache Groovy 4.0.18

2024-01-15 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 4.0.18 release!

This release includes 16 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12354066

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_18
Tag commit id: c17afaaf3984624e98519fcd397439d152f55b10

The artifacts to be voted on are located as follows (r66628).
Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.18/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/4.0.18/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 4.0.18.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 4.0.18
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 4.0.18 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Re: CommunityOverCode EU CFP closing soon! See you in Bratislava!

2024-01-11 Thread Paul King
Last day today! Get your submissions in!

Cheers, Paul.

On Fri, Jan 5, 2024 at 3:50 PM Paul King  wrote:
>
> Hi folks,
>
> Only a week to go to submit your Apache Groovy talks for
> CommunityOverCode EU in Slovakia, June 2024. We welcome beginner,
> intermediate and advanced talks. You can talk about Groovy or
> Groovy-related projects in the broader Groovy ecosystem. Since slots
> are limited at the conference, it's also a bonus if you talk about
> Groovy and other ASF projects. Plus there's plenty of other great ASF
> tracks.
>
> https://eu.communityovercode.org/
>
> I hope to see you there!
>
> Cheers, Paul.
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Next releases

2024-01-11 Thread Paul King
Hi folks,

I was going to release another Groovy 4.0.x and 5 alpha version in the
coming days. Time to get in any fixes or let me know if there is stuff
coming which we should wait for.

Cheers, Paul.


Re: Possible improvement to NumberRange

2024-01-10 Thread Paul King
On Wed, Jan 10, 2024 at 8:41 PM Jochen Theodorou  wrote:
>
> On 10.01.24 05:53, Paul King wrote:
> > Hi folks,
> >
> > The NumberRange abstraction tries very hard to allow any Number
> > numeric type to be used but since the Number interface doesn't convey
> > much behavior, there are a few places where it defaults to using
> > Groovy's NumberMath plumbing which, to cut a long story short, falls
> > back to using BigDecimal for any numeric calculations which aren't
> > using the common known simpler types.
>
> But wouldn't that mean we are lacking a range type for this?

We could have yet another range type but NumberRange is currently
coded to work for any Number subclass except in just a few places. And
Fraction, being a Number subclass is what I was interested in here.

> > A consequence of this is that currently if you created a range using
> > e.g. the Apache Commons Fraction class (which does extend Number), and
> > used a Fraction stepSize, the values in the range would be one
> > Fraction (for the first element) and then subsequent elements would be
> > BigDecimals.
> >
> > @Grab('org.apache.commons:commons-lang3:3.14.0')
> > import org.apache.commons.lang3.math.Fraction
> > def r = (Fraction.ONE..2).by(Fraction.ONE_QUARTER)
> > println r.toList() // => [1/1, 1.25, 1.50, 1.75, 2.00]
> >
> > This isn't incorrect in one sense but is somewhat surprising. Given
> > that the Number interface doesn't have operators, providing a smarter
> > detection of the number system to use becomes somewhat tricky. One
> > thing we could do is provide some interface that providers could use
> > and we could have a "Fraction" math implementation that satisfied that
> > interface.
>
> But we have this convention already, which is substract, add and negate
> as dynamic methods being called. It is not a formal interface, yes, but
> so is also not for previous and next for the ObjectRange.

We have multiply(-1), plus() and minus() but we don't call through to
those methods directly but rather go through the NumberMath plumbing
which ends up calling those methods for the Java Number classes but
defaults back to BigDecimal for any unknown Number subclasses.

> > Alternatively, we could supply some [Bi]Functions that
> > offered the supplied behavior that the StepIterator needs when
> > calculating subsequent elements in the range. With this second
> > approach, we could do something like:
> >
> > @Grab('org.apache.commons:commons-lang3:3.14.0')
> > import org.apache.commons.lang3.math.Fraction
> > (Fraction.ONE..2).by(Fraction.ONE_QUARTER,
> >  Fraction::add, Fraction::subtract, Fraction::negate).toList()
> >
> > Which gives a list of all Fraction instances: [1/1, 5/4, 3/2, 7/4, 2/1]
> >
> > Is this something we should support? Does anyone have ideas on the
> > best implementation?
>
> the key point about the Number interface is actually converting to one
> of the Java numbers. Of course I understand what you want to achieve,
> but is that really a NumberRange in the end?
>
> If I extend and abstract the idea above, don't I end up with something
> where I define a step-function:
>
> (Fraction.ONE..2).by(it -> it.add(Fraction.ONE_QUARTER)

Perhaps a step function is the way to go. The current implementation
has some assumptions about counting up or down based on the sign of
the step - that functionality might have to be abandoned if a step
function was used instead of a step size.

> and would that not kind of abstract ObjectRange as well:
>
> ('a'...'z').by(Character::next)
>
> I like here especially the simplicity, that you really only require
> Comparable for this to work.
>
> Then again what does Number.next() do? It is calling plus(1). If we go
> to the essence of it we actually have only one real range, which is the
> ObjectRange and all other ranges are optimizations.
>
> In fact if you look at it strictly we are even breaking the contract by
> not doing next in there, but plus(1). If you would replace next() on
> Integer our IntRange will ignore that.
>
> Anyway, since they are optimization for specific cases maybe NumberRange
> should not try to solve this, but a new range?

We could define a new range type. What I am after is something which
does everything the current NumberRange does but doesn't hard-code
BigDecimal arithmetic for non-Java Number subclasses. I'll think a bit
more about it.

> bye Jochen


Possible improvement to NumberRange

2024-01-09 Thread Paul King
Hi folks,

The NumberRange abstraction tries very hard to allow any Number
numeric type to be used but since the Number interface doesn't convey
much behavior, there are a few places where it defaults to using
Groovy's NumberMath plumbing which, to cut a long story short, falls
back to using BigDecimal for any numeric calculations which aren't
using the common known simpler types.

A consequence of this is that currently if you created a range using
e.g. the Apache Commons Fraction class (which does extend Number), and
used a Fraction stepSize, the values in the range would be one
Fraction (for the first element) and then subsequent elements would be
BigDecimals.

@Grab('org.apache.commons:commons-lang3:3.14.0')
import org.apache.commons.lang3.math.Fraction
def r = (Fraction.ONE..2).by(Fraction.ONE_QUARTER)
println r.toList() // => [1/1, 1.25, 1.50, 1.75, 2.00]

This isn't incorrect in one sense but is somewhat surprising. Given
that the Number interface doesn't have operators, providing a smarter
detection of the number system to use becomes somewhat tricky. One
thing we could do is provide some interface that providers could use
and we could have a "Fraction" math implementation that satisfied that
interface. Alternatively, we could supply some [Bi]Functions that
offered the supplied behavior that the StepIterator needs when
calculating subsequent elements in the range. With this second
approach, we could do something like:

@Grab('org.apache.commons:commons-lang3:3.14.0')
import org.apache.commons.lang3.math.Fraction
(Fraction.ONE..2).by(Fraction.ONE_QUARTER,
Fraction::add, Fraction::subtract, Fraction::negate).toList()

Which gives a list of all Fraction instances: [1/1, 5/4, 3/2, 7/4, 2/1]

Is this something we should support? Does anyone have ideas on the
best implementation?

Patch of a prototype is provided below. I can turn into a PR with tests
but I am trying to gauge what folks think first.

Thoughts? Paul.

=== >8 =

Subject: [PATCH] NumberRangeTweaks
---
Index: src/main/java/groovy/lang/NumberRange.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===
diff --git a/src/main/java/groovy/lang/NumberRange.java
b/src/main/java/groovy/lang/NumberRange.java
--- a/src/main/java/groovy/lang/NumberRange.java (revision
3cd76364f772250324f5729ef93ffd76fbdd2b79)
+++ b/src/main/java/groovy/lang/NumberRange.java (date 1704856055407)
@@ -31,6 +31,8 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
+import java.util.function.BiFunction;
+import java.util.function.Function;

 import static org.codehaus.groovy.runtime.ScriptBytecodeAdapter.compareEqual;
 import static 
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.compareGreaterThan;
@@ -94,6 +96,9 @@
  * true if the range includes the upper bound.
  */
 private final boolean inclusiveRight;
+private BiFunction increment = null;
+private BiFunction decrement = null;
+private Function negate = null;

 /**
  * Creates an inclusive {@link NumberRange} with step size 1.
@@ -246,6 +251,17 @@
 return new NumberRange(comparableNumber(from),
comparableNumber(to), stepSize, inclusiveLeft, inclusiveRight);
 }

+public  NumberRange by(T stepSize,
BiFunction increment, BiFunction decrement, Function negate) {
+if (!Integer.valueOf(1).equals(this.stepSize)) {
+throw new IllegalStateException("by only allowed on
ranges with original stepSize = 1 but found " + this.stepSize);
+}
+NumberRange result = new NumberRange(comparableNumber(from),
comparableNumber(to), stepSize, inclusiveLeft, inclusiveRight);
+result.increment = increment;
+result.decrement = decrement;
+result.negate = negate;
+return result;
+}
+
 @SuppressWarnings("unchecked")
 /* package private */ static  T
comparableNumber(Comparable c) {
 return (T) c;
@@ -617,7 +633,7 @@

 this.range = range;
 if (compareLessThan(step, 0)) {
-this.step = multiply(step, -1);
+this.step = negate != null ? negate.apply(step) :
multiply(step, -1);
 isAscending = range.isReverse();
 } else {
 this.step = step;
@@ -691,7 +707,7 @@
  */
 @SuppressWarnings("unchecked")
 private Comparable increment(Object value, Number step) {
-return (Comparable) plus((Number) value, step);
+return (Comparable) (increment != null ?
increment.apply((Number) value, step) : plus((Number) value, step));
 }

 /**
@@ -703,6 +719,6 @@
  */
 @SuppressWarnings("unchecked")
 private Comparable decrement(Object value, Number step) {
-return (Comparable) minus((Number) value, step);
+return (Comparable) (decrement != null ?
decrement.apply((Number) value, step) : minus((Number) value, 

CommunityOverCode EU CFP closing soon! See you in Bratislava!

2024-01-04 Thread Paul King
Hi folks,

Only a week to go to submit your Apache Groovy talks for
CommunityOverCode EU in Slovakia, June 2024. We welcome beginner,
intermediate and advanced talks. You can talk about Groovy or
Groovy-related projects in the broader Groovy ecosystem. Since slots
are limited at the conference, it's also a bonus if you talk about
Groovy and other ASF projects. Plus there's plenty of other great ASF
tracks.

https://eu.communityovercode.org/

I hope to see you there!

Cheers, Paul.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Re: Subscribe to Groovy Mail Community for developers to understand and contribute

2023-12-23 Thread Paul King
Try the subscribe link from here:
https://groovy-lang.org/mailing-lists.html


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Sun, Dec 24, 2023 at 6:04 AM Jayachandran Ramadoss
 wrote:
>
> Subscribe to Groovy Mail Community for developers to understand and contribute


[ANNOUNCE] Apache Groovy 3.0.20 Released

2023-12-21 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 3.0.20 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_3_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 59 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353572

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.



Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[ANNOUNCE] Apache Groovy 4.0.17 Released

2023-12-21 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 4.0.17 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_4_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 8 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353979

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 3.0.20

2023-12-21 Thread Paul King
The vote has passed with FOUR +1 PMC vote, ONE +1 additional vote, and no
other votes.

I'll proceed with the next steps.

Regards, Paul.


On Tue, Dec 19, 2023 at 12:53 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 3.0.20 release!
>
> This release includes 59 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353572
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_3_0_20
> Tag commit id: 6ad73a654d11db5abd383dde16f8587954c07dd4
>
> The artifacts to be voted on are located as follows (r66157).
> Source release: https://dist.apache.org/repos/dist/dev/groovy/3.0.20/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/3.0.20/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 3.0.20.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 3.0.20
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 3.0.20 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[ANNOUNCE] Release Apache Groovy 5.0.0-alpha-4

2023-12-21 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 5.0.0-alpha-4 of
Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This is a pre-release of a new version of Groovy.
We greatly appreciate any feedback you can give us when using this version.

This release includes 16 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353967

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 4.0.17

2023-12-21 Thread Paul King
The vote has passed with FOUR +1 PMC vote, ONE +1 additional vote, and no
other votes.

I'll proceed with the next steps.

Regards, Paul.

On Tue, Dec 19, 2023 at 12:27 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 4.0.17 release!
>
> This release includes 8 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353979
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_17
> Tag commit id: 0bd637ff3a7bf917fe5edb907f331861c0df8a84
>
> The artifacts to be voted on are located as follows (r66156).
> Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.17/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/4.0.17/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 4.0.17.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 4.0.17
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 4.0.17 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-4

2023-12-21 Thread Paul King
The vote has passed with FOUR +1 PMC vote, ONE +1 other vote, and no
other votes.

I'll proceed with the next steps.

Regards, Paul.

On Tue, Dec 19, 2023 at 11:08 AM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-4 release!
>
> This release includes 16 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353967
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_4
> Tag commit id: 433daecc3942257fc33c159765b25bb3aa77d3ed
>
> The artifacts to be voted on are located as follows (r66155).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-4/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-4/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-4.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 5.0.0-alpha-4
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-4 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 3.0.20

2023-12-18 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 3.0.20 release!

This release includes 59 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353572

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_3_0_20
Tag commit id: 6ad73a654d11db5abd383dde16f8587954c07dd4

The artifacts to be voted on are located as follows (r66157).
Source release: https://dist.apache.org/repos/dist/dev/groovy/3.0.20/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/3.0.20/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 3.0.20.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 3.0.20
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 3.0.20 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 4.0.17

2023-12-18 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 4.0.17 release!

This release includes 8 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353979

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_17
Tag commit id: 0bd637ff3a7bf917fe5edb907f331861c0df8a84

The artifacts to be voted on are located as follows (r66156).
Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.17/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/4.0.17/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 4.0.17.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 4.0.17
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 4.0.17 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 5.0.0-alpha-4

2023-12-18 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-4 release!

This release includes 16 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353967

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_4
Tag commit id: 433daecc3942257fc33c159765b25bb3aa77d3ed

The artifacts to be voted on are located as follows (r66155).
Source release:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-4/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-4/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 5.0.0-alpha-4.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 5.0.0-alpha-4
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 5.0.0-alpha-4 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


next releases

2023-12-11 Thread Paul King
Hi folks,

I was planning to do one more round of releases before the end of the
year. Let me know what might need to be done before I hit the go
button. It would need to be done in about a week (to get in before
Christmas) or I'd probably aim for around the 27th to get in before
the new year.

Cheers, Paul.


[ANNOUNCE] Apache Groovy 5.0.0-alpha-3 Released

2023-11-29 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 5.0.0-alpha-3 of
Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This is a pre-release of a new version of Groovy.
We greatly appreciate any feedback you can give us when using this version.

This release includes 49 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353636

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[ANNOUNCE] Apache Groovy 4.0.16 Released

2023-11-29 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 4.0.16 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_4_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 26 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353637

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-3

2023-11-29 Thread Paul King
The vote has passed with FOUR +1 binding votes, ONE additional +1
votes, and no other votes.

I'll proceed with the next steps.

Cheers, Paul.

On Mon, Nov 27, 2023 at 7:54 AM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-3 release!
>
> This release includes 47 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353636
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_3
> Tag commit id: f56e682eab977a8b4f9a5183e54443d855614b91
>
> The artifacts to be voted on are located as follows (r65554).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-3/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-3/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-3.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 5.0.0-alpha-3
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-3 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 4.0.16

2023-11-29 Thread Paul King
The vote has passed with THREE +1 binding votes, TWO additional +1
votes, and no other votes.

I'll proceed with the next steps.

Cheers, Paul.

On Mon, Nov 27, 2023 at 6:57 AM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 4.0.16 release!
>
> This release includes 25 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353637
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_16
> Tag commit id: 12918f361bf20795cc2a8a1bf736a5b440146326
>
> The artifacts to be voted on are located as follows (r65550).
> Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.16/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/4.0.16/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 4.0.16.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 4.0.16
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 4.0.16 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 5.0.0-alpha-3

2023-11-26 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-3 release!

This release includes 47 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353636

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_3
Tag commit id: f56e682eab977a8b4f9a5183e54443d855614b91

The artifacts to be voted on are located as follows (r65554).
Source release:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-3/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-3/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 5.0.0-alpha-3.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 5.0.0-alpha-3
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 5.0.0-alpha-3 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 4.0.16

2023-11-26 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 4.0.16 release!

This release includes 25 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353637

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_16
Tag commit id: 12918f361bf20795cc2a8a1bf736a5b440146326

The artifacts to be voted on are located as follows (r65550).
Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.16/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/4.0.16/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 4.0.16.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 4.0.16
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 4.0.16 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Next releases

2023-11-22 Thread Paul King
Hi folks,

I was planning to kick off some more releases over the weekend or
first thing next week. Time to propose/commit any changes that you
require, or let me know if there is anything major that I should hold
off for.

I am not sure how much time I will have but I will include at least a
4.0.16 release. With 5.0.0-alpha-3 the next priority.

Cheers, Paul.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[DRAFT] Apache Groovy Board Report Nov 2023 (reporting on Aug/Sep/Oct)

2023-11-06 Thread Paul King
Hi Folks,

Any updates/comments before I submit our latest board report?
(Due tomorrow)

Thanks, Paul.

===>8==

## Description:
Apache Groovy is responsible for the evolution and maintenance of the Groovy
programming language.

## Project Status:
Current project status: Ongoing with moderate activity.
Issues for the board: No issues requiring board attention at this time.

## Membership Data:
Apache Groovy was founded 2015-11-18 (8 years ago)
There are currently 21 committers and 12 PMC members in this project.
The Committer-to-PMC ratio is 7:4.

Community changes, past quarter:
- No new PMC members. Last addition was Remko Popma on 2022-07-13.
- Zongle Wang was added as committer on 2023-08-22.

## Project Activity:
The project is responding well to raised issues for previous releases and
making steady progress towards our next major goal of releasing Groovy 5.

Recent releases:
4.0.15 was released on 2023-09-14.
5.0.0-alpha-2 was released on 2023-09-14.
2.5.23 was released on 2023-08-22.
3.0.19 was released on 2023-08-22.
4.0.14 was released on 2023-08-22.
5.0.0-alpha-1 was released on 2023-08-22.

## Community Health:
Activity on mailing lists, the issue tracker and GitHub was similar to
previous quarters overall.

This quarter on our main branch (which corresponds to Groovy 5)
of our core repo, 172 commits were contributed from 12 contributors
including 6 non-committer contributors (4 new). There were 311
commits from 12 contributors across all branches.

There were several noteworthy community highlights last quarter:
- We released the first alpha version(s) of Groovy 5. We continue
  further work on this exciting release.
- We held a small online celebration of 20 years since the first commit in
  the project repo (includes pre-ASF history).
- We held a successful Groovy track at the CommunityOverCode conference in
  Halifax in October. There were 10 talks across 2 days including some
  joint scaling data science talks with Apache Ignite.
  We are very thankful to all the organisers and other helpers.
  A trip report, mostly focussing on the Groovy track, is on the Groovy blog:
  https://groovy.apache.org/blog/community-over-code-na-2023


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[ANNOUNCE] Apache Groovy 4.0.15 Released

2023-09-14 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 4.0.15 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_4_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 12 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353571

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[ANNOUNCE] Apache Groovy 5.0.0-alpha-2 Released

2023-09-14 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 5.0.0-alpha-2 of
Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This is a pre-release of a new version of Groovy.
We greatly appreciate any feedback you can give us when using this version.

This release includes 20 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353570

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[RESULT][VOTE] Release Apache Groovy 4.0.15

2023-09-14 Thread Paul King
The vote has passed with FOUR +1 PMC votes, ONE additional +1 vote,
and no other votes.
I'll proceed with the next steps.

Paul.

On Mon, Sep 11, 2023 at 7:24 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 4.0.15 release!
>
> This release includes 12 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353571
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_15
> Tag commit id: f821c4627c197b6332e1d0e200681f3ae411df83
>
> The artifacts to be voted on are located as follows (r63911).
> Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.15/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/4.0.15/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 4.0.15.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 4.0.15
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 4.0.15 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-2

2023-09-14 Thread Paul King
The vote has passed with FOUR +1 PMC votes and no other votes.
I'll proceed with the next steps.

Paul.

On Mon, Sep 11, 2023 at 6:20 PM Paul King  wrote:
>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-2 release!
>
> This release includes 20 bug fixes/improvements as outlined in the changelog:
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353570
>
> Tag: 
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_2
> Tag commit id: 50b6e95748b76f272e6e865c04988388a1277974
>
> The artifacts to be voted on are located as follows (r63907).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-2/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-2/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-2.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 5.0.0-alpha-2
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-2 because...
>
> Here is my vote:
>
> +1 (binding)
>
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> Virus-free.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 4.0.15

2023-09-11 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 4.0.15 release!

This release includes 12 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353571

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_15
Tag commit id: f821c4627c197b6332e1d0e200681f3ae411df83

The artifacts to be voted on are located as follows (r63911).
Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.15/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/4.0.15/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 4.0.15.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 4.0.15
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 4.0.15 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


[VOTE] Release Apache Groovy 5.0.0-alpha-2

2023-09-11 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-2 release!

This release includes 20 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353570

Tag: 
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_2
Tag commit id: 50b6e95748b76f272e6e865c04988388a1277974

The artifacts to be voted on are located as follows (r63907).
Source release:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-2/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-2/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 5.0.0-alpha-2.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at
least three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 5.0.0-alpha-2
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 5.0.0-alpha-2 because...

Here is my vote:

+1 (binding)


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Next releases

2023-09-07 Thread Paul King
Hi folks,

I'll probably try to do some releases early next week (at least 4.0.15
and another 5 alpha release).

Time to get in your fixes or let me know if I need to wait for
something important.

Cheers, Paul.


Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Re: Records support in JSON

2023-09-06 Thread Paul King
I have a prototype fix. It alters RecordTypeASTTransformation to emit
a BeanInfo class in the emulate case and MetaClassImpl to handle
properties within native records. The following script then works:


@RecordOptions(mode=EMULATE)
record PersonA(String name) {}

@RecordOptions(mode=NATIVE)
record PersonB(String name) {}

class PersonC {
  String name
}

def a = new PersonA('Guillaume')
println a.metaClass.properties*.name
println a.metaClass.properties*.class.simpleName

def b = new PersonB('Jochen')
println b.metaClass.properties*.name
println b.metaClass.properties*.class.simpleName

def c = new PersonC(name: 'Eric')
println c.metaClass.properties*.name
println c.metaClass.properties*.class.simpleName

import groovy.json.JsonOutput

println JsonOutput.toJson([a,b,c])
=
With output:

[name, serialVersionUID, class]
[MetaBeanProperty, CachedField, MetaBeanProperty]
[name, serialVersionUID, class]
[MetaBeanProperty, CachedField, MetaBeanProperty]
[name, class]
[MetaBeanProperty, MetaBeanProperty]
[{"name":"Guillaume"},{"name":"Jochen"},{"name":"Eric"}]

I'll add some more tests and create a PR tomorrow.

Paul.

<https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
Virus-free.www.avast.com
<https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Tue, Sep 5, 2023 at 6:48 PM Guillaume Laforge  wrote:
>
> I also forget the fact that Groovy records are not always Java records when 
> running on older JDKs...
> So it needs to make the difference with real and groovy-specific fallthrough 
> records.
>
> On Tue, Sep 5, 2023 at 10:46 AM Guillaume Laforge  wrote:
>>
>> Sure, I just created:
>> https://issues.apache.org/jira/browse/GROOVY-11167
>>
>> Also, thanks for the workaround.
>> I ended up just using a POGO instead, but I hadn't thought of implementing a 
>> Map.
>>
>> I guess JsonOutput needs to be updated here.
>> I suppose we would add a new if case that check if the class of the object 
>> is a record, and the retrieve the components with 
>> clazz.getRecordComponents()?
>>
>> Guillaume
>>
>> On Tue, Sep 5, 2023 at 7:44 AM Paul King  wrote:
>>>
>>> We aren't picking up the metabean properties for the record correctly.
>>> Would you like to file a bug report?
>>>
>>> Workarounds are to call "toMap()" (or *.toMap() on the list), or do
>>> something like:
>>> ```
>>> @AutoImplement
>>> record Person(String name) implements Map {
>>>   Set entrySet() { toMap().entrySet() }
>>> }
>>> ```
>>>
>>>
>>> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
>>> Virus-free.www.avast.com
>>> <https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
>>> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>
>>> On Tue, Sep 5, 2023 at 2:13 AM Guillaume Laforge  wrote:
>>> >
>>> > Hi,
>>> >
>>> > I was a bit surprised by this behavior with serializing records in JSON.
>>> >
>>> > I was expecting this assertion to pass:
>>> >
>>> > import groovy.json.JsonOutput
>>> > record Person(String name) {}
>>> > assert JsonOutput.toJson([new Person('Guillaume')]) == 
>>> > '[{"name":"Guillaume"}]'
>>> >
>>> > Instead, I got [{}]
>>> >
>>> > Shouldn't records be treated like POGOs and thus serialize the same way 
>>> > like in my example above? Or is there a good reason why this is not the 
>>> > case?
>>> >
>>> > Guillaume
>>> >
>>> > --
>>> > Guillaume Laforge
>>> > Apache Groovy committer
>>> > Developer Advocate @ Google Cloud
>>> >
>>> > Blog: glaforge.dev
>>> > Twitter: @glaforge
>>> > Mastodon: @glafo...@uwyn.net
>>
>>
>>
>> --
>> Guillaume Laforge
>> Apache Groovy committer
>> Developer Advocate @ Google Cloud
>>
>> Blog: glaforge.dev
>> Twitter: @glaforge
>> Mastodon: @glafo...@uwyn.net
>
>
>
> --
> Guillaume Laforge
> Apache Groovy committer
> Developer Advocate @ Google Cloud
>
> Blog: glaforge.dev
> Twitter: @glaforge
> Mastodon: @glafo...@uwyn.net


Re: Records support in JSON

2023-09-04 Thread Paul King
We aren't picking up the metabean properties for the record correctly.
Would you like to file a bug report?

Workarounds are to call "toMap()" (or *.toMap() on the list), or do
something like:
```
@AutoImplement
record Person(String name) implements Map {
  Set entrySet() { toMap().entrySet() }
}
```



Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Tue, Sep 5, 2023 at 2:13 AM Guillaume Laforge  wrote:
>
> Hi,
>
> I was a bit surprised by this behavior with serializing records in JSON.
>
> I was expecting this assertion to pass:
>
> import groovy.json.JsonOutput
> record Person(String name) {}
> assert JsonOutput.toJson([new Person('Guillaume')]) == 
> '[{"name":"Guillaume"}]'
>
> Instead, I got [{}]
>
> Shouldn't records be treated like POGOs and thus serialize the same way like 
> in my example above? Or is there a good reason why this is not the case?
>
> Guillaume
>
> --
> Guillaume Laforge
> Apache Groovy committer
> Developer Advocate @ Google Cloud
>
> Blog: glaforge.dev
> Twitter: @glaforge
> Mastodon: @glafo...@uwyn.net


Re: Unable to setup workspace

2023-08-26 Thread Paul King
Hi  manas,

You can safely ignore those warnings. In the Groovy build we have
turned on an additional security hardening feature of Gradle called
dependency verification:

https://docs.gradle.org/current/userguide/dependency_verification.html

It's a powerful feature but requires metadata about valid dependencies
to be always kept in sync with reality. Currently, we don't fail the
build when violations are detected. It means that either key servers
aren't available right now (they are known for being temperamental) or
our metadata has drifted out of sync.

Not all of the tooling we use (like dependabot) knows about dependency
verification. Even Gradle's own bootstrap mechanism seems to
occasionally get that info wrong. So we do sometimes slip out of sync
and then we rectify. I believe all the info is in sync right now (you
might need to refresh master).

Current status:
https://ge.apache.org/s/2k6hic6wxjsrg

Cheers, Paul.


On Sat, Aug 26, 2023 at 3:23 PM Manas Marthi  wrote:
>
>
>
> hi
>
> are there any specific steps to setup groovy workspace in intellij? I am 
> getting below weird errors. Never faced this issue. Any thoughts?
>
> I am trying to setup master branch using JDK21 preview build. This is on home 
> laptop. So no proxy issues in connecting to maven or any other repo..
>
>
> configuration ':build-logic:compileClasspath' 5 errors
> MODULE ARTIFACT PROBLEM(S)
> org.jfrog.buildinfo:build-info-api:2.39.8
> build-info-api-2.39.8.jar (.asc)
>
> Key 2ee4988c55528f25 (not found) couldn't be found in any key server so 
> verification couldn't be performed
>
> org.jfrog.buildinfo:build-info-client:2.39.8
> build-info-client-2.39.8.jar (.asc)
>
> Key 2ee4988c55528f25 (not found) couldn't be found in any key server so 
> verification couldn't be performed
>
> org.jfrog.buildinfo:build-info-extractor:2.39.8
> build-info-extractor-2.39.8.jar (.asc)
>
> Key 2ee4988c55528f25 (not found) couldn't be found in any key server so 
> verification couldn't be performed
>
> org.jfrog.buildinfo:build-info-extractor-gradle:5.1.0
> build-info-extractor-gradle-5.1.0.jar (.asc)
>
> Key 2ee4988c55528f25 (not found) couldn't be found in any key server so 
> verification couldn't be performed
>
> org.jfrog.filespecs:file-specs-java:1.1.2
> file-specs-java-1.1.2.jar (.asc)
>
> Key 2ee4988c55528f25 (not found) couldn't be found in any key server so 
> verification couldn't be performed
>
>
> thanks
> manas
>


Groovy turns 20!

2023-08-25 Thread Paul King
Happy Birthday to Groovy!

After over 2 billion downloads, 240 releases, 4+ commits, and over 450
contributors, next Monday, Groovy turns 20!!

Join a few of us (virtually) for a casual meet and greet to celebrate the
occasion. This is a live interactive session where we'll chat about all
things Groovy. Everyone is invited!

https://zoom.us/webinar/register/7216929801435/WN_ER2YfNZJQGW_Qbq9JNxwwg

Cheers, Paul.


Community over Code Groovy track in Halifax

2023-08-25 Thread Paul King
Hi folks,

We are very excited to be offering some great sessions in the Groovy
track at the ASF's flagship NA conference Community over Code:

https://communityovercode.org/schedule/

Come along and learn:

* The latest details for Groovy 4 and 5 including what's happening
with Groovy and Groovy-related frameworks in the Groovy and Java
ecosystems.
* Why Groovy still adds value in 2023 looking at Groovy vs Java
features up to JDK21.
* Lots of tips for Java developers to get up to speed coding and
testing with Groovy including best practices for testing Java code
with Groovy
* How to deploy Groovy kubernetes, Grails and Micronaut applications
to the cloud.
* Look at using Groovy for data science applications with GraalVM for
native application startup speed.
* Explore using Groovy with Apache Ignite for scaling up your data
science applications, looking
at applications from solving Rubik's cubes to clustering Whiskey
flavor profiles.
* Leveraging the features of GORM Data Services in your Groovy applications.
* Taking a step back and look at how the work we do for projects
within the Groovy ecosystem and the broader open source community can
continue to be successful and become a more integral part of our
industry.

Word on the street is that accommodation is filling up fast, and last
year the conference sold out early, so register and book in now!

https://communityovercode.org/registration/

For those that can make it, see you there!

Cheers, Paul.


[ANNOUNCE] Apache Groovy 5.0.0-alpha-1 Released

2023-08-23 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 5.0.0-alpha-1 of
Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This is the first pre-release of our next version of Groovy. We
greatly appreciate any feedback you can give us when using this
version.

We don't recommend you use this version of Groovy in production. It is
not feature complete and is subject to change. Having said that, we
don't anticipate porting to Groovy 5 will be a significant activity
for most users.

This release includes 118 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12351227

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


Re: [RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-1

2023-08-22 Thread Paul King
The Groovy 5.0.0-alpha-1 release is fully published. Feel free to try
it out.

The only thing remaining is the announcement email. I am going to spend
some more time beefing up the release notes and send that out along with
the usual tweets/toots tomorrow.

Cheers, Paul.


On Tue, Aug 22, 2023 at 1:11 PM Paul King  wrote:

>
> The vote has passed with FOUR +1 binding votes and no other votes.
>
> I'll proceed with the next steps.
>
> Cheers, Paul.
>
> On Sat, Aug 19, 2023 at 12:20 PM Paul King  wrote:
>
>>
>> Dear development community,
>>
>> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-1 release!
>>
>> NOTE: We are not feature complete for Groovy 5. In the release notes,
>> I will make it clear that this is an alpha release, not recommended for
>> production use and subject to change. But I think we need to start getting
>> feedback on the parts that are ready and having a release will help with
>> that.
>>
>> This release includes 119 bug fixes/improvements as outlined in the
>> changelog:
>>
>> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12351227
>>
>> Tag:
>> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_1
>> Tag commit id: cbd5a526a7af9375858c8967adc1e32555cb91f7
>>
>> The artifacts to be voted on are located as follows (r63508).
>> Source release:
>> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/sources
>> Convenience binaries:
>> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/distribution
>>
>> Release artifacts are signed with a key from the following file:
>> https://dist.apache.org/repos/dist/release/groovy/KEYS
>>
>> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-1.
>>
>> Reminder on ASF release approval requirements for PMC members:
>> http://www.apache.org/legal/release-policy.html#release-approval
>> Hints on validating checksums/signatures (but replace md5sum with
>> sha256sum):
>> https://www.apache.org/info/verification.html
>>
>> The vote is open for the next 72 hours and passes if a majority of at
>> least three +1 PMC votes are cast.
>>
>> [ ] +1 Release Apache Groovy 5.0.0-alpha-1
>> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
>> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-1 because...
>>
>> Here is my vote:
>>
>> +1 (binding)
>>
>>


[ANNOUNCE] Apache Groovy 2.5.23 Released

2023-08-22 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 2.5.23 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_2_5_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 2 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353077

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[ANNOUNCE] Apache Groovy 3.0.19 Released

2023-08-22 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 3.0.19 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_3_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.

This release includes 7 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353387

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[ANNOUNCE] Apache Groovy 4.0.14 Released

2023-08-22 Thread Paul King
Dear community,

The Apache Groovy team is pleased to announce version 4.0.14 of Apache Groovy.
Apache Groovy is a multi-faceted programming language for the JVM.
Further details can be found at the https://groovy.apache.org website.

This release is a maintenance release of the GROOVY_4_0_X branch.
It is strongly encouraged that all users using prior
versions on this branch upgrade to this version.
It is the most recent Groovy version recommended for production use.

This release includes 15 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353386

Sources, convenience binaries, downloadable documentation and an SDK
bundle can be found at: https://groovy.apache.org/download.html
We recommend you verify your installation using the information on that page.

Jars are also available within the major binary repositories.

We welcome your help and feedback and in particular want
to thank everyone who contributed to this release.

For more information on how to report problems, and to get involved,
visit the project website at https://groovy.apache.org/

Best regards,

The Apache Groovy team.


[RESULT][VOTE] Release Apache Groovy 2.5.23

2023-08-22 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.
I'll proceed with the next steps.

Cheers, Paul.


On Sat, Aug 19, 2023 at 3:50 PM Paul King  wrote:

>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 2.5.23 release!
>
> This release includes 2 bug fixes/improvements as outlined in the
> changelog:
>
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353077
>
> Tag:
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_2_5_23
> Tag commit id: a8f3b116afd969be3f06b1807371d976462d6a2c
>
> The artifacts to be voted on are located as follows (r63511).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/2.5.23/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/2.5.23/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 2.5.23.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with
> sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 2.5.23
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 2.5.23 because...
>
> Here is my vote:
>
> +1 (binding)
>
>


[RESULT][VOTE] Release Apache Groovy 3.0.19

2023-08-21 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.
I'll proceed with the next steps.

Cheers, Paul.

On Sat, Aug 19, 2023 at 2:51 PM Paul King  wrote:

>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 3.0.19 release!
>
> This release includes 7 bug fixes/improvements as outlined in the
> changelog:
>
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353387
>
> Tag:
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_3_0_19
> Tag commit id: 1040cabcefe8e0776ca2d87e7a3f0ee2840dbf68
>
> The artifacts to be voted on are located as follows (r63510).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/3.0.19/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/3.0.19/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 3.0.19.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with
> sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 3.0.19
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 3.0.19 because...
>
> Here is my vote:
>
> +1 (binding)
>
>


[RESULT][VOTE] Release Apache Groovy 4.0.14

2023-08-21 Thread Paul King
The vote has passed with FIVE +1 binding votes and no other votes.
I'll proceed with the next steps.

Cheers, Paul.

On Sat, Aug 19, 2023 at 1:18 PM Paul King  wrote:

>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 4.0.14 release!
>
> This release includes 15 bug fixes/improvements as outlined in the
> changelog:
>
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353386
>
> Tag:
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_14
> Tag commit id: 034b8f90052752c978c5454cc3b17b163c68ffec
>
> The artifacts to be voted on are located as follows (r63509).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/4.0.14/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/4.0.14/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 4.0.14.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with
> sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 4.0.14
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 4.0.14 because...
>
> Here is my vote:
>
> +1 (binding)
>
>


[RESULT][VOTE] Release Apache Groovy 5.0.0-alpha-1

2023-08-21 Thread Paul King
The vote has passed with FOUR +1 binding votes and no other votes.

I'll proceed with the next steps.

Cheers, Paul.

On Sat, Aug 19, 2023 at 12:20 PM Paul King  wrote:

>
> Dear development community,
>
> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-1 release!
>
> NOTE: We are not feature complete for Groovy 5. In the release notes,
> I will make it clear that this is an alpha release, not recommended for
> production use and subject to change. But I think we need to start getting
> feedback on the parts that are ready and having a release will help with
> that.
>
> This release includes 119 bug fixes/improvements as outlined in the
> changelog:
>
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12351227
>
> Tag:
> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_1
> Tag commit id: cbd5a526a7af9375858c8967adc1e32555cb91f7
>
> The artifacts to be voted on are located as follows (r63508).
> Source release:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/sources
> Convenience binaries:
> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/distribution
>
> Release artifacts are signed with a key from the following file:
> https://dist.apache.org/repos/dist/release/groovy/KEYS
>
> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-1.
>
> Reminder on ASF release approval requirements for PMC members:
> http://www.apache.org/legal/release-policy.html#release-approval
> Hints on validating checksums/signatures (but replace md5sum with
> sha256sum):
> https://www.apache.org/info/verification.html
>
> The vote is open for the next 72 hours and passes if a majority of at
> least three +1 PMC votes are cast.
>
> [ ] +1 Release Apache Groovy 5.0.0-alpha-1
> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-1 because...
>
> Here is my vote:
>
> +1 (binding)
>
>


Re: switch in Groovy 5

2023-08-19 Thread Paul King
Thanks Rémi,

The description for the enhancements to switch currently in the release
notes is very much a placeholder. It is quite old, in fact from memory it
was carried over from the Groovy 4 release notes where it was removed when
we drew the line for Groovy 4 functionality. If it makes the cut for Groovy
5 GA, there will indeed need to be a GEP with a better specification and
before we do a first beta release. Thanks very much for your insights.

Groovy 5 supports '_' as a placeholder for tuple assignment
deconstruction and unused closure/lambda parameters. I haven't added that
to the release notes yet. We should keep that in mind also as an option if
we do progress the switch above.

Cheers, Paul.


On Sun, Aug 20, 2023 at 7:39 AM Remi Forax  wrote:

> Hello,
> reading the proposed enhancements for Groovy 5.0
>
> I've several remarks,
> the proposed destructuring syntax is ambiguous
> switch(point3D) {
>   case (a, b, c) -> ...
> }
>  It's not clear if a, b and c are existing local variables (declared
> above) or fresh new bindings.
>  Choosing fresh new variables instead of existing local variable has been
> a major contention point when the Python syntax was discussed.
>  I do not want to influence you one way or another on the syntax to
> choose, just point the ambiguity.
>
> Otherwise, we are adding '_' as an unamed pattern/variable (as a preview)
> [1] and are using "when" instead of "&&" for the guard [2].
>
> regards,
> Rémi
>
> [1] https://openjdk.org/jeps/443
> [2] https://openjdk.org/jeps/441
>
> --
>
> *From: *"Paul King" 
> *To: *"dev" 
> *Sent: *Saturday, August 19, 2023 4:07:39 PM
> *Subject: *Re: [VOTE] Release Apache Groovy 5.0.0-alpha-1
>
> I will be updating the release notes over the next few days (during the
> voting window) and they will be here:
> https://groovy-lang.org/releasenotes/groovy-5.0.html
>
> It's just a skeleton at the moment but I'll update as I go, but I won't
> start in earnest until tomorrow.
>
> In the meantime, perhaps looking at the issues labelled 'breaking' is the
> best bet:
>
>
> https://issues.apache.org/jira/browse/GROOVY-8?jql=project%20%3D%2012318123%20AND%20fixVersion%20%3D%2012351227%20and%20labels%20%3D%20breaking
>
> Cheers, Paul.
>
>
> On Sat, Aug 19, 2023 at 10:36 PM Andres Almiray 
> wrote:
>
>> +1 (binding)
>>
>> Is there a list of breaking changes for 5.x?
>>
>> On Sat, Aug 19, 2023 at 4:21 AM Paul King  wrote:
>>
>>>
>>> Dear development community,
>>>
>>> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-1 release!
>>>
>>> NOTE: We are not feature complete for Groovy 5. In the release notes,
>>> I will make it clear that this is an alpha release, not recommended for
>>> production use and subject to change. But I think we need to start
>>> getting
>>> feedback on the parts that are ready and having a release will help with
>>> that.
>>>
>>> This release includes 119 bug fixes/improvements as outlined in the
>>> changelog:
>>>
>>> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12351227
>>>
>>> Tag:
>>> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_1
>>> Tag commit id: cbd5a526a7af9375858c8967adc1e32555cb91f7
>>>
>>> The artifacts to be voted on are located as follows (r63508).
>>> Source release:
>>> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/sources
>>> Convenience binaries:
>>> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/distribution
>>>
>>> Release artifacts are signed with a key from the following file:
>>> https://dist.apache.org/repos/dist/release/groovy/KEYS
>>>
>>> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-1.
>>>
>>> Reminder on ASF release approval requirements for PMC members:
>>> http://www.apache.org/legal/release-policy.html#release-approval
>>> Hints on validating checksums/signatures (but replace md5sum with
>>> sha256sum):
>>> https://www.apache.org/info/verification.html
>>>
>>> The vote is open for the next 72 hours and passes if a majority of at
>>> least three +1 PMC votes are cast.
>>>
>>> [ ] +1 Release Apache Groovy 5.0.0-alpha-1
>>> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
>>> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-1 because...
>>>
>>> Here is my vote:
>>>
>>> +1 (binding)
>>>
>>>
>


Re: [VOTE] Release Apache Groovy 5.0.0-alpha-1

2023-08-19 Thread Paul King
I will be updating the release notes over the next few days (during the
voting window) and they will be here:

https://groovy-lang.org/releasenotes/groovy-5.0.html

It's just a skeleton at the moment but I'll update as I go, but I won't
start in earnest until tomorrow.

In the meantime, perhaps looking at the issues labelled 'breaking' is the
best bet:

https://issues.apache.org/jira/browse/GROOVY-8?jql=project%20%3D%2012318123%20AND%20fixVersion%20%3D%2012351227%20and%20labels%20%3D%20breaking

Cheers, Paul.


On Sat, Aug 19, 2023 at 10:36 PM Andres Almiray  wrote:

> +1 (binding)
>
> Is there a list of breaking changes for 5.x?
>
> On Sat, Aug 19, 2023 at 4:21 AM Paul King  wrote:
>
>>
>> Dear development community,
>>
>> I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-1 release!
>>
>> NOTE: We are not feature complete for Groovy 5. In the release notes,
>> I will make it clear that this is an alpha release, not recommended for
>> production use and subject to change. But I think we need to start getting
>> feedback on the parts that are ready and having a release will help with
>> that.
>>
>> This release includes 119 bug fixes/improvements as outlined in the
>> changelog:
>>
>> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12351227
>>
>> Tag:
>> https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_1
>> Tag commit id: cbd5a526a7af9375858c8967adc1e32555cb91f7
>>
>> The artifacts to be voted on are located as follows (r63508).
>> Source release:
>> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/sources
>> Convenience binaries:
>> https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/distribution
>>
>> Release artifacts are signed with a key from the following file:
>> https://dist.apache.org/repos/dist/release/groovy/KEYS
>>
>> Please vote on releasing this package as Apache Groovy 5.0.0-alpha-1.
>>
>> Reminder on ASF release approval requirements for PMC members:
>> http://www.apache.org/legal/release-policy.html#release-approval
>> Hints on validating checksums/signatures (but replace md5sum with
>> sha256sum):
>> https://www.apache.org/info/verification.html
>>
>> The vote is open for the next 72 hours and passes if a majority of at
>> least three +1 PMC votes are cast.
>>
>> [ ] +1 Release Apache Groovy 5.0.0-alpha-1
>> [ ]  0 I don't have a strong opinion about this, but I assume it's ok
>> [ ] -1 Do not release Apache Groovy 5.0.0-alpha-1 because...
>>
>> Here is my vote:
>>
>> +1 (binding)
>>
>>


[VOTE] Release Apache Groovy 2.5.23

2023-08-18 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 2.5.23 release!

This release includes 2 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353077

Tag:
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_2_5_23
Tag commit id: a8f3b116afd969be3f06b1807371d976462d6a2c

The artifacts to be voted on are located as follows (r63511).
Source release: https://dist.apache.org/repos/dist/dev/groovy/2.5.23/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/2.5.23/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 2.5.23.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with
sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at least
three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 2.5.23
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 2.5.23 because...

Here is my vote:

+1 (binding)


[VOTE] Release Apache Groovy 3.0.19

2023-08-18 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 3.0.19 release!

This release includes 7 bug fixes/improvements as outlined in the changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353387

Tag:
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_3_0_19
Tag commit id: 1040cabcefe8e0776ca2d87e7a3f0ee2840dbf68

The artifacts to be voted on are located as follows (r63510).
Source release: https://dist.apache.org/repos/dist/dev/groovy/3.0.19/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/3.0.19/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 3.0.19.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with
sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at least
three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 3.0.19
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 3.0.19 because...

Here is my vote:

+1 (binding)


[VOTE] Release Apache Groovy 4.0.14

2023-08-18 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 4.0.14 release!

This release includes 15 bug fixes/improvements as outlined in the
changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12353386

Tag:
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_4_0_14
Tag commit id: 034b8f90052752c978c5454cc3b17b163c68ffec

The artifacts to be voted on are located as follows (r63509).
Source release: https://dist.apache.org/repos/dist/dev/groovy/4.0.14/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/4.0.14/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 4.0.14.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with
sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at least
three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 4.0.14
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 4.0.14 because...

Here is my vote:

+1 (binding)


[VOTE] Release Apache Groovy 5.0.0-alpha-1

2023-08-18 Thread Paul King
Dear development community,

I am happy to start the VOTE thread for a Groovy 5.0.0-alpha-1 release!

NOTE: We are not feature complete for Groovy 5. In the release notes,
I will make it clear that this is an alpha release, not recommended for
production use and subject to change. But I think we need to start getting
feedback on the parts that are ready and having a release will help with
that.

This release includes 119 bug fixes/improvements as outlined in the
changelog:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123=12351227

Tag:
https://gitbox.apache.org/repos/asf?p=groovy.git;a=tag;h=refs/tags/GROOVY_5_0_0_ALPHA_1
Tag commit id: cbd5a526a7af9375858c8967adc1e32555cb91f7

The artifacts to be voted on are located as follows (r63508).
Source release:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/sources
Convenience binaries:
https://dist.apache.org/repos/dist/dev/groovy/5.0.0-alpha-1/distribution

Release artifacts are signed with a key from the following file:
https://dist.apache.org/repos/dist/release/groovy/KEYS

Please vote on releasing this package as Apache Groovy 5.0.0-alpha-1.

Reminder on ASF release approval requirements for PMC members:
http://www.apache.org/legal/release-policy.html#release-approval
Hints on validating checksums/signatures (but replace md5sum with
sha256sum):
https://www.apache.org/info/verification.html

The vote is open for the next 72 hours and passes if a majority of at least
three +1 PMC votes are cast.

[ ] +1 Release Apache Groovy 5.0.0-alpha-1
[ ]  0 I don't have a strong opinion about this, but I assume it's ok
[ ] -1 Do not release Apache Groovy 5.0.0-alpha-1 because...

Here is my vote:

+1 (binding)


Re: removing dgm helper methods

2023-08-17 Thread Paul King
I created this issue to track that work:

https://issues.apache.org/jira/browse/GROOVY-11158

There are possibly still a few places where we use some classes directly
still. Also, we want to retain backwards compatibility, e.g.
libraries/plugins compiled on earlier versions should still work in Groovy
5. The exact meaning of "older versions" is open for debate I guess but I
am imagining 3.x and 4.x at least and there are certain caveats around what
"still working" would mean - we have a known breaking change wrt accessing
super classes. I expect there would be some classes we keep for that
purpose even if we deprecate and make sure we aren't still using them
directly.

On Thu, Aug 17, 2023 at 12:03 AM Jochen Theodorou  wrote:

> Hi,
>
> We have those dgm helper methods we generate at build time. They are
> originally used as part of the callsite caching to have less reflection
> for the invocation. Accordingly they are meta methods with an invoke
> method. But we are now using invokedynamic and for this we actually
> would need a MethodHandle instead.
>
> There is also dgminfo to consider, which is basically a serialized map
> version of our default groovy methods using DGM. I would keep that of
> course, but I think the old GeneratedMethod is maybe not the right thing.
>
> Do we want to do something in that area for Groovy 5?
>
> bye Jochen
>


  1   2   3   4   5   6   7   8   9   10   >