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, программирование

©  Linux.org.ru