Вийшов Ruby 2.6.0-preview1
Опублікував naruse 24-02-2018
Переклав: Andrii Furmanets
Ми раді оголосити випуск Ruby 2.6.0-preview1.
Ruby 2.6.0-preview1 - це перший preview до Ruby 2.6.0. Цей preview1 випущено раніше, ніж зазвичай, оскільки він включає важливу нову функцію, JIT.
JIT
Ruby 2.6 вводить початкову реалізацію JIT (Just-in-time) компілятора.
JIT компілятор має на меті покращити продуктивність виконання будь-якої програми Ruby. На відміну від звичайних JIT компіляторів для інших мов, JIT компілятор Ruby робить JIT компіляцію унікальним способом, який виводить C код на диск та запускає загальний процес компілятора C для генерації нативного коду. Див. також: MJIT організація від Vladimir Makarov.
Як використовувати: Просто вкажіть --jit в командному рядку або змінній середовища $RUBYOPT. Вказівка --jit-verbose=1 дозволяє вивести базову інформацію про поточну JIT компіляцію. Див. ruby --help для інших опцій.
Основна мета цього JIT випуску - надати можливість перевірити, чи працює він на вашій платформі, та виявити ризики безпеки перед випуском 2.6. Наразі JIT компілятор підтримується лише коли Ruby зібрано gcc або clang та компілятор доступний під час виконання. Інакше ви не можете використовувати його зараз.
Станом на 2.6.0-preview1, ми лише готуємо інфраструктуру для JIT та реалізовано дуже мало оптимізацій. Ви можете виміряти деякі потенційні покращення в мікро-бенчмарках з цим випуском, але він НЕ готовий для бенчмаркінгу фінальної продуктивності JIT компілятора Ruby, особливо для великих програм, таких як додатки Rails.
Ми збираємося реалізувати inlining методів у JIT компіляторі, що очікується значно збільшить продуктивність Ruby.
Також ми плануємо збільшити підтримувані платформи, і наступний план - підтримати Visual Studio.
Слідкуйте за новою ерою продуктивності Ruby.
Нові функції
- Додано
Random.bytes. [Функція #4938] -
Додано
Binding#source_location. [Функція #14230]Цей метод повертає місце розташування джерела binding, масив з 2 елементів
__FILE__та__LINE__. Традиційно, таку саму інформацію можна було отримати черезeval("[__FILE__, __LINE__]", binding), але ми плануємо змінити цю поведінку так, щобKernel#evalігнорував місце розташування джерелаbinding[Помилка #4352]. Тому користувачі повинні використовувати цей нововведений метод замістьKernel#eval. - Додано опцію
:exceptionдоKernel.#system, щоб підняти помилку замість поверненняfalse. [Функція #14386]
Покращення продуктивності
-
Прискорення
Proc#call, оскільки нам більше не потрібно піклуватися про$SAFE. [Функція #14318]З бенчмарком
lc_fizzbuzz, який використовуєProc#callтак багато разів, ми можемо виміряти покращення x1.4 [Помилка #10212]. -
Прискорення
block.call, деblockє переданим параметром блоку. [Функція #14330]Ruby 2.5 покращує продуктивність передачі блоку. [Функція #14045] Додатково, Ruby 2.6 покращує продуктивність виклику переданого блоку. З мікро-бенчмарком ми можемо спостерігати покращення в 2.6 рази.
Інші помітні зміни з 2.5
-
$SAFEє глобальним станом процесу, і ми можемо встановити0знову. [Функція #14250] -
Передача
safe_levelдоERB.newзастаріла. Аргументиtrim_modeтаeoutvarзмінено на ключові аргументи. [Функція #14256] -
Об’єднано RubyGems 2.7.6
Див. NEWS або логи комітів для деталей.
З цими змінами, 1115 файлів змінено, 23023 додано(+), 14748 видалено(-) з Ruby 2.5.0!
Сьогодні, 24 лютого, день народження Ruby - 25 років. З днем народження Ruby, та насолоджуйтеся програмуванням з Ruby 2.6.0-preview1!
Завантаження
-
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.gz
РОЗМІР: 16082501 байтів SHA1: 94b4a2f5f992dc9855364284e9c64316bf129c90 SHA256: 2023c42676d9237481e1a97157d5e2ecc10db5e320d5b9cf872ec1d293265d61 SHA512: 004696c4f087333ba7cb2285418dcce70f399966ae8fed817aab9759fd2d75beb088c4aeb294fcd4260112e8422f490cd4dbdfce402d73f96bb679b8bb3e1607 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.zip
РОЗМІР: 19807007 байтів SHA1: 24d76f67bf913348eca783a2ecf6f3faf37299ae SHA256: 6c883927e80430cf07f2d90728d6c2c71164223f378a48ebf964d3b66319f623 SHA512: 1e7f318cec1b7875fd9891df671078de7585b556695a2a85708483ddcacfd6e0b63b70ec2535e92ff981b4f72063721ed552df49688e066666fcd7ae520ae667 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.bz2
РОЗМІР: 14104578 байтів SHA1: 9f0fb79643a4673a839b0c8496eccc6e1dbd022d SHA256: 8bd6c373df6ee009441270a8b4f86413d101b8f88e8051c55ef62abffadce462 SHA512: d9cb270529a97670d54f43a0236fab072714e715c39277dab70b7a1843ec818e6700e47e1384c7256f9e0ae41ab2c0b768a0de38a5ecf4f4fff5da6ef5ad4944 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.xz
РОЗМІР: 11423984 байтів SHA1: bbbc89d760cdaadbca3cbff587295864edeff0af SHA256: 1d99139116e4e245ce543edb137b2a8873c26e9f0bde88d8cee6789617cc8d0e SHA512: d12ff29778d8d940344619881b4d8247c2fb6b44ac2b2dbddb7078828e893cfac9a5a95b5588f0afdbed52bdb6dea95cff1b9ce3ad47dfa62209e97dab8810b6
Останні новини
Вийшов Ruby 3.2.10
Вийшов Ruby 3.2.10.
Опублікував hsbt 14-01-2026
Вийшов Ruby 4.0.1
Вийшов Ruby 4.0.1.
Опублікував k0kubun 13-01-2026
Вийшов Ruby 4.0.0
Ми раді повідомити про випуск Ruby 4.0.0. Ruby 4.0 представляє “Ruby Box” та “ZJIT”, а також додає багато покращень.
Опублікував naruse 25-12-2025
Новий вигляд документації Ruby
Слідом за ре-дизайном ruby-lang.org, ми маємо більше новин, щоб відсвяткувати 30-річчя Ruby: docs.ruby-lang.org має повністю новий вигляд завдяки Aliki — новій темі за замовчуванням для...
Опублікував Stan Lo 23-12-2025