The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"В день двадцатилетия проекта представлен релиз языка програм..."
Отправлено opennews, 24-Фев-13 20:27 
Спустя ровно 20 лет с момента основания проекта 24 февраля 1993 года представлен (http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is... первый релиз новой ветки языка  программирования Ruby 2.0 (http://www.ruby-lang.org).  Ruby - мощный и динамический объектно-ориентированный язык программирования, отличающийся высокой эффективностью разработки программ и вобравший в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp.  Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3.  

Ruby 2.0 продолжает развитие ветки 1.9.x и не содержит революционных изменений, и несмотря на ряд существенных новшеств, сохраняет полную обратную совместимость с Ruby 1.9.3. Также отмечается, что в отличие от 1.9.0 выпуск 2.0.0 является полностью стабильным и готовым для внедрения. По словам разработчиков, благодаря внимательному отношению к обеспечению совместимости с существующими приложениями, миграции с ветки 1.9 на 2.0 должна пройти заметно легче, чем с 1.8 на 1.9.

Популярные проекты, такие как Rails и tDiary, уже проверены на полную совместимость с  Ruby 2.0. Тем не менее ряд изменений в новой версии может привести к нарушению совместимости, например, в качестве кодировки по умолчанию в Ruby 2.0 используется UTF-8; удалена поддержка библиотеки Iconv; нарушена совместимость ABI (требуется пересборка библиотек-расширений); #lines, #chars, #codepoints и #bytes теперь возвращают результат с типом Array вместо Enumerator; Object#inspect теперь всегда возвращает строковые значения.

Основные (http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/) улучшения (https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0), добавленные (http://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_0/NEWS) в Ruby 1.9.3:

- Ключевые слова в качестве аргументов: например, кроме "1.step(20, 2)" можно  писать "1.step(by: 2, to: 20)" c определением метода как "def step(by: step, to: limit)", что значительно улучшает читаемость кода;

-  Поддержка конструкции "Refinements" ( Module#refine) для повышения безопасности внесения изменений в код на лету ("monkey patching (http://en.wikipedia.org/wiki/Monkey_patch)"). Например, можно применить "рафинирование" к глобальному классу в контексте только определённого модуля, при этом изменения будут применены только к указанному контексту. Возможность отмечена как экспериментальная, поэтому не исключается, что логика работы  в будущем может поменяться;
-  Новый способ расширения классов при помощи конструкции Module#prepend, позволяющей добавить модуль в начало цепочки вызова;
-  Поддержка литерала "%i", предназначенного для упрощённого создания  массива символов ("KEYS = %i[foo bar baz]" вместо "KEYS = [:foo, :bar, :baz]");
-  Поддержка переменной __dir__, которая возвращает путь к директории текущего запущенного файла (например, File.read(__dir__ + '/.config')
);
-  Использование кодировки UTF-8 по умолчанию. При указании символов в кодировке UTF-8  в скриптах отныне больше нет необходимости в использовании таких ухищрений как спецкомментарий "# encoding: utf-8";

-  Новые методы Enumerable#lazy (http://ruby-doc.org/core-2.0/Enumerable.html#method-i-lazy) и Enumerator::Lazy с реализацией
"ленивых" перечислений, не выполняемых сразу, а только при непосредстенной необходимости в данных. Lazy-перечисления работают примерно в два раза медленнее обычных;-  Новые методы Enumerator#size (http://ruby-doc.org/core-2.0/Enumerator.html#method-i-size) и Range#size, позволяющие вычислить размер перечисления без его выполнения;
-  Поддержка метода "#to_h" для преобразования класса в хэш (car = Car.new('Toyota', 'Prius', 2014); car.to_h # => {:make=>"Toyota", :model=>"Prius", :year=>2014});
-  Переход на Onigmo (https://github.com/k-takata/Onigmo) (форк Oniguruma), новый движок для выполнения регулярных выражений;-  API для обработки исключений в асинхронном режиме;
-  Поддержка системы динамической отладки DTrace, при помощи которой можно организовать диагностику работы скрипта во время его выполнения;
-  TracePoint - улучшенный API для трассировки приложений;
-  Оптимизация производительности сборщика мусора, за счёт задействования техники маркировки по битовым картам;-  Оптимизация работы конструкции  Kernel#require, что позволило заметно ускорить запуск Rails;-  Оптимизация работы виртуальной машины-  Оптимизация производительности операций с плавающей запятой;


URL: http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=36211

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру