Вышел минорный релиз Ruby 2.5.0
Новости
Разработчики заявляют о значительном приросте производительности.
1К открытий1К показов
В 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.
1К открытий1К показов