Ruby 2.6 Добавляет JIT


Есть новый предварительный просмотр Ruby, который является первым в серии Ruby 2.6.0. Разработчики говорят, что предварительный просмотр был выпущен раньше, чем обычно, потому что он включает в себя важную новую функцию-JIT.

Ruby — очень популярный язык программирования, отчасти из-за того, что он интересен в использовании и полезен из-за сочетания различных стилей программирования-функционального, динамического и объектно-ориентированного.

JIT является основным улучшением новой версии. Компилятор Just-In-Time ускорит выполнение программ и интересен тем, что разработчики говорят, что он работает иначе, чем JIT-компиляторы на других языках. JIT-компилятор Ruby печатает код C на диск и создает общий процесс компилятора C для создания собственного кода. Предварительный выпуск был сделан для того, чтобы пользователи Ruby могли проверить, работает ли он для их конкретной платформы, а также обнаружить любые угрозы безопасности до выпуска версии 2.6. JIT-компилятор в настоящее время поддерживается только в том случае, если Ruby собран gcc или clang и компилятор доступен во время выполнения.

Разработчики говорят, что эта версия JIT является ранней и реализовано очень мало оптимизаций, поэтому она не готова к сравнительному анализу конечной производительности, особенно для более крупных программ, таких как приложения Rails. Будущие версии будут включать в себя встраивание методов, что, как ожидается, увеличит производительность Ruby на порядок.

Помимо JIT-компилятора, предварительный просмотр включает в себя новый модуль RubyVM::AST. Этот модуль имеет метод синтаксического анализа, который анализирует данный код ruby, представляющий собой строку, и возвращает набор узлов AST (Абстрактное синтаксическое дерево). Модуль также имеет метод parse_file, который анализирует данный файл кода Ruby и возвращает узлы AST.

Другие новые функции включают добавление бесконечного диапазона, который можно использовать без указания размера диапазона; и метод Add Binding#source_location, который возвращает исходное местоположение в виде массива из двух элементов, содержащего файл и строку.


Добавить комментарий