Выпущен Ruby 3.4 с «it», модульным сборщиком мусора и улучшенным YJIT
Ruby, бесплатный высокоуровневый язык программирования общего назначения с открытым исходным кодом, сегодня на Рождество выпустил новую версию 3.4.0 (затем 3.4.1 с быстрым исправлением)!
В выпуске появилась ссылка на параметр блока it
, которая ведет себя почти так же, как _1
. Как описано в запросе функции:
it
реализован как частный случайgetlocal
insn, а не как метод.it
без аргумента считается_1
или обычной локальной переменной, если она определена.it
считается вызовом метода только в том случае, если у него есть какие-либо позиционные/ключевые слова/блочные аргументы.
В Ruby 3.4 библиотека сокетов теперь включает Happy Eyeballs версии 2 (RFC 8305). Это обеспечивает минимальные задержки соединения, даже если определенный протокол или IP-адрес задерживается или недоступен.
Эта функция включена по умолчанию. Однако его можно отключить либо для каждого метода, используя аргумент ключевого слова fast_fallback: false
, либо глобально, установив переменную среды RUBY_TCP_NO_FAST_FALLBACK=1
или вызвав Socket .tcp_fast_fallback=false
В выпуске также представлен модульный сборщик мусора (GC). Его можно включить во время сборки с помощью параметра конфигурации --with-modular-gc
. Для загрузки во время выполнения используйте переменную среды RUBY_GC_LIBRARY
.
Встроенный сборщик мусора был разделен. Его можно собрать как библиотеку и включить с помощью переменной среды RUBY_GC_LIBRARY=default
. Также существует экспериментальная библиотека GC на основе MMTk, которую можно собрать и затем включить с помощью RUBY_GC_LIBRARY=mmtk
.
В новой версии также синтаксический анализатор по умолчанию заменен с parse.y на Prism. А предыдущий парсер доступен с помощью аргумента командной строки --parser=parse.y
.
Компилятор YJIT был улучшен: улучшена производительность на платформах x86-64 и Arm64, а также уменьшено использование памяти за счет сжатых метаданных и единого ограничения памяти.
В то же время есть новая опция команды --yjit-mem-size
для унификации ограничения памяти (по умолчанию 128 МБ) для отслеживания общего использования памяти YJIT, а также --yjit-log
, которая включает журнал компиляции для отслеживания того, что компилируется.
Другие изменения в Ruby 3.4.0 включают:
- Теперь поддерживается разделение ключевых слов
nil
при вызове методов. - Передача блоков и аргументы ключевых слов больше не разрешены в index.
- Добавьте
GC.config
, чтобы разрешить настройку переменных конфигурации в сборщике мусора. - Введите параметр конфигурации
rgengc_allow_full_mark
GC. - Добавьте
Ractor.main?
,Ractor.[]
иRactor.[]=
.
Также есть другие основные классы, стандартная библиотека, обновления API и исправления ошибок. Подробности смотрите в официальном примечании к выпуску.
Как установить Руби 3.4.1
Ruby доступен в App Center (или в программном обеспечении Ubuntu) как официальный пакет Snap, хотя НЕ обновлен до последней версии на момент написания.
Если вы не можете дождаться Snap или стороннего менеджера пакетов, вы можете загрузить исходный архив, нажав кнопку ссылки ниже:
Загрузить Ruby (tarball): https://cache.ruby-lang.org/pub/ruby/
И вот пошаговое руководство (Метод 4), рассказывающее о том, как собрать его из исходного кода.