Груви опять улучшается

Груви опять улучшается

Guillaume Laforge (Гильом Лафорж?) — проект менеджер Groovy обявляет о выходе первой беты 1.6 Багфиксы и улучшения.

Среди прочего — очередное увеличение производительности. class lookup caches позволяют ускорить компиляцию. Причем, чем больше проект, теб явственнее эти ускорения. И вообще, по словам менеджера, последние 10 месяцев команда делала сильный упор на производительность и добилась успехов в микробенчмарках от 150 до 460% увеличения скорости

Кроме увеличения скорости - некоторые новые фичи:

Множественные присваивания

def listOfN(numOfElem) { 0..numOfElem }

def a, b

// variables will contain each successive element of the list
// and variables beyond the count of elements will be null

[a, b] = listOfN(0) // a list of one element
assert a == 0
assert b == null

// if there are more elements, they won't be assigned to any variable
[a, b] = listOfN(9) // a list of ten elements
assert a == 0
assert b == 1

// and you can swap variables with this notation
[a, b] = [b, a]
assert a == 1
assert b == 0

то есть, то, чем хвастались апологеты Ruby. По мне — вещь красивая, но редко нужная.

AST Transformations

Не очень понимаю, что это такое, так как далек от явы. Слово авторам:

When the Groovy compiler compiles Groovy scripts and classes, at some point in the process, the source code will end up being represented in memory in the form of a Concrete Syntax Tree, then transformed into an Abstract Syntax Tree. The purpose of AST Transformations is to let developers hook into the compilation process to be able to modify the AST before it is turned into bytecode that will be run by the JVM. Using annotations to decorate certain classes, fields or methods, a transformation can be applied to the AST of these elements.

A concrete example of the kind of transformations we can achieve with AST Transformations is the new @Bindable annotation. This is particularly useful if you are a Swing developer. See this example:

class MyBean {
    @Bindable String prop
}

When you decorate a field with @Bindable, property change listener methods will be transparently added to the bytecode of the class, so that you are able to monitor changes to the value of this field without having to manually write those methods yourself. No need to create an addPropertyListener() and removePropertyListener() method anymore, to fire property change events manually in your property setters, etc.

Определение аннотаций на groovy

Groovy поддерживает аннотации давно, но ранее определения аннотаций могли были быть написаны только на java. Теперь можно и на groovy.

Авторы просят тестировать бету и делать enjoy

 

 

Комментарии (0)

mem: 1162 total: 11 module: 5 xsl: 3