Blog

Blog

Groovy 1.8 RC 4 released

Hi all,

The Groovy development team is pleased to announce the release of Groovy 1.8-RC-4.

The main reason for doing another RC release is to address some important bugs:

As usual you can download Groovy-1.8-RC-4 here: http://groovy.codehaus.org/Download

The full release notes can be found here: http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10242&version=17245

Thanks a lot for helping to make 1.8.0 a solid release.


Jochen "blackdrag" Theodorou
The Groovy Project Tech Lead http://blackdragsview.blogspot.com/
For Groovy programming sources visit http://groovy.codehaus.org

It is this time of the year: GR8Conf Europe 2011 is ready to rock the Groovy world!

Register now to save €300 with the Early Bird rate!

Three days packed with Groovy, Grails, Griffon, Gradle, Spock, GPars, Gaelyk, AST transformations, GContracts, Grails Plugins development, and lots of other gr8 stuff.

This year, the conference is growing. We kick of the conference with a university day, with two tracks, one intermediate and one advanced, with workshops and hands-on training:

  • The intermediate will kickstart your Groovy and Grails development skills with a Groovy workshop, followed by a Grails workshop.
  • The advanced track will feature an AST transformations workshop, followed by a Grails plugin development workshop.

Note: The university day is optional, if you only want to attende the two main conference days.

The conference agenda will feature updates from Groovy, Grails, Griffon, Gradle, Spock and others, by the founders and developers of these tools and frameworks.

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 be case studies from various companies, telling about real life projects, and there will be lots of sessions covering various topics in the Groovy ecosystem. To cram this in to two days, the conference is going to be two-tracked, compared to the previous editions.

To top it off, we feature Hackergarten — 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 in Copenhagen, Denmark, on May 17th-19th.

You can benefit from the interesting Early Bird rate until April 14th and save €300! That’s a bargain you shouldn’t miss!

Register at http://gr8conf.eu now!

We’re looking forward to meeting you there!

Follow us on twitter: @gr8conf

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.

You can download Groovy 1.7.10 and Groovy 1.8-RC-3 here:http://groovy.codehaus.org/Download

And have a look at the JIRA release notes:

Thanks a lot for continuing your test-driving of the 1.8 release candidate!

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.

You can download Groovy 1.7.9 and Groovy 1.8-rc-2 here:
http://groovy.codehaus.org/Download

And have a look at the JIRA release notes:

Thanks for your help test driving that Release Candidate.

The Groovy development team is pleased to tell you about the first release candidate of Groovy 1.8.

We'd appreciate if you could please test this release with your application, to report any issue or regression you may find.
Your help is needed and will be very much appreciated.

You can download Groovy 1.8-rc-1 here:http://groovy.codehaus.org/Download

And have a look at the JIRA release notes:http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10242&version=17132

Thanks for your help test driving that Release Candidate.

The Groovy development team is pleased to announce the joint release of Groovy 1.7.7 and Groovy 1.8-beta-4, the latest releases of the popular dynamic language for the JVM.

Groovy 1.7.7 is a maintenance release of our official stable 1.7.x branch, whereas 1.8-beta-4 is the last beta version before the release candidates of the upcoming major version of Groovy.

The key highlights of the latest beta are:

  • our ongoing performance improvement work on primitive integer calculations,
  • the bundling of GPars in the libraries of the binary distribution,
  • and built-in JSON support with a JSON slurper and a JSON parser

If you wish to learn more about the JSON support, you can have a look at the JSON Groovy Extension Proposal and the unit tests for the slurper and the builder.

Here's an example for the JSON slurper, fetching tweets from Twitter about the #groovy hashtag:

And another example showing how you can create JSON payloads with the JSON builder:

You can download and read about the JIRA release notes here:

Groovy 1.7.7

Groovy 1.8-beta-4

You may wish to have a look at the recent features introduced in previous betas by reading the following release notes:

  • Groovy 1.7.6 and 1.8-beta-3 : new AST transformations, closure memoization and trampolining, etc.
  • Groovy 1.7.5 and 1.8-beta-2 : closure composition, new Domain-Specific Language syntax, etc.
  • 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!

Gaelyk 0.6 released

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.

One sign that Groovy has entered main-stream is the
raising availability of regular training events.

Main provides of such training events are
SpringSource, SkillsMatter (UK), and LinuxHotel (Germany),
which provide regular, quarterly events.

Please find more information on the respective
Wiki Page

--Dierk Koenig

Hi all,

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" (smile)

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.

Thanks a lot to all those who contributed to this release!

Looking forward to your feedback, and keep on groovying!

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:

def plus2  = { it + 2 }
def times3 = { it * 3 }

def composed1 = plus2 << times3
assert composed1(3) == 11
assert composed1(4) == plus2(times3(4))

def composed2 = times3 << plus2
assert composed2(3) == 15
assert composed2(5) == times3(plus2(5))

// reverse composition
assert composed1(3) == (times3 >> plus2)(3)

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

I've blogged about extended command expressions already, if you want to have some additional examples of sentences you can write, and you can have a look at the various examples published on the Groovy Web Console which also demonstrate how to construct such DSLs.

You can have a look at the JIRA release notes:

You can download those Groovy versions from the download area. And as usual, the artifacts will be sync'ed up with Maven's central repository.

Thanks a lot to everybody involved in those new releases.

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.

It contains the Groovy 1.7.4 Binaries, API Docs and a PDF snapshot of the Wiki, the native launcher, easyb 0.9.7, Gaelyk 0.4, Gant 1.9.3, GMock 0.8.0, GPars 0.10, Griffon Builders (0.3.0 compatible), GroovyServ 0.3, Scriptom 1.6.0, Spock 0.4. The installation of everything but the binaries including the native launcher is optional.

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

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.

You can have further details on Groovy 1.7.4 in the JIRA release notes.

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$$ $//$
  • new GDK methods like Map.countBy{}, Map.collectEntries{}, Date.putAt() (subscript operator), Date.updated()
  • + 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!

Groovy 1.6.9 released

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.

You can download Groovy 1.6.9 at the usual place: http://groovy.codehaus.org/Download

And find the JIRA release notes here: http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10242&version=16236

Thanks a lot for your attention, and have fun with Groovy!

Particular thanks to Paul and Roshan for resolving the issues surrounding the JDK 1.4 "retrotranslation" issues we've had.

Groovy 1.7.3 available

Time for a new release!
Groovy 1.7.3 is out, on the shelves, ready to be unleashed in your projects!

You can download Groovy at the usual place:
http://groovy.codehaus.org/Download
(Note that you can also live on the edge these days, as we now publish regular snapshots of Groovy 1.7 and 1.8 automatically, as explained further down on the Download page)

You can look at the JIRA release notes here:
http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10242&version=16356

In particular, you may be interested in the following new features:

  • new AST transformations, like @Synchronized (safer use of synchronization) and @InheritConstructors (nice for inheriting Exception constructors)
  • first() / last() / head() / tail() methods on arrays for consistency with lists (primitive arrays not covered yet)
  • some BigDecimal handling improvements for better results on some edge cases calculations
  • an update to the static imports for properties
  • new method on Date so you can do cal[DAY_OF_WEEK] = MONDAY
  • new String handling methods, like capitalize(), UNIX's tr(), expand()/unexpand(), as well as stripIndent() and stripMargin()
  • a nice Groovy icon for the Groovy Swing Console on Mac OS X

Thanks a lot to everybody for their feedback, contributions, and their support towards this release!

Tellurium 0.7.0 is released

Tellurium is an automated web testing framework. Tellurium was started in June 2007 as an internal project and became an open source project on Google Code in June 2008. The key techniques include Groovy, Groovy Grape, jQuery, Selenium, Antlr 3 parser generator, JUnit, TestNG, and Maven. Tellurium 0.7.0 is a milestone release and it is the outcome of one year's hard work. Today, we are happy to announce the release of Tellurium 0.7.0. Over 250 issues and tasks are closed for 0.7.0 with many bug fixes and feature enhancements.

New Features

  • Santa Algorithm: The Santa algorithm is the missing half of the Tellurium UI module concept. The algorithm can locate the whole UI module at the runtime DOM. After that, you can just pass in UI element's UID to find it in the cached UI module on Tellurium Engine. That is to say, you don't need Tellurium Core to generate the runtime locators any more.
  • Macro Command: Macro Command is a set of Selenium commands that are bundled together and sent to Selenium Core in one call. This will reduce the round trip latency from Tellurium Core to Engine and thus, improve the speed performance. Another advantage for Macro Command is that Tellurium Engine can reuse the locator because many times the commands in the same bundle act on the same UI element or same sub-tree in the DOM.
  • UI Module Caching: From Tellurium 0.6.0, Tellurium provides the cache capability for CSS selectors so that Tellurium can reuse them without doing re-locating. In 0.7.0, Tellurium moves a step further to cache the whole UI module on the Engine side. Each UI module cache holds a snapshot of the DOM references for the UI elements in the UI module.
  • Tellurium New APIs: Tellurium Engine in 0.7.0 re-implemented a set of Selenium APIs by exploiting jQuery, plus many more new APIs.
  • Trace: Tellurium 0.7.0 provides built-in support for the command execution time including execution time for each command, total run time, and aggregated times for each command.
  • UI Module Live Show: The show command is used to show the UI module that you defined on the actual web page. The UI module on the web page is outlined and if a user hives over the UI module, the UIDs of the selected UI element's and its ancestors' are shown as a tooltip.
  • I18n support: Tellurium now provides support for internationalization of strings and exception messages. Internationalized strings for each locale is provided through a MessageBundle for a specific locale which is of the format <MessageBundleName><language-code><country code>.properties.
  • The Tellurium UID Description Language(UDL): used to address the dynamic factors in Tellurium UI templates and increase the flexibility of Tellurium UI templates.

How to Obtain Tellurium 0.7.0

Tellurium 0.7.0 tar ball can be downloaded fromhere. You can also find Tellurium udl, Tellurium Core, and custom selenium server from the following Maven repositories, respectively.

http://maven.kungfuters.org/content/repositories/releases/org/telluriumsource/tellurium-udl/0.7.0/

http://maven.kungfuters.org/content/repositories/releases/org/telluriumsource/tellurium-core/0.7.0/

http://maven.kungfuters.org/content/repositories/thirdparty/org/seleniumhq/selenium/server/selenium-server/1.0.1-te3/

If you Tellurium Maven archetypes, you can use the following command to create a Tellurium JUnit test project.

mvn archetype:create -DgroupId=your_group_id -DartifactId=your_artifact_id \
-DarchetypeArtifactId=tellurium-junit-archetype \
-DarchetypeGroupId=org.telluriumsource -DarchetypeVersion=0.7.0 \
-DarchetypeRepository=http://maven.kungfuters.org/content/repositories/releases

Similarly, use the following Maven command for a Tellurium TestNG project,

mvn archetype:create -DgroupId=your_group_id -DartifactId=your_artifact_id \
-DarchetypeArtifactId=tellurium-testng-archetype \
-DarchetypeGroupId=org.telluriumsource -DarchetypeVersion=0.7.0 \
-DarchetypeRepository=http://maven.kungfuters.org/content/repositories/releases

Feedback

Please report any problems back to Tellurium User Group at

http://groups.google.com/group/tellurium-users

and follow Tellurium on Twitter for any the latest update.

Tellurium Team is looking for new open source contributors to join our team and read the wiki Tellurium Calls for Open Source Contributors for more details.

Thanks,

Tellurium Team