Как стать автором
Обновить

Вышел Ruby 3.2

Время на прочтение 2 мин
Количество просмотров 2.2K

Разработчики представили релиз языка программирования Ruby 3.2.0.

Изменения в релизе включают:

  • начальный порт интерпретатора CRuby, компилируемого в промежуточный код WebAssembly для запуска в браузере или под управлением обособленных runtime, таких как wasmtime. Для прямого взаимодействия с операционной системой при обособленном запуске используется API WASI (WebAssembly System Interface). Появилась VFS обвязка поверх WASI, позволяющая упаковывать всё приложение на языке Ruby в представление в виде одного wasm-файла. Запуск в браузере может использоваться для создания обучающих и демонстрационных сервисов, таких как TryRuby. Порт успешно проходит тестовые наборы basic и bootstrap, в которых не применяется API Thread. В порте также не поддерживаются файберы (Fiber), исключения и сборка мусора;

  • стабильный внутрипроцессный JIT-компилятор YJIT от разработчиков Shopify в рамках инициативы по увеличению производительности Ruby-программ, использующих фреймворк Rails. Отличие от JIT-компилятора MJIT заключается в версионировании базовых блоков или LBBV. YJIT вначале компилирует только начало метода, а оставшуюся часть — через некоторое время, после того как в процессе выполнения будет определены типы используемых переменных и аргументов. YJIT доступен для архитектур x86-64 и arm64/aarch64 в Linux, MacOS, BSD и других UNIX-платформ. Он требует для компиляции наличие компилятора rustc 1.58.0+, поэтому сборка YJIT по умолчанию отключена;

  • дополнительную защиту от атак, вызывающих отказ в обслуживании при обработке внешних данных в неэффективных и длительно выполняемых регулярных выражениях (ReDoS). Улучшен алгоритм сопоставления, в котором задействована техника мемоизации. Из-за этого увеличивается потребление памяти, расход которой примерно в 10 раз выше размера входных данных. Также определяется таймаут (например, "Regexp.timeout = 1.0"), за который должно успеть обработаться регулярное выражение;

  • режим syntax_suggest, помогающий диагностировать причины ошибок, связанных с отсутствующим или лишним закрывающим выражением "end". В режиме показа места ошибок добавлена возможность пометки аргументов при ошибках, связанных с типами и аргументами;

  • новый синтаксис для перенаправления в другие методы наборов аргументов;

  • переписанный на языке Ruby ruby_vm/mjit/compiler — вариант старого JIT-компилятора MJIT. Обеспечено выполнение MJIT в отдельном процессе;

  • задействование определителя версий PubGrub в Bundler 2.4 при обработке зависимостей, который также применяется в пакетном менеджере pub для языка Dart. Ранее используемый алгоритм Molinillo продолжает применяться в RubyGems, но в будущем его заменят на PubGrub;

  • обновлённую версию встроенных и входящих в стандартную библиотеку gem-модулей.

Теги:
Хабы:
+3
Комментарии 0
Комментарии Комментировать

Другие новости

Истории

Работа

Ruby on Rails
11 вакансий

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн