Вийшов 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!

Завантаження

Що таке 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 від третіх сторін:

Наступні статті також корисні, але застарілі щодо refinement:

Також, останній випуск “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 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

Більше новин...