Код
#новости

Вышел Ruby 3.2.0 Preview 1 с улучшенной оптимизацией

Разработчики добавили поддержку WebAssembly и Regexp timeout.

В прошлом большом релизе Ruby под номером 3.1.0 появился новый компилятор и дебагер. А в этом релизе авторы работают над поддержкой WASI (The WebAssembly System Interface) и регулярными выражениями.

WebAssembly.  Разработчики добавили первичную поддержку WebAssembly на основе WASI-интерфейса. Это позволит запускать бинарные CRuby-файлы в браузере, бессерверных средах и встроенных WebAssembly/WASI-системах. На данный момент порт проходит базовые и bootstrap-тесты, но не использует Thread API.

Поддержка WebAssembly. Источник: блог Ruby

Регулярные выражения. Добавили задержку (timeout) для Regexp-сравнений. Timeout позволяет задавать время, за которое Regexp-выражение должны проверить, иначе появляется ошибка. Это даст разработчикам возможность предотвращать ReDoS-атаки заранее.

Regexp.timeout = 1.0

/^a*b?a*$/ =~ "a" * 50000 + "x"
#=> Regexp::TimeoutError is raised in one second

Улучшения в оптимизации. Изменили и пофиксили следующие типы данных:

Hash.

  • Hash#shift теперь возвращает nil, если хеш пуст.

MatchData.

  • Добавили MatchData#byteoffset.

Module.

  • Добавили Module.used_refinements.
  • Добавили Module#refinements.
  • Добавили Module#const_added.

Proc.

  • Proc#dup возвращает экземпляр подкласса.
  • Proc#parameters теперь принимает лямбда-ключи.

Refinement.

  • Добавили Refinement#refined_class.

Set.

  • Set теперь доступен как builtin-класс.

String.

  • Добавили String#byteindex и String#byterindex.
  • Обновили версию Unicode до 14.0.0 и Emoji — до 14.0.
  • Добавили String#bytesplice.

Struct.

  • Struct-класс теперь можно инициализировать без keyword_init: true в Struct.new.

Что ещё? Убрали сторонние бандлеры — libyaml, libffi — и сделали функцию поиска паттернов для языков стабильной.

Подробнее прочитать обо всех изменениях можно на сайте Ruby, а протестировать новые функции — в TryRuby Playground.


Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована