[ON] Релиз 19.3.0 виртуальной машины GraalVM и реализаций Python, JavaScript, Ruby и R на её основе

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Ответить
Аватара пользователя
rssbot
Бот
Сообщения: 6002
ОС: gnu/linux

[ON] Релиз 19.3.0 виртуальной машины GraalVM и реализаций Python, JavaScript, Ruby и R на её основе

Сообщение rssbot »

Компания Oracle опубликовала выпуск универсальной виртуальной машины GraalVM 19.3.0, поддерживающей запуск приложений на JavaScript (Node.js), Python, Ruby, R, любых языках для JVM (Java, Scala, Clojure, Kotlin) и языках, для которых может формироваться биткод LLVM (C, C++, Rust). Ветка 19.3 отнесена к категории выпусков с длительным сроком поддержки (LTS) и примечательна поддержкой JDK 11, в том числе с возможностью компиляции Java-кода в исполняемые файлы (GraalVM Native Image). Код проекта распространяется под лицензией GPLv2. Одновременно выпущены новые версии использующих GraalVM реализаций языков Python, JavaScript, Ruby и R - GraalPython, GraalJS, TruffleRuby и FastR.

GraalVM предоставляет JIT-компилятор, который может на лету выполнять в JVM код любых скриптовых языков, включая JavaScript, Ruby, Python и R, а также даёт возможность запускать нативный код в JVM, преобразованный в биткод LLVM. Предоставляемый GraalVM инструментарий включает независимые от языков программирования отладчик, систему профилирования и анализатор распределения памяти. GraalVM даёт возможность создавать комбинированные приложения с компонентами на разных языках, позволяя обращаться к объектам и массивам из кода на других языках. Для языков на базе JVM имеется возможность создания скомпилированных в машинный код исполняемых файлов, которые можно выполнять напрямую с минимальным потреблением памяти (управление памятью и потоками реализовано через подключение фреймворка Substrate VM).

Изменения в GraalJS:
  • Обеспечена совместимость с Node.js 12.10.0;
  • Отключены по умолчанию нестандартные глобальные свойства и функции: global (заменено на globalThis, для возвращения предусмотрена настройка js.global-property), performance (js.performance), print и printErr (js.print);
  • Реализованы Promise.allSettled и nullish coalescing proposal, которые доступны в режиме ECMAScript 2020 ("--js.ecmascript-version=2020");
  • Обновлены зависимости ICU4J до 64.2, ASM до 7.1.





Изменения в GraalPython:
  • Добавлены заглушки gc.{enable,disable,isenabled}, реализованы charmap_build, sys.hexversion и _lzma;
  • Обновлена стандартная библиотека Python 3.7.8;
  • Добавлена поддержка NumPy 1.16.4 и Pandas 0.25.0;
  • Добавлена поддержка timeit;
  • socket.socket доведён до состояния, позволяющего запускать "graalpython -m http.server" и загружать нешифрованные (без TLS) http-ресурсы;
  • Исправлены проблемы, связанные с выводом объектов pandas.DataFrame, некорректной обработкой кортежей в bytes.startswith, деструктурирующим присвоением итераторов и использованием dict.__contains__ для словарей;
  • Добавлена поддержка ast.PyCF_ONLY_AST, которая позволила обеспечить работу pytest;
  • Добавлена поддержка PEP 498 (интерполяция строк в литералах);
  • Реализован флаг "--python.EmulateJython" для импорта JVM-классов с помощью нормального Python-синтаксиса import и ловли JVM-исключений из кода на Python;
  • Улучшена производительность парсера, кеширования исключений, доступа к объектам Python из JVM-кода. Улучшены результаты в тестах производительности для кода python и нативных расширений (исполнение нативных расширений поверх llvm подразумевает, что bitcode llvm передаётся GraalVM для JIT-компиляции).





Изменения в TruffleRuby:
  • Для компиляции нативных расширений теперь применяется встроенный инструментарий LLVM, создающий и нативный код, и биткод. Это значит, что больше нативных расширений должны компилироваться из коробки, позволяя решить большинство проблем, связанных с компоновкой;
  • Отдельная установка LLVM для установки нативных расширений в TruffleRuby;
  • Для установки C++ расширений на TruffleRuby теперь не требуется установка libc++ и libc++abi;
  • Лицензия обновлена до EPL 2.0/GPL 2.0/LGPL 2.1, как и в недавнем JRuby;
  • Добавлена поддержка опциональных аргументов в GC.stat;
  • Реализован метод Kernel#load с обёрткой и Kernel#spawn с :chdir;
  • Добавлен rb_str_drop_bytes, замечательный тем, что его использует OpenSSL;
  • Включены расширения предустановленных gem-ов, нужные для rails new в Rails 6;
  • Для компиляции нативных расширений задействованы флаги, как в MRI;
  • Внесены оптимизации производительности и сокращено потребление памяти.





Изменения в FastR:
  • Обеспечена совместимость с R 3.6.1;
  • Добавлена предварительная поддержка исполнения нативных расширений на основе LLVM. При сборке нативных пакетов R FastR сконфигурирован для использования встроенного в GraalVM инструментария LLVM. Результирующие бинарные файлы будут содержать и нативный код и LLVM-биткод.

    Предустановленные пакеты также собраны этим образом. FastR загружает и запускает нативный код расширений по умолчанию, но, когда запущен с опцией "--R.BackEnd=llvm", будет использоваться биткод. LLVM бэкэнд можно использовать избирательно для некоторых R пакетов, указывая "--R.BackEndLLVM=pkg1,pkg2". В случае проблем при установке пакетов, можно вернуть всё назад, вызвав fastr.setToolchain("native") или вручную подредактировав файл $FASTR_HOME/etc/Makeconf;
  • В этом релизе FastR поставляется без библиотек GCC runtime;
  • Исправлены утечки памяти;
  • Исправлены проблемы при работе с большими векторами (›1GB);
  • Реализован grepRaw, но только для fixed=T.


Источник: https://www.opennet.ru/opennews/art.shtml?num=51906
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 21.11.2019 14:45, всего редактировалось 1 раз.
Причина: Updated upstream
Спасибо сказали:
Ответить