Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Groovy 2.1

Groovy 2.1 is the next version after 2.0.latest stable version of Groovy.

Feature set

  • offers full support for the JDK 7 “invoke dynamic” bytecode instruction and API for improved performance,
  • goes beyond conventional static type checking capabilities with a special annotation to assist with documentation and type safety of Domain-Specific Languages,
  • adds static type checker extensions,
  • provides additional compilation customization options,
  • features a meta-annotation facility for combining annotations elegantly.

...

  • Groovy 2.1 beta: end of December 2012 (tick)
  • Groovy 2.1 RC: early January 2013 (tick)
  • Groovy 2.1 final: end of January 2013 (tick)

Groovy 2.2 (Q3 2013)

Feature set for consideration

  • Class-loading-less compilation 
    • using ASM when needed, to avoid loading/initializing classes needed during the compilation
  • Stub-less joint compilation
    • to avoid various problems with the stubs and the various compilation phases
  • Static traits or mixins
    • but dependent on stub-less joint compilation issues

Groovy 3.0 (

...

Q1 2014)

Feature set for consideration

  • New Meta-Object Protocol dedicated to fully leverage "invoke dynamic"
  • Rewrite the Groovy grammar from scratch with Antlr 4 (moved to Groovy 4)
  • Retrofitting Groovy closures to accommodate JDK 8 upcoming closures for interoperability

Groovy 4.0 (

...

Q1 2015)

Feature set

...

for consideration

  • No concrete plans at the moment

Other topics we could consider for later Groovy

  • add static "trait" capabilities
  • compiler related:
    • investigate the integration of the Eclipse joint compiler to replace the Groovy stub-based joint compiler
    • investigate making the groovyc compiler multithreaded
    • Incremental compiler
  • a treturn keyword or dedicated AST transformation for tail calls for closures and methods
  • Incremental compiler
  • Improved runtime performance
  • ability to pass expression trees / AST nodes as parameters (see C# 4's own expression tree)
  • lexical categories
  • a symbol concept, a bit like Ruby's :symbol, or like Java interned strings
  • co-routines and/or generators
  • tail-call recursion
  • pattern matching
  • parser combinators
  • a native template engine compiling to AST (faster, correct line numbers for error reporting, optimized outputting, etc.)
  • ...