Мы рады анонсировать GraalVM 19.1! Этот выпуск включает новые функции, улучшения совместимости и исправления ошибок по сравнению с линейкой 19.0. Загрузите его здесь, опробуйте и поделитесь с нами отзывами!

Как и в предыдущем выпуске, основная загрузка содержит виртуальную машину Java, совместимую с Java SE 8 (1.8.0_212), реализацию Node.js (v10.15.2), реализацию JavaScript (ECMAScript 2019) и среду выполнения битового кода LLVM. (6.0.0). Необязательные компоненты можно добавить с помощью следующей команды:

gu install native-image ruby R python

Подробные примечания к выпуску можно найти здесь. Давайте погрузимся в основные улучшения GraalVM 19.1, а затем обсудим более подробную информацию о схеме управления версиями.

Компиляция быстрее

Одной из проблем систем JIT-компиляции является необходимость сделать этап компиляции как можно более быстрым. Недавно мы проанализировали пример рабочей нагрузки, в которой GraalVM в режиме JIT используется для запуска инструмента сборки Scala sbt для компиляции свежего извлечения из репозитория Apache Spark. Рабочая нагрузка длится чуть больше 3 минут. Глядя на активность потоков своевременной компиляции GraalVM с Java Mission Control, мы видим, что они заняты в течение всего выполнения:

Когда оптимальный машинный код, наконец, готов к выполнению, рабочая нагрузка уже завершена. Более ранняя установка этого машинного кода имеет решающее значение для ускорения работы таких программ средней длины. Поэтому мы внесли несколько улучшений для увеличения скорости своевременной компиляции. В частности, теперь мы используем оптимизацию на основе профиля при создании образа в машинном коде для самого компилятора. Кроме того, мы улучшили эвристику наших оптимизаций, чтобы сделать их менее требовательными к вычислениям. Результат почти в два раза выше скорости компиляции:

Теперь рабочая нагрузка заканчивается на ~ 30% меньше процессорного времени, потребляемого нашими компиляциями. Наличие более качественного машинного кода, доступного ранее, сокращает общее время выполнения рабочей нагрузки на 13%. Это важное улучшение для программ средней продолжительности.

Управление версиями

Поскольку проект GraalVM быстро развивается и состоит из множества различных компонентов, нам было нелегко найти подходящую схему управления версиями. GraalVM как проект многоязычной виртуальной машины хотел бы быстро двигаться вперед и охватывать потребности всех поддерживаемых языков. Мы хотим, чтобы выпуски были частыми, чтобы разработчики могли пользоваться последними улучшениями и пробовать новейшие функции.

В настоящее время существует одна ветвь выпуска GraalVM: 19. В следующем году мы выпустим GraalVM 20, через год после GraalVM 21 и так далее. В течение года будет несколько релизов из основной линейки проекта: 19.1, 19.2, 19.3 и так далее. Планируется выпускать эти выпуски примерно каждые 3 месяца и следить за обновлениями платформ, от которых зависит GraalVM: OpenJDK, Node.js, LLVM, Ruby, R, Python.

Эти выпуски будут построены из основных и будут включать последние версии. Мы намерены сделать процесс обновления плавным и только постепенно вводить новые функции. Это означает, что сначала необходимо внести серьезные изменения в экспериментальный флаг, а только потом включить этот флаг по умолчанию. Это позволяет нам поддерживать высокую скорость проекта, в то же время позволяя пользователям заранее настраиваться.

Помимо этих основных выпусков, мы будем создавать выпуски обновлений, которые включают только важные исправления ошибок и обновления безопасности. Такие выпуски обновлений мы создаем для последнего основного выпуска и выделяем их третьей цифрой. Например, недавно мы выпустили обновление 19.0.2 для основного выпуска 19.0. Текущий план состоит в том, чтобы включить более долгосрочную поддержку для последнего выпуска года, поэтому 19.3 (или 19.4) будет получать обновления после выпуска 20.0. Мы работаем над публикацией календаря выпусков с точными датами, чтобы пользователи могли планировать заранее.

Перспективы

Ждем отзывов об этом выпуске. В то же время мы продолжаем двигаться вперед и уже рады работе над следующей версией GraalVM 19.2.

Иди скачай GraalVM и создавай!