Противоречивые впечатления от текущего состояния разработки Ruby

Многим наблюдателям кажется, что Ruby находится в упадке. Но для многих рубистов у языка будет вторая весна. В чем причины этого? Давайте разберемся!

Руби мертва?

В последние годы популярность Ruby упала в индексах различных популярных языков программирования, таких как Tiobe или Pypl.

Rails, самая известная программная часть Ruby, долгое время правившая королем веб-разработки, но в последнее время тоже потеряла популярность. В частности, внезапный и стремительный рост числа узлов и неуклонный рост популярности Django подорвали статус Rails.

Еще одна проблема для сообщества Ruby заключалась в том, что язык стал печально известным из-за того, что он слишком медленный для веб-масштаба. (См. Мой ответ на проблему масштабируемости здесь). Эта репутация особенно проявилась после того, как Twitter отошел от Rails и использовал Scala для своих нужд.

Все это привело к слухам, что «Руби мертва». Но почему многие рубисты думают, что у Ruby действительно блестящее будущее?

Славное будущее Рубина

Ruby 3x3 и его будущее

Matz, создатель Ruby, попытался остановить это развитие, выдав Ruby 3x3 гола. И, боже, это возродило оптимизм в сообществе Ruby! Многие разработчики ждали этого релиза с большой надеждой. И с выходом Рождества 2020 оно наконец наступило!

Выполнила ли она все свои обещания? - Ну вроде.

В некоторых тестах производительность была в три раза выше, чем у Ruby 2.0, но не для больших приложений Rails. Но с выпуском Ruby 3 вложения в повышение производительности не прекратились, на самом деле они постоянно растут. Например, недавно Shopify, один из крупнейших пользователей Ruby / Rails, нанял некоторых разработчиков Ruby для реализации JIT-компилятора в реализации CRuby. При этом производительность должна продолжать становиться все лучше и лучше. Кроме того, в своем последнем выступлении на Euruko Мац снова акцентировал внимание на производительности, когда сказал, что Ruby 3.x будет в 3 раза быстрее, чем 3.0.

Для больших веб-приложений производительность процессора не является главной проблемой в большинстве случаев. Проблема заключается в операциях, связанных с вводом-выводом, и Ruby внес здесь несколько огромных улучшений! Теперь у нас есть API для волокон, позволяющий создавать что-то вроде зеленых потоков.

Благодаря этому интерпретатор Ruby может обрабатывать множество запросов одновременно и значительно увеличивать пропускную способность. С async gem у нас уже есть эталонная реализация для этого, которая может стать частью стандартных гемов для Ruby. Другим разработчикам гемов все еще требуется немного времени, чтобы использовать эту новую опцию, но в конечном итоге это будет огромным стимулом для экосистемы Ruby!

На мой взгляд, это будет иметь наибольшее влияние из всех функций, которые были добавлены в Ruby для целей 3x3.

Сэмюэл Уильямс, разработчик async gemset, недавно опубликовал в Твиттере несколько очень впечатляющих тестов, демонстрирующих масштабируемость этого подхода.

Еще одним преимуществом цели Ruby 3x3 является то, что у сообщества Ruby теперь есть несколько хороших вариантов для улучшения инструментов IDE.

Stripe с открытым исходным кодом Sorbet, средство проверки типов для ваших программ Ruby. Если вам не нравится сорбет, вы можете использовать Steep. Он работает с отдельными файлами для типов, что-то вроде TypeScript отлично справляется.

Альтернативные драгоценные камни высокого качества

Еще одно замечательное событие в сообществе Ruby - это то, что у нас есть действительно качественные альтернативы для хорошо известных драгоценных камней.

  • Sequel: этот драгоценный камень - давняя альтернатива Active Record. Он имеет систему плагинов, которая может загружать множество дополнительных функций. Производительность этого драгоценного камня также лучше, чем ActiveRecord в большинстве тестов. Что выделяется в этой жемчужине, так это то, что практически в любой момент времени нет открытых проблем. Сопровождающий, Джереми Эванс, отлично держит все в чистоте!
  • Hanami: Hanami - еще один давний веб-фреймворк, который сейчас находится в стадии перехода. В нем уже были внесены значительные улучшения, и план на будущее мне кажется очень многообещающим (вот презентация основного разработчика).
  • Небольшие, очень ориентированные и высококачественные библиотеки. Одной из основ веб-фреймворка Hanami является dry-rb gemset. Это специализированные библиотеки, которые являются ценным дополнением почти ко всем приложениям Ruby, где любой драгоценный камень выполняет одну задачу и делает это хорошо.

Продолжение инвестиций в Ruby

Еще один маяк надежды для Ruby - это постоянные и постоянно увеличивающиеся инвестиции в Ruby. Как упоминалось выше, Shopify делает большие ставки на Ruby и нанял нескольких разработчиков ядра Ruby / Rails.

Некоторые из них работают над новой и новой технологией JIT под названием YJIT. Основная идея, лежащая в основе этого JIT-компилятора, называется Basic Block Versioning (BBV), что-то, что один из разработчиков, работающих над этим, Maxime Chevalier-Boisvert, описал / работал над своей докторской диссертацией. Тезис. Основная цель этой JIT - интегрироваться с CRuby и повысить производительность серверов Rails.

Еще одно вложение Shopify и Oracle - это исследование TruffleRuby, высокопроизводительной реализации Ruby с использованием технологии GraalVM. Прямо сейчас TruffleRuby не может запускать Rails из-за того, что некоторые расширения C не работают. Но для небольших скриптов и программ, которые могут работать с этой реализацией, выигрыш в производительности огромен.

Исследования этой реализации также приносят свои плоды для CRuby, как это было недавно замечено в разговоре Ruby Kaigi 2021 о формах объектов.

Другие крупные пользователи Ruby, инвестирующие в платформу, включают Stripe, которая разрабатывает Sorbet, GitHub, у которого есть несколько основных разработчиков Rails, а также Heroku, Cookpad и многие другие.

С таким типом корпоративного запекания языка очень маловероятно, что Ruby выйдет из строя в ближайшее время!

Последние мысли

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

Еще одна область, требующая улучшения, - это документация для этих драгоценных камней. Таким образом, чтобы другие могли начать использовать альтернативы и получить лучший опыт из возможных. Кроме того, давайте распространим информацию: Руби не умерла, но ее ждет прекрасное будущее!