Вийшов Ruby 3.3.0-preview1

Опублікував naruse 12-05-2023
Переклав: Andrii Furmanets

Раді повідомити про вихід Ruby 3.3.0-preview1. Ruby 3.3 додає новий чистий Ruby JIT компілятор під назвою RJIT, використовує Lrama як генератор парсерів та багато покращень продуктивності, особливо YJIT.

RJIT

  • Впроваджено чистий Ruby JIT компілятор RJIT та замінено MJIT.
    • RJIT підтримує лише архітектуру x86_64 на платформах Unix.
    • На відміну від MJIT, він не потребує компілятора C під час виконання.
  • RJIT існує лише для експериментальних цілей.
    • Ви повинні продовжувати використовувати YJIT у виробництві.
  • Якщо зацікавлені у розробці JIT для Ruby, будь ласка, перегляньте презентацію k0kubun на День 3 RubyKaigi.

Використання Lrama замість Bison

YJIT

  • Значні покращення продуктивності порівняно з 3.2
    • Підтримка splat та rest аргументів покращена.
    • Регістри виділяються для операцій стеку віртуальної машини.
    • Більше викликів з опціональними аргументами компілюється.
    • Integer#!=, String#!=, Kernel#block_given?, Kernel#is_a?, Kernel#instance_of?, Module#=== спеціально оптимізовані.
    • Змінні екземпляра більше не виходять до інтерпретатора з мегаморфними формами об’єктів.
  • Метадані для скомпільованого коду використовують набагато менше пам’яті.
  • Покращена генерація коду на ARM64
  • Опція запуску YJIT в режимі паузи, а потім увімкнення вручну
    • --yjit-pause та RubyVM::YJIT.resume
    • Це може використовуватися для увімкнення YJIT лише після того, як ваш застосунок завершить завантаження
  • Опція трасування виходів тепер підтримує вибірку
    • --trace-exits-sample-rate=N
  • Кілька виправлень помилок

Інші помітні нові можливості

Мова

Покращення продуктивності

  • defined?(@ivar) оптимізовано з Object Shapes.

Інші помітні зміни з версії 3.2

Проблеми сумісності

Примітка: Виключаючи виправлення помилок функцій.

Видалені константи

Наступні застарілі константи видалено.

Видалені методи

Наступні застарілі методи видалено.

Проблеми сумісності стандартної бібліотеки

ext/readline виведено з експлуатації

  • У нас є reline, яка є чистою реалізацією Ruby, сумісною з API ext/readline. Ми покладаємося на reline у майбутньому. Якщо вам потрібно використовувати ext/readline, ви можете встановити ext/readline через rubygems.org за допомогою gem install readline-ext.
  • Нам більше не потрібно встановлювати бібліотеки, такі як libreadline або libedit.

Оновлення C API

Оновлені C API

Наступні API оновлено.

Видалені C API

Наступні застарілі API видалено.

Оновлення стандартної бібліотеки

Оновлено наступні default gems.

  • RubyGems 3.5.0.dev
  • bigdecimal 3.1.4
  • bundler 2.5.0.dev
  • csv 3.2.7
  • fiddle 1.1.2
  • fileutils 1.7.1
  • irb 1.6.4
  • optparse 0.4.0.pre.1
  • psych 5.1.0
  • reline 0.3.3
  • stringio 3.0.7
  • strscan 3.0.7
  • syntax_suggest 1.0.4
  • time 0.2.2
  • timeout 0.3.2
  • uri 0.12.1

Оновлено наступні bundled gems.

  • minitest 5.18.0
  • rbs 3.1.0
  • typeprof 0.21.7
  • debug 1.8.0

Див. GitHub releases, такі як Logger, або changelog для деталей default gems або bundled gems.

Див. NEWS або журнали комітів для подробиць.

Унаслідок цих змін 1922 файлів змінено, 75283 вставок(+), 44896 видалень(-) з часу Ruby 3.2.0!

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

  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.gz

    SIZE: 20428213
    SHA1: 5445eec1cd9ddb44e03e74568cac94209c91b42d
    SHA256: c3454a911779b8d747ab0ea87041030d002d533edacb2485fe558b7084da25ed
    SHA512: 0f891f140ddc6372aa7c4459f8784126e0c341db7b80e72c51e441c5153c43c2d7b965f7807c076862ac84b9b8b0c6a66bbf66fc341746016151397bb21c782a
    
  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.xz

    SIZE: 15074600
    SHA1: 4c22ebca287c87811e1050bf4d59b7d32255b212
    SHA256: ae300b49e06c13087dd163b97eddd38db895dc8e0c9904284119795d75303fbb
    SHA512: 46c1134dba5810847f7f6b4298900a91f5225679d7873548b271f4ef2ad1dc168722562a2e468a2ccf136314176ee613d8c7792fd4411a3f7a44c80b93b417ee
    
  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.zip

    SIZE: 24846962
    SHA1: 31774fa653c54107b6afc30adda3a0350d8f41d2
    SHA256: 6ecafecf83f2cacf446b2326012f2b6ee1a0614d8dd29bb1fb3f105c27e2c553
    SHA512: 794bef847fefbbdbbdced85975a00c9289ef6464810408af3f0f2055052d6b5ef5576dbd41e0d87bb73f1ad276d8e27c36018610f8e2b9936828c0e692f611f0
    

Що таке Ruby

Ruby уперше розробив Matz (Yukihiro Matsumoto) у 1993 році, і зараз вона розвивається як Open Source. Вона працює на багатьох платформах і використовується по всьому світу, особливо для веброзробки.

Останні новини

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

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