Спойлер: он хочет быть в 3 раза быстрее

Похвала Ruby как отличному языку для стартапов, прототипов и MVP - это то, на что мы могли очень часто наталкиваться в новейшей истории области разработки программного обеспечения. Ruby on Rails, предпочтительный фреймворк для Ruby, часто называют технологией запуска. Он был создан, чтобы гарантировать быстрый запуск, и это был первый фреймворк в своем роде . Многие другие игроки, такие как PHP и Python, копировали принцип RoR в своих фреймворках.

Однако, когда дело доходит до создания масштабных проектов, многие люди будут утверждать, что RoR - хороший выбор. Недостаток гибкости, производительности и масштабируемости - вот некоторые из проблем, которые решаются этой технологией в настоящее время.

Хорошая новость заключается в том, что новый выпуск Ruby 3.0 кардинально изменит правила игры. Основатели Ruby пообещали, что с 2020 года Ruby будет работать в три раза быстрее!

Слухи о том, что Руби умирает, на этот раз могут быть развеяны. Давайте сразу перейдем к делу и посмотрим, что принесет нам это новогоднее обещание Рубина.

Особенности Ruby Release 3.0, связанные с производительностью

Производительность памяти

Одна из оставшихся проблем с использованием памяти Ruby заключается в том, что при создании и удалении объектов они фрагментируют кучу. Это означает, что мы получаем дыры в памяти, поскольку используется больше страниц кучи, чем необходимо.

Новый Garbage Compactor (GP), поставляемый с этой версией Ruby 3x3, решит эту проблему. Подход состоит в том, чтобы закрепить некоторые объекты, а остальные можно переместить в кучу. Также следует отметить, что в этой версии будет полностью поддерживаться автоматическое уплотнение. В Ruby 2.7 сжатие можно запускать вручную.

Производительность процессора

Парень по имени Владимир Макаров, который улучшил производительность хешей в версии Ruby 2.4, снова столкнулся с проблемой производительности. На этот раз он взялся за крупный проект под названием RLT MJIT.

Этот невероятно амбициозный проект должен значительно улучшить производительность. Существующие инструкции YARV были полностью заменены новым набором инструкций RLT. Новый облегченный MJIT будет создавать код C из инструкций RTL, который затем будет скомпилирован в собственный код с помощью существующих компиляторов.

Однако этот совершенно новый язык передачи регистров (RTL) требует серьезной переписывания внутренних компонентов Ruby. На то, чтобы сделать все достаточно стабильным и объединить его с Ruby, могут потребоваться годы. Нам просто нужно подождать и посмотреть, выпустят ли они новый Ruby 3.0 с этими существенными изменениями.

Как мы можем это измерить?

Что касается людей, большинство из нас склонны терять вес и наращивать мышцы. Через несколько месяцев очень легко проверить, удачно ли было наше новогоднее решение или это просто очередная ложная шумиха. Однако все обстоит немного иначе, когда нам нужно подтвердить улучшения в языке программирования. Нам нужны инструменты несколько более сложные, чем весы или рулетка.

Optcarrot - это то, что вам нужно. Это официальный тест для Ruby 3x3 Release. Проект представляет собой рабочий эмулятор Nintendo, написанный на чистом Ruby. Вот цель, указанная в описании проекта:

«Конкретная цель - эмулятор NES (Nintendo Entertainment System), который работает со скоростью 20 кадров в секунду в Ruby 2.0. Оригинальная NES работает со скоростью 60 кадров в секунду. Если Ruby3x3 добьется успеха, мы сможем наслаждаться игрой для NES с Ruby! »

Нравится нам игры Nintendo или нет, я уверен, что мы хотели бы увидеть, как Ruby ускоряется в реальных действиях. Присмотритесь к проекту Rails Ruby Bench. Это тест, основанный на проверке производительности Ruby с использованием большого параллельного приложения Rails.

Что еще?

Помимо производительности, новый релиз Ruby 3.0 также включает в себя несколько других замечательных вещей. Предполагается, что в эту новую эру 3x3 нужно исправить многие недостатки. Параллелизм, статический анализ и проблемы перехода - вот некоторые из основных задач, которые решаются в настоящее время.

Заворачивать

Имейте в виду, что нет официальных объявлений о дате выпуска Ruby 3.0 и о том, что она нам принесет. Слухи достаточно сильны, чтобы мы верили, что он должен увидеть свет в январе 2020 года или даже раньше. Мы можем просто ждать и болеть за лучшее.

Я закончу несколькими резкими цитатами Матца, относящимися к горячим темам релиза 3.0 Ruby. Ну вот!

Производительность: «Ни один язык не является достаточно быстрым». - Мац

Параллелизм: «Я сожалею о добавлении потоков». - Мац

Статический анализ: «Ненавижу тесты». - Мац