Что нового в новом релизе языка Ruby 3.1.0

Что нового в новом релизе языка Ruby 3.1.0
Метки: /

В этой новости вы прочитаете что нового в Ruby 3.1.0, в новом обновление этого языка программирования, думаю будет многим интересно и полезно.

Также если вас интересуют обновления языков программирования, то почитайте статью «PHP 8.1 что нового в релизе языка программирования», тоже возможно будет интересно.

Что нового в Ruby 3.1.0:

  • Добавлен новый экспериментальный внутрипроцессный JIT-компилятор YJIT,
    созданный разработчиками платформы электронной коммерции Shopify в рамках инициативы по увеличению производительности Ruby-программ, использующих фреймворк Rails и вызывающих очень много методов. Ключевым отличием от ранее используемого JIT-компилятора
    MJIT, базирующегося на обработке методов целиком и использующего внешний компилятор на языке Си, является то, что YJIT применяет версионирование базовых блоков (LBBV — Lazy Basic Block Versioning) и содержит интегрированный JIT-компилятор. Благодаря LBBV, JIT вначале компилирует только начало метода, а оставшуюся часть компилирует через некоторое время, после того как в процессе выполнения будет определены типы используемых переменных и аргументов. При использовании YJIT зафиксировано увеличение производительности при выполнении теста railsbench на 22%, а теста liquid-render на 39%. YJIT пока ограничен поддержкой unix-подобных ОС на системах с архитектурой x86-64 и
    отключён по умолчанию (для активации следует указать в командной стоке флаг «—yjit»).
  • Повышена производительность старого JIT-компилятора MJIT. Для проектов, использующих Rails, максимальный размер кэша (—jit-max-cache) по умолчанию увеличен со 100 до 10000 инструкций. Прекращено неприменение JIT для методов, включающих более 1000 инструкций. Для поддержки Zeitwerk of Rails сформированный в JIT код больше не отбрасывается, если для событий класса включён TracePoint.
  • В состав включён полностью переписанный отладчик debug.gem, который поддерживает удалённую отладку, не замедляет работу отлаживаемого приложения, поддерживает интеграцию с продвинутыми отладочными интерфейсами (VSCode и Chrome), может использоваться для отладки многопоточных и многопроцессных приложений, предоставляет интерфейс выполнения кода REPL, предлагает расширенные возможности трассировки, может записывать и повторно воспроизводить отрывки кода.
    Ранее предлагавшийся отладчик lib/debug.rb удалён из базовой поставки.
  • Реализовано наглядное выделение ошибок в отчётах обратной трассировки вызовов. Пометка ошибок обеспечивается при помощи встроенного и включённого по умолчанию gem-пакета error_highlight. Для отключения пометки ошибок можно использовать настройку «—disable-error_highlight».
  • В оболочке интерактивных вычислений IRB(REPL, Read-Eval-Print-Loop)
    реализовано автоматическое дополнение вводимого кода (по мере набора выводится подсказка с вариантами продолжения ввода, между которыми можно перемещаться клавишей Tab или Shift+Tab). После выбора варианта продолжения рядом обеспечен вывод диалога, в котором показывается документация, связанная с выбранным элементом. Для перехода к полной документации может использоваться клавиатурная комбинация Alt+d.
  • Синтаксис языка теперь разрешает пропускать значения в литералах хэшей и аргументы ключевых слов при вызове функций. Например, вместо выражения «{x: x, y: y}» теперь можно указывать «{x:, y:}», а вместо «foo(x: x, y: y)» — foo(x:, y:)».
  • Стабилизирована поддержка однострочных сопоставлений с образцом (ary =› [x, y, z]), которые больше не имеют признак экспериментальных.
  • Оператор «^» в сопоставлениях с образцом теперь может содержать произвольные выражения, например:
  • В однострочных сопоставлениях с образцом разрешено не указывать скобки:
  • В язык аннотации типов RBS, который позволяет определять структуру программы и используемых типов, добавлена поддержка указания верхней границы параметров типа при помощи символа «‹», добавлена поддержка псевдонимов обобщённых типов, реализована поддержка коллекций для управления gem-ами, повышена производительность и реализовано много новых сигнатур для встроенных и стандартных библиотек.
  • В статический анализатор типов TypePro, генерирующий RBS-аннотации на основе анализа кода без явной информации о типах, добавлена экспериментальная поддержка интегрированных сред разработки (например, подготовлено дополнение для интеграции TypePro с редактором VSCode).
  • Изменён порядок обработки множественных присвоений. Например, раньше составные части выражения «foo[0], bar[0] = baz, qux» обрабатывались в порядке baz, qux, foo, bar, а теперь foo, bar, baz, qux.
  • Добавлена экспериментальная поддержка выделения памяти для строк с использованием механизма VWA (Variable Width Allocation).
  • Обновлены версии встроенных и входящих в стандартную библиотеку gem-модулей. Встроены пакеты net-ftp, net-imap, net-pop, net-smtp,
    matrix, prime и debug.

Вывод:

Тут вы прочитали что нового в новом обновление языка программирования Ruby 3.1.0, и как видите обновлений не так что много, но всё равно достаточно, думаю вам было это интересно и самое главное полезно.

Источник: OpenNet

Подписываетесь на соц-сети:

Оценка:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
(Пока оценок нет)
Загрузка...

Также рекомендую:

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии