Новости IT, хостинга
  Android, Apple, Facebook, Google, Linux, Microsoft, Samsung, Twitter, Интернет, Россия, браузеры, обновление ПО, онлайн-сервисы, операционные системы, планшеты, рынок ИТ, сделки, смартфоны, социальные сети, уязвимости  
  новостей: 10357
  комментариев: 2244

Выпуск языка программирования Ruby 2.1


После десяти месяцев разработки представлен релиз языка программирования Ruby 2.1. Ruby - мощный и динамический объектно-ориентированный язык программирования, отличающийся высокой эффективностью разработки программ и вобравший в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3. Ruby 2.1 продолжает развитие ветки 2.0 при сохранении обратной совместимости.

Дополнительно сообщается об утверждении новой схемы нумерации версий Ruby, которая будет применена в следующих выпусках. Номер версии будет определяться в формате MAJOR.MINOR.TEENY.PATCH, где значение MAJOR будет увеличиваться при значительных нарушениях обратной совместимости. Новые MINOR-выпуски планируется формировать раз в год, при этом в данных выпусках допускается нарушение обратной совместимости API. В TEENY-выпусках, которые будут выходить раз в 2-3 месяца, будут устраняться ошибки и уязвимости при полном сохранении совместимости API. Значение PATCH будет отражать число коммитов с момента прошлого минорного выпуска.

Основные изменения в 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).


Источник: opennet.ru

  28 декабря 2013 491
Версия для печати

← предыдущая новость следующая новость →

Мой комментарий
Ваше имя*:
Email:
Комментарий*:
Зарегистрироваться автоматически: Вы будете зарегистрированы на сайте автоматически при добавлении комментария. Обязательно заполните поле Email для этого.
Сумма чисел 7 и 19*:            


Хостеры (2445)
HostDB (35)
Софт (2640)
Железо (993)
Интернет (1435)
Статистика и аналитика (3324)




Отправить сообщение администратору

Сумма чисел 26 и 2*:


Яндекс цитирования
сообщить о неточности