После года разработки опубликован релиз Ruby 2.6.0, динамического объектно-ориентированного языка программирования, отличающегося высокой эффективностью разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD («2-clause BSDL») и «Ruby», которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3. Ruby 2.6 является шестым значительным выпуском, подготовленным в рамках планового процесса разработки, подразумевающего отведение года на подготовку функциональных улучшений и формирование каждые 2-3 месяца корректирующих выпусков.

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

  • Добавлена экспериментальная реализация JIT-компилятора, который позволяет ощутимо поднять производительность приложений на языке Ruby. В отличие от традиционных JIT, генерирующих на лету машинные инструкции, преложенный в Ruby JIT-компилятор вначале записывает на диск код на языке Си, после чего вызывает внешний Си-компилятор для генерации машинных инструкций (поддерживается вызов GCC, Clang и Microsoft VC++). Для активации JIT необходимо указать при запуске ruby опцию «—jit» или установить данную опцию в переменной окружения RUBYOPT. По сравнению с Ruby 2.5 включение JIT в среднем в 1.7 раза увеличивает производительность приложений, интенсивно использующих CPU. При этом разработка пока экспериментальная и плохо адаптирована для нагрузок, связанных с интенсивной работой с памятью;
  • Добавлен экспериментальный модуль RubyVM::AbstractSyntaxTree, предоставляющий метод парсинга, обрабатывающий передаваемые строки как код на языке Ruby и возвращающий абстрактное синтаксическое дерево (AST, Abstract Syntax Tree) для этого кода;
  • Для обращения к методу «Kernel#yield_self» теперь можно использовать псевдоним «#then». Для методов «Array#|» и «Array#-» предложены более читаемые псевдонимы «Array#union» и «Array#difference»;
  • Имена констант теперь могут начинаться с заглавных букв не из набора ASCII (например, сейчас можно писать «class Σ♥²; end
    «);

  • Добавлена поддержка не заканчивающихся диапазонов, например,
    «ary[1..]» или «(1..).each {…}»;

  • Добавлен класс Enumerator::Chain и реализованные в нём методы «Enumerable#chain» и «Enumerator#+» для создания цепочек перечисляемых значений;
  • В модули Proc и Method добавлена поддержка операторов «», например, конструкция «(f