Максим Енбулаев

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

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

1439

В 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
1439
Что думаете?
0 комментариев
Сначала интересные