Ruby 2.4.0
25 декабря вышел первый стабильный релиз ветки Ruby 2.4. В ней представлено много новых возможностей.
- Улучшения хеш-таблицы (Владимир Макаров). Введены открытая адресация и упорядоченные в порядке добавления массивы. Это обсуждено со многими людьми, в особенности с Юрой Соколовым.
- Привязка #irb: Старт сессии REPL по аналогии с
binding.pry
. Вместо логирования переменных множественными вызовамиp
можно подключить pry черезbinding.pry
для запуска из приложения REPL и выполнения любого Ruby-кода. Теперь в поставку языка включёнbinding.irb
, который позволяет проделать то же самое с irb. - Fixnum и Bignum объединены в Integer. Все C-расширения, затрагивающие классы Fixnum или Bignum, нужно поправить.
- Поддержка соответствий заглавных символов Unicode.
String/Symbol#upcase/downcase/swapcase/capitalize(!)
теперь работают не только с ASCII. - Улучшения производительности.
Array#max
иArray#min
больше не создают временный массив при некоторых условиях. ДобавленRegexp#match?
, выполняющий проверку регулярного выражения без создания объекта с обратной ссылкой и изменения$~
. Ускорен доступ к переменным экземпляров.
Улучшения отладки:
Thread#report_on_exception
иThread.report_on_exception
. Ruby игнорирует исключения в потоках, если к ним явно не присоединён другой поток. Сreport_on_exception = true
можно отследить, что поток умер из-за необработанного исключения. Присылайте отзывы, нужно ли включить эту опцию по умолчанию, равно как и report-on-GC, которая сообщает о сборке мусора в неприсоединённом потоке.- Отлов тупиков в потоках теперь отображает для потоков трассировку и зависимые потоки.
Другие значимые изменения с версии 2.3:
- Поддержка OpenSSL 1.1.0 (прекращена поддержка 0.9.7 и более ранних).
- Из stdlib убраны ext/tk и XMLRPC.
>>> Подробности
ruby, программирование