Почему не вызывается динамический по умолчанию в Groovy? - PullRequest
0 голосов
/ 11 мая 2018

Groovy добавил опцию --indy в версии 2.0 еще в 2012 году. В то время это не было значением по умолчанию, поскольку invoke dynamic требовала Java 7, и многие в то время использовали Java 6.

Теперь даже в предстоящем Groovy 3.0 по-прежнему требуется параметр --indy, чтобы заставить его использовать invoke dynamic. Это несмотря на то, что Groovy 3.0 требует Java 8 или новее.

Есть ли какое-то техническое преимущество в том, что по умолчанию компиляция выполняется не для indy, а библиотеки времени выполнения по умолчанию не являются indy? Я бы подумал, что в настоящее время нет нужды даже иметь не-инди-опцию.

1 Ответ

0 голосов
/ 14 мая 2018

Наличие --indy по умолчанию включено в план развития Groovy 3.0 (в настоящее время в альфа-версии).Команда хотела получить отзывы о новом парсере, поэтому не дождалась доступности всех функций, прежде чем выпускать альфа-версии.

Компилятор Groovy 3.0, вероятно, сохранит неиндийский вариант какого-либо типа для версии илидва, чтобы помочь людям, желающим перекомпилировать старые библиотеки и создать одинаковый байт-код.

В настоящее время существуют некоторые примитивные оптимизации обработки при создании неиндицированного байт-кода.Очень ранние тесты (на довольно старых JVM сейчас) показали некоторое снижение производительности, так как индийский байт-код не имел тех же оптимизаций.Также на дорожной карте для 3.0 стоит пересмотреть производительность в этих конкретных случаях с целью рассмотрения возможных оптимизаций, если они все еще необходимы.

Точная специфика того, потребуются ли некоторые не-indy jar для версии илидва зависят от некоторых других параллельных изменений, чтобы удалить некоторые устаревшие классы, которые на самом деле не нужны для случая indy, но которые потребуются для запуска всех существующих библиотек, написанных в Groovy.Это будет подробно описано в документации и примечаниях к выпуску после завершения.

Есть еще некоторые подробности в [1].

[1] http://groovy.markmail.org/thread/yxeflplf5sr2wfqp

...