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

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