The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Опубликован язык программирования Ruby 4.0

25.12.2025 13:08

Состоялся релиз Ruby 4.0.0, динамического объектно-ориентированного языка программирования, сосредоточенного на высокой эффективности разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и совместима с GPLv3.

Основные улучшения:

  • В состав включён новый JIT-компилятор ZJIT, позиционируемый как следующее поколение Ruby JIT. По умолчанию продолжает использоваться JIT-компилятор YJIT, а ZJIT включён в качестве опции (активируется флагом "--zjit"). Как и YJIT новый JIT-компилятор написан на языке Rust командой разработчиков из компании Shopify в рамках инициативы по увеличению производительности Ruby-программ, использующих фреймворк Rails и вызывающих очень много методов. На текущем этапе развития ZJIT быстрее интерпретатора, но пока отстаёт по производительности от YJIT (ожидается, что в Ruby 4.1 ZJIT будет стабилизирован и обгонит по производительности YJIT).

    В отличие от YJIT новый JIT-компилятор транслирует байткод виртуальной машины YARV не в низкоуровневое промежуточное представление, близкое к машинному коду, а в высокоуровневое промежуточное представление SSA (Static Single Assignment), позволяющее выполнять дополнительные фазы оптимизации и проводить оптимизацию крупных блоков кода, а не только текущих операций. Для привлечения к работе новых участников ZJIT реализует классическую архитектуру JIT, использующую накопленные интерпретатором исторические данные о типах, вместо применённой в YJIT усложнённой техники версионирования базовых блоков (LBBV - Lazy Basic Block Versioning).

  • Добавлен экспериментальный класс Ruby::Box с реализацией механизма изоляции, позволяющего разделить выполнение в одном процессе классов, модулей и monkey-патчей (подменённых методов и атрибутов классов). При помощи Ruby::Box также можно отделить выполнение кода приложения от Ruby-библиотек, обеспечить изоляцию тестов и организовать параллельное выполнение web-обработчиков в одном процессе сервера приложений (например, для постепенной замены одной версии кода на другую или обновления зависимостей). Для активации Ruby::Box следует выставить переменную окружения "RUBY_BOX=1".
    
       # foo.rb
       class String
         def self.foo = "foo"
       end
    
       # main.rb
       box = Ruby::Box.new
       box.require('foo')
    
  • Модернизирована реализация модели акторов Ractor, предоставляющая абстракцию в стиле "акторов" (ruby actor) для обеспечения потокобезопасного параллельного выполнения программы с взаимодействием между потоками через передачу сообщений. Добавлен класс Ractor::Port, решающий проблемы, связанные с отправкой и приёмом сообщений. Добавлен метод Ractor.shareable_proc для упрощения совместного доступа к объектам Proc из разных акторов. Проведена оптимизация структур данных, нацеленная на сокращение конфликтов при выставлении глобальных блокировок и повышения эффективности использования кэша CPU. В следующем году Ractor планируют перевести в разряд стабильных возможностей.
    
      port1 = Ractor::Port.new
      port2 = Ractor::Port.new
      Ractor.new port1, port2 do |port1, port2|
        port1 << 1
        port2 << 11
        port1 << 2
        port2 << 12
      end
      2.times{ p port1.receive } #=> 1, 2
      2.times{ p port2.receive } #=> 11, 12
    
  • Оператор "*nil" теперь сразу возвращает пустой массив ("[]") без промежуточного вызова метода "nil.to_a", по аналогии с тем как "**nil" сразу возвращает пустой хэш, не вызывая "nil.to_hash".
  • Разрешено разбивать строки с логическими операторами "||", "&&", "and" и "or" таким образом, что следующая строка начинается с оператора.
    
      if condition1
         && condition2
        ...
      end
    
  • Добавлены методы Array#find и "Array#rfind" для более эффективного поиска элементов в массиве, работающие быстрее, чем "array.reverse_each.find" и "Enumerable#find".
  • В число встроенных классов переведены классы Set и Pathname.
  • Расширены возможности многих базовых классов, таких как Binding, Enumerator, ErrorHighlight, Fiber, File, IO, Kernel, Math, Proc, Range, Socket, String, Thread.
  • Обновлены версии встроенных и входящих в стандартную библиотеку gem-модулей.


  1. Главная ссылка к новости (https://www.ruby-lang.org/en/n...)
  2. OpenNews: Основные разработчики Ruby взяли на себя управление GitHub-репозиторием RubyGems
  3. OpenNews: Отстранённые мэйнтейнеры RubyGems.org основали альтернативный репозиторий Gem Cooperative
  4. OpenNews: Опубликован язык программирования Ruby 3.4.0
  5. OpenNews: В кодовую базу Ruby принят новый JIT-компилятор ZJIT
  6. OpenNews: Доступен встраиваемый интерпретатор mruby 3.2
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64494-ruby
Ключевые слова: ruby
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (26) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:45, 25/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    >Разрешено разбивать строки с логическими операторами "||", "&&", "and" и "or" таким образом, что следующая строка начинается с оператора.

    Не прошло и 10 лет

     
  • 1.2, Аноним (2), 13:55, 25/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну. Тот один проект, который используется, когда-нибудь переползет на эту версию. Но это не точно.
     
     
  • 2.9, mos87 (ok), 14:47, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    1 миллион проектов на RoR действительно если и будет переползать, то долго.
     
     
  • 3.13, Аноним (2), 15:11, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я же говорю - "который используется".
     

  • 1.3, Аноним (3), 13:58, 25/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Какова актуальность данного языка в 2025 году?
     
     
  • 2.4, Аноним (4), 14:15, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Актуальная актуальность - куча новых веб-приложений стартует на рельсах
     
     
  • 3.5, Аноним (3), 14:18, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В смысле, fullstack на RoR, или только бэкенд (api)? Вроде как сейчас отдельные фронтенды и бэкенды в моде.
     
     
  • 4.21, Аноним (4), 16:35, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Кому как нравится. Я работаю над одним продуктом, в котором используется Stimulus и ERB (получается, full stack), и над другим продуктом, в котором только бэкенд
     
  • 3.7, Аноним (7), 14:45, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Прямо таки кучи?
     
     
  • 4.22, Аноним (4), 16:36, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Прямо таки да - рельса до сих пор считается очень удобной для того, чтобы запилить какой-нибудь POC или MVP
     
  • 3.8, penetrator (?), 14:46, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    примеры есть?
     
     
  • 4.10, Анонимный Анон (?), 14:59, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Как минимум кучи компаний и организаций используют GitLab
     
  • 4.23, Аноним (4), 16:38, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Можно на гитхабе отфильтровать в поиске по публичным репам. Я имел в виду не кучу больших продуктов, которые начинаются на рельсе, а кучу всяких разных любительских (и не только) штук, которые начинаются на рельсе
     
  • 2.12, Аноним (12), 15:05, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ровно зеро.
     
     
  • 3.25, Аноним (25), 16:38, 25/12/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.14, Doctorrr (ok), 15:24, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, в новости shopify поддерживает разработку новых компиляторов. Зарплаты рубистов на рынке достаточно высокие. Значит...
     
     
  • 3.15, Аноним (3), 15:33, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зарплаты где? В Америке? В СНГ и Европе почти нет вакансий на Руби, а если и есть, то там надо чтобы и шнец, жнец, и на дуде игрец, и руби идёт не в первых ролях.
     
  • 3.16, Gemorroj (ok), 15:44, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    так кроме этих упортоых из shopify никто руби и не пользуется.
     
     
  • 4.26, Аноним (4), 16:39, 25/12/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.17, waylandbeliver (ok), 15:58, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    До сих пор поддержка работы на windows хуже чем у python/php/js (и в том же VSCode), это всё что нужно знать.
     
     
  • 3.24, Аноним (4), 16:38, 25/12/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.19, Аноним (19), 16:13, 25/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Актуальность следующая:

    Доля рынка PHP: 75%
    Доля рынка Ruby: 6%

    Нетрудно догадаться, что актуальности никакой.

     

  • 1.6, Аноним (6), 14:42, 25/12/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     
  • 1.11, Аноним (12), 15:05, 25/12/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.18, Аноним (19), 16:04, 25/12/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     
  • 1.20, zionist (ok), 16:14, 25/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня этот язык ассоциируется с ютуб каналом "Программист из Сан-Франциско" Романа Пушкина, который использует его профессионально, в перерывах между съёмками бомжей и помоек Сан-Франциско.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру