Выпуск языка программирования 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).

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Выпуск языка программирования Ruby 2.1», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.