Через рік розробки виходить Ruby 2.6.0, динамічна об'єктно-орієнтована мова програмування, що характеризується високою ефективністю розробки програмного забезпечення та включає найкращі можливості Perl, Java, Python, Smalltalk, Eiffel, Ada та Lisp.
Код проекту поширюється за ліцензіями BSD ("BSDL з 2-х статей") та "Ruby", що стосується останньої ліцензії GPL і повністю відповідає GPLv3.
Ruby 2.6 - шоста основна версія, підготовлений як частина запланованого процесу розробки, який передбачає виділення року на підготовку функціональних удосконалень та створення корекційних версій кожні 2-3 місяці.
Основні нові функції Ruby 2.6.0
З цим новим випуском Ruby додано експериментальну реалізацію компілятора JIT, що дозволяє значно покращити продуктивність програм на мові Ruby.
На відміну від традиційних компіляторів JIT, які генерують машинні інструкції на льоту, запропонований компілятор JIT у Ruby спочатку записує код C на диск, а потім викликає зовнішній компілятор C для генерації машинних інструкцій (підтримується GCC, Clang та Microsoft VC ++).
Щоб увімкнути JIT, потрібно вказати параметр «–jit» під час запуску ruby або встановити цей параметр у змінній середовища RUBYOPT.
Порівняно з Ruby 2.5, включення JIT в середньому в 1.7 рази перевищує продуктивність програм, що працюють над інтенсивним процесором.
У той же час розробка все ще експериментальна і непридатна для навантажень, пов'язаних з інтенсивною роботою з пам'яттю.
Іншими вдосконаленнями, які були отримані в цій версії, були RubyVM :: AbstractSyntaxTree експериментальний модуль, який забезпечує метод синтаксичного аналізу, який обробляє передані рядки як Ruby-код і повертає абстрактне дерево синтаксису (AST) для цього коду.
Тепер псевдонім "# then" можна використовувати для доступу до методу "Kernel # yield_self". Для методів "Array # |" і "Array # -" запропонував більш читабельні псевдоніми "Array # union" і "Array # Difference".
Постійні імена тепер можуть починатися з великих літер, відмінних від ASCII.
Також була надана підтримка Transient Heap, theap, призначеної для об’єктів з короткою тривалістю життя з використанням певних класів (Array, Hash, Object, Struct).
Наприклад, завдяки theap, створення невеликих короткочасних існуючих хешів зараз відбувається вдвічі швидше. Тест rdoc показав збільшення врожаю на 6-7%.
Для підвищення продуктивності перемикань контексту пропонуються власні реалізації програм для архітектур arm32, arm64, ppc64le, win32, win64, x86 та amd64. "Fiber.yield" і "Fiber # resume" в 64-розрядних системах Linux тепер працюють майже в 5 разів швидше.
Загалом, інтенсивні програми демонструють збільшення продуктивності на 5%.
Основні вдосконалення Ruby 2.6.0
Отримано оновлену версію RubyGems 3.0.1, в якому підтримка параметрів «–ri» та «–rdoc» припинена, замість якої слід використовувати «–document» та «–no-document».
Тепер Bundler встановлено за замовчуванням для управління залежностями gem.
Додана підтримка незавершених діапазонів, наприклад, "ary [1 ..]" або "(1 ..). Кожен {…} ».
З інших покращень, які можна виділити, ви можете знайти:
- Опція винятку була додана до системного методу Kernel #, щоб викликати виняток про помилку замість повернення false.
- Режим OneShot був додано до модуля покриття, який перевіряє, чи кожен рядок виконується принаймні один раз.
- Клас Enumerator :: Chain та реалізовані в ньому методи "Enumerable # chain" та "Enumerator # +" додаються для створення ланцюжків перерахованих значень.
- До модулів Proc і Method додана підтримка операторів «<<» і «>>», наприклад, конструкція «(f << g) .call (3)» ідентична «f (g (3 )) ".
Як встановити Ruby 2.6.0 на Linux?
Щоб отримати цю нову версію Ruby, просто відкрийте термінал у вашій системі та введіть одну з наступних команд
Debian, Ubuntu та похідні
sudo apt-get install ruby-full
CentOS, Fedora та RHEL
sudo yum install ruby
Gentoo
sudo emerge dev-lang/ruby
Arch Linux, Manjaro, Antergos та похідні
sudo pacman -S ruby
OpenSUSE
sudo zypper install ruby
Команди apt-get yum etc переходять до сховищ за замовчуванням дистрибутивів, які, як правило, старі, і у вас буде не версія 2.6, а інша стара версія.