Blog

The Windows-Installer for Groovy 1.8.0 can now be downloaded from the Groovy Website ( direct link). It takes care of the gory details of a Windows installation, copying files, setting environment variables and file associations. The installation of everything but the binaries including the native launcher is optional.

This is the first release to contain groovy++. Also, this installer does not contain the Griffon builders since the necessary changes to run under 1.8 weren't possible in time for the release. The next installer (1.8.1) will contain them again. Finally, since GPars is now part of the core distribution it is always installed, and is no longer provided as a module.

Currently supported languages for the installer are english, german, spanish, french and brazilian portuguese.

The Groovy development team is really pleased and proud to announce the release of the final version of Groovy 1.8.0!

After a lot of work and efforts throughout four betas and four release candidates, version 1.8 of Groovy has been long in the making, but is packed with tons of new features and enhancements, for your productivity, and your pleasure. In particular, you'll be happy to learn about:

To get all the details, with code samples, we have prepared an in-depth release notes document. Please have a look at it to learn more about the features listed above, and discover other smaller enhancements as well.

You can download Groovy 1.8 in our download section and you can have a look at the list of JIRA tickets that have found their way into this major release.

We'd like to thank all those who participated and contributed to this release: users, contributors, committers, framework writers, IDE developers, book authors. Without you all, Groovy wouldn't be the great productive language it is now. And again, without you all, Groovy wouldn't be surrounded by its vibrant, active and rich ecosystem, giving you advanced tools and frameworks for building web applications (Grails, Gaelyk) or rich desktop applications (Griffon), for building your own projects (Gradle), for testing your projects (Spock, Geb), for tackling the concurrency and parallel problems on our multi-core / multi-processor architectures (GPars), or for improving the quality of your Groovy code bases (CodeNarc for static code analysis, GContracts for design by contract).

You will learn all about those groovy-powered project of the ecosystem from the horse’s mouth. If you want to meet and chat with guys like Guillaume Laforge, Jochen “blackdrag” Theodorou, Paul King, Dierk König and Hamlet D’Arcy (Groovy), like Andres Almiray (Griffon), like Peter Ledbrook and Burt Beckwith (Grails), like Peter Niederwieser (Gradle and Spock), or Václav Pech (GPars), and many more, this is the best opportunity for you to interact with the gang!

There will becase studiesfrom various companies, telling aboutreal life projects, and there will belots of sessionscovering various topics in the Groovy ecosystem. To cram this in to two days, the conference is going to betwo-tracked, compared to the previous editions.

To top it off, we featureHackergarten— an open event, where you can come and hack your favorite Open Source project. You can attend even if you are not a conference attendee!

The conference takes place inCopenhagen, Denmark, onMay 17th-19th.

You can benefit from the interestingEarly Birdrate untilApril 14thandsave €300! That’s a bargain you shouldn’t miss!

The Groovy development team is pleased to announce the joint releases of Groovy 1.7.10 and Groovy 1.8-RC-3.

Due to some hiccup during the release process, not all the fixes we had intended to bundle were part of the 1.7.9 release, so this newer drop fills the gap and brings back all the changes we had previously announced. And on the front of the Groovy 1.8-RC-3 release, we fixed a potential synchronization issue that may affect users of ExpandoMetaClasses. Those two releases are basically just bug-fix releases.

The Groovy development team is pleased to announce the joint releases of Groovy 1.7.9 and the second release candidate for Groovy 1.8.

In those two releases, we essentially focused on bug fixes.

We'd appreciate if you could test this release candidate with your applications, to report any issue or regression you may find.
Your help is needed and will be very much appreciated.
Unless critical bugs or regressions are found, this second RC should be the last before the final release in a couple of weeks from now.

Groovy 1.7.4 and 1.8-beta-1 : new AST transformations, annotation closure parameters, etc.
We'd be glad of you could test the Groovy 1.8 beta to give us as much feedback as you can on this release, before it becomes the new official stable branch of Groovy. Thanks a lot for your help making the 1.8 release a success and for your invaluable feedback. We'd love that everybody try the latest beta in their respective applications, so we can find any regression or potential issue that may arise.

Thanks a lot to all involved in this pair of releases, and for the support of our friendly community!

A new important milestone of the Gaelyk toolkit for Google App Engine has been released, with version 0.6. This is an important release in terms of quality, features and documentation.

Gaelyk is a lightweight toolkit developped in Groovy, letting you develop applications for the Google App Engine cloud using the Groovy programming language.

Make sure to have a look at the release notes in the download section. You'll be able to appreciate a list of existing Gaelyk apps in the wild on the front page. You will be happy to browse the documentation as a PDF or as asingle-page ready to print. And you will be able to search through the documentation, the Google Group, and the GitHub hosting site for the latest code activity and feature requests and bug reports, thanks to Google's integrated search.

The Groovy development team is pleased to announce the releases of Groovy 1.7.6 and 1.8-beta-3.

Groovy 1.7.6 is mainly a bug-fix release, whereas 1.8-beta-3 offers some interesting new features and capabilities, especially a preview of performance for primitive operations.

You can have a look at the JIRA release notes for Groovy 1.7.6 and Groovy 1.8-beta-3.

The key highlights for the new beta of our upcoming Groovy 1.8 release:

extended command expressions can be used on the right-hand side of assignments

the @Log AST transformation is customizable for your own logging needs

Map now has an isCase() method

a @GrabResolver shortcut with @GrabResolver("http://some/url")

String can be coerced to Enums ("blue" as Color)

support for closure memoization and trampoline

@ThreadInterrup, @ConditionalInterupts and @TimedInterrupt AST transformations for stopping the execution of embedded scripts

min() / max() methods on maps (on values)

ability to store node metadata in AST nodes, for use in your AST transformations

But beyond those new features, a key aspect of the new beta is a first batch of performance improvements related to primitive int handling.
Currently, most int based operations are optimized to use primitive arithmetics bytecode.
So when a lot of int calculations is involved, you should see some interesting improvements.
Later on, we'll obviously add support for the other primitive types, and find other areas to improve as well.

As usual, you'll find the download information on the Groovy download page.
The Maven artifacts may be delayed a little as we have issues with their upload on the Codehaus infrastructure, but hopefully it'll be resolved rapidly, and the binary distributions should be up shortly if not already there when I hit "send"

We're very interested in hearing about your feedback on the Groovy 1.8 beta, as it contains some experimental code regarding performance improvements for primitive int arithmetics, and we would love to have a maximum of users trying these new aspects, to iron out all the possible issues that may surface.

The Groovy development team is happy to announce the joint release of Groovy 1.7.5 and Groovy 1.8-beta-2.

Both releases contain several bug fixes and minor improvements, but I'd particularly like to highlight two new features of Groovy 1.8-beta-2: closure composition and the new extended DSL capabilities. Make sure to have a look at the new features from the previous beta of 1.8 too, if you haven't had a chance so far.

If you recall your math lessons, function composition may be a concept you're familiar with. And in turn, closure composition is about that: the ability to compose closures together to form a new closure which chains the call of those closures. Here's an example of composition in action:

To see more examples of closure composition and reverse composition, please have a look at our test case.

Groovy 1.8-beta-2 features the great work of our Google Summer of Code student, Lidia Donajczyk, who worked on an extension of the command expression notation (also known as GEP-3 / Extended Command Expressions). In a nutshell, Groovy allows you to omit dots and parentheses for chained methods calls, so that such calls look more like natural language sentences.

A few sentences this new DSL capability will allow you to write:

move left by 30.centimeters
sell 100.shares of MSFT
take 2.pills of chloroquinine in 6.hours

The Windows-Installer for Groovy 1.7.4 can now be downloaded from the Groovy Website (direct link). It takes care of the gory details of a Windows installation, copying files, setting environment variables and file associations.

This is with great pleasure that the Groovy development team is happy to announce the joint releases of Groovy 1.7.4 and Groovy 1.8-beta-1!

Groovy 1.7.4

Groovy 1.7 is our official stable branch, and 1.7.4 is a new minor release of that breed.

Among other things, we fixed a few issues with automatic reloading when using the GroovyScriptEngine, with the joint compiler, with some minor syntax issues with Enums. We added a few new GDK methods like File.renameTo(String path), minus and intersect for sets, etc. And we have new option in the Groovy swing console to compile scripts -- versus running them right away.

Groovy 1.8-beta-1

Groovy 1.8-beta-1 is the first drop of what the next major version of Groovy will be -- we plan on releasing 1.8-final at the end of the year.

From a practical Groovy developer perspective, we've decided to move to Gradle for our build, thanks to the help of Hans Dokter. This release was still done with Ant, but our final build should be ready soon for prime-time, and we're also seizing this opportunity to work in parallel on making Groovy more modular. Some early work towards more granular Groovy JAR(s) have already started on modules for JMX and BSF, as first experiments.

In this first beta, we obviously included all the bug fixes and minor enhancements from the 1.7 branch. And we've been working on new features as well:

closures are now "callable" (inheriting from java.util.concurrent.Callable)

new AST transformations like

@Log to inject a logger in your classes

@ScriptField for creating a field in a script (should be renamed to @Field in the next beta)

@PackageScope now working also on methods and classes (not just fields as before)

@Synchronized for providing safer synchronization semantics

@InheritConstructors to inherit constructors, like often the case when extending exception classes

@IndexedProperties to add JavaBeans indexed property support

@AutoClone providing automatic cloning support to your beans

@AutoExternalize providing automatic externalization of your POGOs

@Canonical adding proper equals(), hashCode(), toString() methods

@EqualsAndHashCode adding an equals() and hashCode() method

@ToString for creating a default readable toString() method

@TupleConstructor for adding a tuple constructor

an additional syntax for strings, with $/.../$, to circumvent various escaping corner cases, like for example $/a/b\c$$ $//$

+ obviously all other incremental improvements and new features from the Groovy 1.7 branch like

the new String methods like tr(), stripMargin(), stripIndent(), (un)expand(),

Map's withDefault{} method,

Closure's ncury() and rcury()

Sql's withBatch{} and withTransaction{}

A feature I'd also like to highlight in particular is "closure annotation parameters". In Java, there's a limited set of types you can use as annotation parameters (String, primitives, annotations, classes, and arrays of these). But in Groovy 1.8, we're going further and let you use closures as annotation parameters – which are actually transformed into a class parameter for compatibility reasons.

Closure annotation parameters open up some interesting possibilities for framework authors!
You can have a look at the JIRA release notes for Groovy 1.8-beta-1.

You can download Groovy 1.7.4 and Groovy 1.8-beta-1 in the download section of the Groovy website.

Thanks a lot to everybody for their contributions and involvement in those two new milestones!

After Groovy 1.7.3 on Monday, this is time to release Groovy 1.6.9 as well.

Groovy 1.6.9 will be the last version of the Groovy 1.6.x branch, and we'll now focus on the 1.7.x and Trunk branches from now on.

The key highlight of this release is the JDK 1.4 support, as Groovy 1.6.8 had issues running on JDK 1.4. Fortunately, this is fixed now, and 1.6.9 is the last version of Groovy running on that old JDK.

I advise all those still on 1.6.x and JDK 1.4 to upgrade rapidly to a newer JDK, as even JDK 5 has been end-of-lifed recently.