Вышел минорный релиз Ruby 2.5.0

Разработчики заявляют о значительном приросте производительности.

В Ruby 2.5.0 реализовано множество новых функций и улучшена производительность. Ruby-сообщество отмечает 50-процентный прирост производительности в некоторых случаях. Ниже описаны наиболее значимые изменения:

  • Обработку исключений в rescue/else/ensure теперь можно использовать напрямую в блоке do/end.
  • Добавлен метод yield_self. В отличии от tap, он возвращает результат блока.
  • Осуществлена поддержка измерения использования методов и блоков кода. При запуске теста с новыми функциями пользователь будет знать об используемых методах и частях ветвлений, а также сможет более строго оценивать полное покрытие тестами.
  • Добавлены Hash#slice и Hash#transform_keys.
  • Struct.new может создавать классы, поддерживающие именованные аргументы.
  • Методы Enumerable#any?, all?, none? и one? поддерживают аргументы по образцу.
  • Поиск констант высшего уровня больше не поддерживается.
  • Библиотека pp.rb теперь включена в ядро языка. Больше нет необходимости использовать команду require “pp”.
  • Вывод сообщений об ошибках в терминале теперь осуществляется в обратном порядке.

Прирост производительности

  • Скрипты на Ruby теперь в среднем на 5-10% быстрее благодаря удалению всех инструкций trace из генерируемого байткода. Хотя поддержка trace добавлена в TracePoint, его использование обычно излишне.
  • Код, генерируемый ERB из шаблонов, работает в два раза быстрее аналогичного из Ruby 2.4.
  • Улучшена производительность таких методов, как Array#concat, Enumerable#sort_by, String#concat, String#index, Time#+ и так далее.

Прочие изменения по сравнению с версии 2.4

  • SecureRandom теперь обходится средствами ОС, если это возможно. Ранее в первую очередь проверялось наличие OpenSSL.
  • Добавлены гемы cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, scanf, sdbm, stringio, strscan, webrick, zlib.
  • Реализована поддержка Unicode версии 10.0.0.
  • RubyGems обновлена до 2.7.3.
  • RDoc обновлена до 6.0.1.
  • У Thread.report_on_exception теперь по умолчанию установлено значение true. Это изменение призвано облегчить отладку многопоточных программ.
  • IO#Write теперь принимает множественные аргументы.

Загрузка новой версии языка доступна на официальном сайте Ruby.

Источник: официальный сайт Ruby