Выпуск языка программирования Ruby 2.1
26 декабря 2013 года
После десяти месяцев разработки представлен релиз языка программирования Ruby 2.1. Ruby - мощный и динамический объектно-ориентированный язык программирования, отличающийся высокой эффективностью разработки программ и вобравший в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3. Ruby 2.1 продолжает развитие ветки 2.0 при сохранении обратной совместимости.
Дополнительно сообщается (Архивная копия от 13 февраля 2014 на Wayback Machine) об утверждении новой схемы нумерации версий Ruby, которая будет применена в следующих выпусках. Номер версии будет определяться в формате MAJOR.MINOR.TEENY.PATCH, где значение MAJOR будет увеличиваться при значительных нарушениях обратной совместимости. Новые MINOR-выпуски планируется формировать раз в год, при этом в данных выпусках допускается нарушение обратной совместимости API. В TEENY-выпусках, которые будут выходить раз в 2-3 месяца, будут устраняться ошибки и уязвимости при полном сохранении совместимости API. Значение PATCH будет отражать число коммитов с момента прошлого минорного выпуска.
Основные изменения (Архивная копия от 21 мая 2015 на Wayback Machine) в Ruby 2.1:
- Поддержка локального кэширования методов в VM, вместо использования глобального кэша;
- Новый сборщик мусора RGenGC;
- Расширение и стабилизация возможностей конструкции "Refinements" ( Module#refine) для повышения безопасности внесения изменений в код на лету;
- Поддержка нового синтаксиса числовых и комплексных литералов ( "42r" для Rational(42, 1), 3.14r" для 3.14.rationalize, "42i" для Complex(0, 42), "42ri" для Complex(0, 42r));
- Значения по умолчанию для аргументов ключевых слов теперь могут быть пропущены (например, вместо "def foo(a: 10)" можно указать "def foo(a: )");
- Изменено значение, возвращаемое по умолчанию для конструкций "def" (вместо nil возвращает имя метода, например, "def foo() end" вернёт ":foo");
- Для ускорения вычислений с данными типа Bignum задействована библиотека GMP;
- Новые методы String#scrub и String#scrub! для проверки и исправления некорректной строковой последовательности;
- Новый метод Socket.getifaddrs, ассоциированный с функцией getifaddrs() стандартной системной библиотеки;
- Обновление RDoc 4.1.0 и RubyGems 2.2.0;
- Оптимизация строк "литерал".freeze на уровне VM (например, указание строки как "bar"f позволяет заморозить данное значение и работать с ней без создания новой копии строки при выполнении каждой опреации);
- В классы Array и Enumerable добавлены новые методы Array#to_h и Enumerable#to_h для преобразования массива/списка из пар ключей и значений в хэш;
- Поддержка метода Exception#cause, позволяющего обратиться к предыдущему исключению при обработке нового исключения;
- Обновление библиотек BigDecimal, JSON, NKF, Rake, RubyGems и RDoc;
- Удаление curses из стандартного набора библиотек (библиотека curses вынесена в отдельный gem curses).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.