Что нового в Ruby 2.3
На прошой неделе вышел превью Ruby 2.3.0. Что есть интересного из изменений:
- оператор безопасной навигации вглубь объектов (safe navigation operator), #11537
- в
Hash
иArray
добавлен методdig
для доступа вглубь вложенных хэшей или массивов #11688 - движение в сторону неизменяемых (
frozen
) по умолчанию строковых литералов (обоснование), обсуждение #11473 (планируется, что в Ruby 3 все строковые литералы будут неизменными)
Неизменяемость строк в Ruby 3
В Ruby 3 все строковые литералы будут неизменными. По поводу неизменности споры идут давно и сейчас движение в этоу сторону стало более конкретным. Выражается оно в появлении “магического” комментария frozen-string-literal
, присутствие которого включает по умолчанию неизменность для всех строковых литералов, и в добавлении --enable/--disable=frozen-string-literal
для управления таким поведением.
Основной аргумент в пользу неизменяемых строк — увеличение скорости работы за счет внутренних оптимизаций. В большинстве случаев строки остаются без изменений на протяжении всего жизненного цикла, и фиксирование такого поведения позволяет повысить производительность без изменения кода.