Выпущен Ruby 2.3


Ruby 2.3 был выпущен к Новому году с новыми функциями. 

Это первый стабильный выпуск серии Ruby 2.3, и среди новых функций, возможно, наиболее очевидной является прагма замороженного строкового литерала.

Версии Ruby до 2.2 по умолчанию имели изменяемые строки, и если вы хотели сделать строку неизменяемой, вам нужно было вызвать #freeze для нее. 

Неизменяемые или замороженные строки улучшают общую производительность, поскольку Ruby приходилось выделять меньше объектов. В знак признания этого, в Ruby 3.0 планируется сделать строки неизменяемыми по умолчанию. 

Новый выпуск предоставляет промежуточное решение, имея возможность заморозить все строковые литералы по умолчанию. Все, что вам нужно сделать, это добавить опцию командной строки или волшебный комментарий:

#frozen_string_literal: true

в начале файла. Это гарантирует, что все строковые литералы в файле будут заморожены без необходимости вызывать #freeze для них. Если вы не знакомы с комментариями magic, они представляют собой директивы предварительной обработки, которые интерпретатор исходного кода считывает, чтобы установить соответствующую кодировку перед обработкой исходного кода.

Еще одним дополнением к новой языковой версии является оператор безопасной навигации, также известный как одинокий оператор. Оператор &. уже существует в C#, Groovy и Swift, а в Ruby облегчит работу с nils. Одно из применений-это когда вам нужно проверить, равен ли объект нулю, прежде чем вызывать метод для него. Он вернет ноль, если объект равен нулю, в противном случае он вызывает метод для объекта. Array#dig и Hash#dig также были добавлены, предоставляя более простой API для доступа к вложенным элементам в массивах и хэшах.

Одним из полезных улучшений является комплектация драгоценного камня did_you_mean. Если вы получите “Nometoderror” из-за неправильного ввода имени метода, Ruby теперь предложит другие имена методов, похожие на те, которые вы ввели неправильно.

Новая версия также имеет ряд улучшений производительности, включая настройку уровня машинного кода для выделения объектов и кода вызова методов, более интеллектуальную структуру данных переменных экземпляра,новую структуру данных ввода метода и новую структуру данных таблицы. Полный список можно увидеть в примечаниях к выпуску. 


Добавить комментарий