...
- possible syntax alignments for the new grammar
- decide if to make the new MOP for Groovy3, or only the grammar
- more indy enhancements in final, 2.1?
- compatibility layer for things like ArrayUtil, old power asserts
- using modules for that to keep the old classes around
"true" named parameters- traits
stream / lazy / for comprehensions / generatorsex from Tim, http://blog.bloidonia.com/post/22117894718/groovy-stream-a-lazy-generator-and-list-comprehensionalso check what's happening in JDK 8's lambdas with regards to the lazy collection API additions
joint compilation with the Groovy Eclipse compileralso problem of reflection usage which seems to impact Gradle users
- pattern matching
- how to better engage the community so as to get more contributions and more active contributors
- for ex. some kind of bug parade with low-hanging fruits for people to get a foot in the project
- documentation / specification discussion
\@DelegatesTo to define closure delegates (nice for code completion and static analysis) GROOVY-5455- further modularity steps
- static type checking improvements with regards to closure parameter type information
- changes and/or additions regarding curry / curried
- see mailing-list dicussion
...
- generators / for comprehensions / continuation-passing / etc brainstorming
- also see Tim's stream: http://blog.bloidonia.com/post/22117894718/groovy-stream-a-lazy-generator-class-for-groovy
- but wait for JDK 8 new lazy stuff to mature to avoid reinventing the wheel or having two different implementations and notations for the same thing
- but we can play with some experimental extension module
// closure list
( print "hi" ; def s = 23 ; println s )
list.each(def sum = 0;){}
list.each {
@Xyz sum = 0
sum += 1
}
// using some annotation?
list.each @Sum({}) { }
list.each { @Xyz sum = 0, elem -> sum += elem }
for (int i = 0; i < 10; i++) { ... }
// for comprehension
{ x | x in 1..3 && x % 2 == 3 }
// some iterator transformation
def fib = [
state: [a: 0, b: 1],
next: {
state.a
}, hasNext: {
(state.a, state.b) = [state.b, state.a + state.b]
true
}] as Iterator
// python generator
def fib():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b
// again with some annotation
def fib = { @Xyz a = 0, @Xyz b = 1 ->
(a, b) = [b, a + b]
return a
}
...
