В день двадцатилетия проекта представлен релиз языка программирования Ruby 2.0

Спустя ровно 20 лет с момента основания проекта представлен первый релиз новой ветки языка программирования Ruby 2.0. 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 на 2.0 должна пройти заметно легче, чем с 1.8 на 1.9. Также отмечается, что в отличие от 1.9.0 выпуск 2.0.0 является полностью стабильным и готовым для повсеместного внедрения.

Основныеулучшения, добавленные в Ruby 2.0.0:

  • Ключевые слова в качестве аргументов: например, кроме "1.step(20, 2)" можно писать "1.step(by: 2, to: 20)" c определением метода как "def step(by: step, to: limit)", что значительно улучшает читаемость кода;
  • Поддержка конструкции "Refinements" ( Module#refine) для повышения безопасности внесения изменений в код на лету ("monkey patching"). Например, можно применить "уточнение" к глобальному классу в контексте только определённого модуля, при этом изменения будут применены только к указанному контексту. Возможность отмечена как экспериментальная, поэтому не исключается, что логика работы в будущем может поменяться;
  • Новый способ расширения классов при помощи конструкции 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 и Enumerator::Lazy с реализацией "ленивых" перечислений, не выполняемых сразу, а только при непосредственной необходимости в данных. Lazy-перечисления работают примерно в два раза медленнее обычных;
  • Новые методы Enumerator#size и Range#size, позволяющие вычислить размер перечисления до того как оно будет выполнено;
  • Поддержка метода "#to_h" для преобразования класса в хэш (car = Car.new('Toyota', 'Prius', 2014); car.to_h # => {:make=>"Toyota", :model=>"Prius", :year=>2014});
  • Использование символа "_" перед именами неиспользуемых переменных, приводит к отсутствию вывода соответствующего предупреждения ( "warning: assigned but unused variable");
  • Новые методы Array#bsearch и Range#bsearch для выполнения бинарного поиска (ary = [0, 4, 7, 10, 12]; ary.bsearch {|x| x >= 6 });
  • Переход на Onigmo (форк Oniguruma), новый движок для выполнения регулярных выражений;
  • API для обработки исключений в асинхронном режиме;
  • Поддержка системы динамической отладки DTrace, при помощи которой можно организовать диагностику работы немодифицированного скрипта во время его выполнения;
  • TracePoint - улучшенный API для трассировки приложений;
  • Оптимизация производительности сборщика мусора, например, задействование техники маркировки по битовым картам;
  • Оптимизация работы конструкции Kernel#require, что позволило заметно ускорить запуск Rails;
  • Оптимизация работы виртуальной машины;
  • Оптимизация производительности операций с плавающей запятой;

Такие популярные проекты, как Rails и tDiary, уже проверены на полную совместимость с Ruby 2.0. Тем не менее, ряд изменений в новой версии приводит к появлению отдельных несовместимостей:

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

Подробнее: http://citforum.ru/news/29876/

Читать комменты и комментировать

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



Защитный код
Обновить

В день двадцатилетия проекта представлен релиз языка программирования Ruby 2.0 | | 2013-02-26 00:42:41 | | Технологии и новости мира IT | | Спустя ровно 20 лет с момента основания проекта представлен первый релиз новой ветки языка программирования Ruby 2.0. Ruby - мощный и динамический объектно-ориентированный язык программирования, | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: