Опубликовал Yusuke Endoh 24-02-2013
Перевел: gazay
Мы рады сообщить о релизе Ruby 2.0.0-p0.
Ruby 2.0.0 – это первый стабильный релиз Ruby 2.0 серии. В него включено множество новых фич и улучшений в ответ на все более разнообразные и увеличивающиеся требования для Ruby.
Наслаждайтесь программированием с Ruby 2.0.0!
Скачать
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2>
SIZE: 10814890 bytes MD5: 895c1c581f8d28e8b3bb02472b2ccf6a SHA256: c680d392ccc4901c32067576f5b474ee186def2fcd3fcbfa485739168093295f
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz>
SIZE: 13608925 bytes MD5: 50d307c4dc9297ae59952527be4e755d SHA256: aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip>
SIZE: 15037340 bytes MD5: db5af5d6034646ad194cbdf6e50f49ee SHA256: 0d0af6a9c8788537efd8d7d2358ce9468e6e2b7703dacba9ebd064d8b7da5f99
Что такое Ruby 2.0.0
Новые фичи
Кое-что из нового:
- Новое в ядре языка
- Для повышения гибкости при проектировании API добавлены keyword arguments
- Новый способ расширения класса: Module#prepend
- Литер %i, который служит для быстрого создания массивов символов
- __dir__ возвращает имя директории, в которой происходит выполнение кода
- Кодировка по-умолчанию теперь UTF-8, что делает ненужными магические комментарии (# encoding: utf-8 в начале файла)
- Встроенные библиотеки
- Enumerable#lazy и Enumerator::Lazy для ленивых вычислений (практически бесконечных)
- Enumerator#size и Range#size для ленивого вычисления размера
- #to_h для новой конвенции перевода в Hash
- Onigmo – новый движок регулярных выражений (форк Onigurama)
- API асинхронной обработки ошибок
- Поддержка дебага
- Поддержка DTrace, которая включает рантайм диагностику в продакшене
- Улучшенный API для отслеживания через TracePoint
- Улучшения в производительности
- Оптимизации сборщика мусора с использованием bitmap marking
- Оптимизация Kernel#require, как следствие запуск Rails намного быстрей
- Оптимизации виртуальной машины, например, отправки метода
- Операции с дробными числами
Можно добавить, что хотя как и эксперимент, но 2.0.0 включает Refinements, который добавляет новый концепт к модульности Ruby.
Также, просмотрите новости про другие изменения, улучшения и детали.
Совместимость
Создавая 2.0.0 мы также старались сохранить совместимость с 1.9. В итоге, намного проще перейти с 1.9 на 2.0 чем это было с 1.8 и 1.9 (Важные несовместимости будут описаны позже).
На самом деле, спасибо сторонним командам, которые сделали часть работы. Многие приложения, типа Rails и tDiary, присылали репорты о результатах работы на релиз-кандидате версии 2.0.0.
Документация
Мы также улучшили документацию, о чем нас просили многие рубисты. Мы добавили огромное количество rdoc документации для модулей и методов. 2.0.0 документирован примерно на 75%, когда 1.9.3 был документирован примерно на 60%. Также мы добавили описание синтаксиса Ruby. Вы можете попробовать:
Стабильность
Заметьте, что в отличие от 1.9.0, 2.0.0 – СТАБИЛЬНЫЙ релиз, даже не смотря на то что TEENY номер равен нулю. Всем авторам библиотек строго рекомендуется поддерживать версию 2.0.0. Как было сказано выше, это очень просто – мигрировать с 1.9 на 2.0.
Ruby 2.0.0 готов для практического использования и точно улучшит вашу Ruby жизнь.
Заметки
Вступительные статьи
Далее несколько вступительных статей о нововведения 2.0.0 от сторонних разработчиков:
- <URL:http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example> (комплексно, рекомендовано)
- <URL:https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0> (комплексно, рекомендовано)
- <URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html> (бриф, на японском)
- <URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy> (только Enumerator::Lazy, на японском)
Следующие статьи тоже полезны, но немного устарели из-за refinements:
- <URL:http://rubysource.com/a-look-at-ruby-2-0/>
- <URL:https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails>
- <URL:http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/>
- <URL:http://www.infoq.com/news/2012/11/ruby-20-preview1>
А также, недавний выпуск "Rubyist Magazine" включает несколько статей, которые были написаны авторами нововведений, представляющих новые фичи в 2.0.0.
Они были написаны на японском, английский перевод планируется.
Несовместимости
Существует пять заметных несовместимостей, о которых мы знаем:
- Кодировка по-умолчанию для скриптов ruby теперь UTF-8 [#6679]. Некоторые люди присылают сообщения, что это затрагивает существующие программы. Например некоторые программы бенчмаркинга стали слишком медленными [ruby-dev:46547].
- Iconv был убран. Он был уже отмечен как устаревший, когда M17N был представлен в ruby 1.9. Используйте String#encode и другие методы вместо Iconv.
- Был сбой ABI [ruby-core:48984]. Мы думаем, что обычные пользователи могут/должны просто переустановить библиотеки расширений. Вы должны быть осторожны: НЕ КОПИРУЙТЕ .so ИЛИ .bundle ФАЙЛЫ ИЗ 1.9.
- #lines, #chars, #codepoints, #bytes теперь возвращают Array вместо Enumerator [#6670]. Это изменение позволяет вам избежать частой идеомы "lines.to_a". Используйте #each_line и другие методы, чтобы получить Enumerator.
- Object#inspect всегда возвращает строку вида #<ClassName:0x…> вместо делегирования на #to_s. [#2152]
Также есть несколько сравнительно небольших несовместимостей: [ruby-core:49119]
Статус Refinements
Мы добавили фичу под названием Refinements, которая добавляет новый концепт к модульности Ruby. Не смотря на это, пожалуйста, знайте, что Refinements до сих пор экспериментальная фича: мы можем изменить ее спецификацию в будущем. Но мы бы хотели, чтобы вы поиграли с ней, отправили бы нам свои отзывы, поделились мыслями. Ваши отзывы очень помогут доделать эту интересную фичу.
Благодарности
Очень много прекрасных людей участвовали в создании 2.0.0. Даже неполный раздел благодарностей, только для нескольких нововведений был бы слишком большой, чтобы представить его здесь. Извините, но я оставлю здесь лишь ссылку на страницу со специальными благодарностями.
Спасибо вам всем!