Вийшов Ruby 2.0.0-p0
Опублікував Yusuke Endoh 24-02-2013
Переклав: Andrii Furmanets
Ми раді оголосити випуск 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>
РОЗМІР: 10814890 байтів MD5: 895c1c581f8d28e8b3bb02472b2ccf6a SHA256: c680d392ccc4901c32067576f5b474ee186def2fcd3fcbfa485739168093295f -
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz>
РОЗМІР: 13608925 байтів MD5: 50d307c4dc9297ae59952527be4e755d SHA256: aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed -
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip>
РОЗМІР: 15037340 байтів MD5: db5af5d6034646ad194cbdf6e50f49ee SHA256: 0d0af6a9c8788537efd8d7d2358ce9468e6e2b7703dacba9ebd064d8b7da5f99
Що таке Ruby 2.0.0
Нові функції
Деякі з визначних моментів:
- Функції ядра мови
- Ключові аргументи, які надають гнучкість дизайну API
- Module#prepend, який є новим способом розширення класу
- Літерал %i, який легко створює масив символів
- __dir__, який повертає ім’я директорії файлу, який зараз виконується
- Кодування UTF-8 за замовчуванням, яке робить багато магічних коментарів необов’язковими
- Вбудовані бібліотеки
- Enumerable#lazy та Enumerator::Lazy, для (можливо нескінченного) лінивого потоку
- Enumerator#size та Range#size, для лінивої оцінки розміру
- #to_h, який є новою конвенцією для перетворення в Hash
- Onigmo, який є новим рушієм regexp (форк Oniguruma)
- API обробки асинхронних винятків
- Підтримка налагодження
- Підтримка DTrace, яка дозволяє діагностику під час виконання у виробництві
- TracePoint, який є покращеним API трасування
- Покращення продуктивності
- Оптимізація GC за допомогою bitmap marking
- Оптимізація Kernel#require, яка робить запуск Rails дуже швидким
- Оптимізація VM, така як диспетчеризація методів
- Оптимізація операцій Float
Крім того, хоча як експериментальна функція, 2.0.0 включає Refinements, який додає нову концепцію до модульності Ruby.
Див. також NEWS для більше функцій, покращень та деталей.
Сумісність
Ми також дбали про дизайн 2.0.0, щоб зробити його сумісним з 1.9. Буде легше мігрувати з 1.9 на 2.0, ніж було з 1.8 на 1.9. (Помітні несумісності описані пізніше.)
Насправді, завдяки присвяченій роботі третіх сторін, деякі популярні додатки, такі як Rails та tDiary, повідомлялися, що працюють на версії кандидата на випуск 2.0.0.
Документація
Ми також зробили покращення документації, які багато rubyist запитували. Ми додали величезну кількість rdoc для модулів та методів. 2.0.0 буде приблизно 75% задокументовано, тоді як 1.9.3 було близько 60%. Також ми додали опис синтаксису Ruby. Ви можете побачити:
ri ruby:syntaxСтабільність
Зверніть увагу, що на відміну від 1.9.0, 2.0.0 Є стабільним випуском, навіть якщо його TEENY дорівнює 0. Всі автори бібліотек настійно рекомендуються підтримувати 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, японською)
Наступні статті також корисні, але застарілі щодо refinement:
- <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, тощо замість цього.
- Є порушення ABI [ruby-core:48984]. Ми думаємо, що звичайні користувачі можуть/повинні просто перевстановити бібліотеки розширень. Ви повинні знати: НЕ КОПІЮЙТЕ ФАЙЛИ .so АБО .bundle З 1.9.
- #lines, #chars, #codepoints, #bytes тепер повертають масив замість 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. Навіть неповна подяка лише для кількох частин внесків стала занадто великою для вставки тут. Вибачте, але дозвольте мені просто додати посилання на сторінку особливої подяки .
Дякую всім!
Останні новини
Вийшов Ruby 4.0.4
Вийшов Ruby 4.0.4.
Опублікував k0kubun 11-05-2026
Вийшов Ruby 4.0.3
Вийшов Ruby 4.0.3.
Опублікував k0kubun 21-04-2026
Вийшов Ruby 3.2.11
Вийшов Ruby 3.2.11. Цей реліз містить оновлення gem zlib, яке усуває CVE-2026-27820.
Опублікував hsbt 27-03-2026
Вийшов Ruby 3.3.11
Вийшов Ruby 3.3.11. Цей реліз містить оновлення gem zlib, яке усуває CVE-2026-27820, а також кілька виправлень помилок.
Опублікував hsbt 26-03-2026