Ждёт ли нас Ruby-ренессанс?
Дело идёт к концу года. Обычно все подводят итоги и пытаются заглянуть в будущее. Мы тоже решили посмотреть на факты и подумать, а как вообще может развиваться Ruby в 2022-м?
YJIT в Ruby 3.1 — вычисления станут быстрее
Традиционно на рождество Юкихиро Мацумото планирует один из очередных релизов. Ближайший — Ruby 3.1. Он уже доступен в preview, можно установить и «потрогать».
Сообщество активно обсуждает грядущее обновление. Одна из основных интересных фишек, которая нас ждёт — YJIT, который позволяет компилировать код, ускоряя его. Его сделали в Shopify, он превосходит текущую версию JIT по производительности на 20%.
Вообще JIT даёт прирост за счёт того, что Ruby-код компилируется в машинный код и выполняется не виртуальной машиной, а центральным процессором. Это может ускорить выполнение кода в 10-15 раз, но технология уже применяется в текущей версии Ruby. Поэтому заявление про 20% прирост у YJIT кажется немного… маркетинговым. Ждать чудес не стоит, и до этого всё работало довольно неплохо.
Есть ещё нюанс — JIT иногда не ускоряет, а (вот так сюрприз) замедляет работу. В Ruby есть 2 режима работы: виртуальная машина (по умолчанию, максимально совместима со всеми расширениями, но низкая скорость) и JIT (пересборка в машинный код). Второй режим полезен там, где идут расчёты. Он действительно может кратно их ускорить. При этом JIT довольно сложно устроен, у него есть проблемы с совместимостью, что и приводит к замедлениям.
В Java, JavaScript или C#, например, JIT включен всегда. Ruby — сложный язык с богатой семантикой, в нём много динамики, куча хуков. По сути, программа постоянно перестраивает себя в памяти. Для языков с такой сложной семантикой сделать JIT, который будет всегда ускорять код и не будет допускать ошибок — сложная инженерная задача. Поэтому в Ruby (и Python) JIT ситуативный, включаемый, и хорошим тоном считается использовать его только для небольших участков программ, где он действительно может принести пользу.
Итого — Shopify всё равно большие молодцы, конечно. YJIT — это возможность поработать со старыми кусками кода, которые вы хотели ускорить, но старый JIT не справился. Пробуйте смелее.
Разработка на Windows с WSL 2
На нашем последнем Ruby-митапе один из спикеров рассказывал про подсистему Windows для Linux. Она была добавлена чуть больше года назад, а за это время мы, конечно, разобрались, как с ней быть.
Сначала пара дисклеймеров: Windows это все ещё 90% рынка, кто бы что не говорил. Тут не место холиварам на тему «все и без этого жили». Теперь будут жить комфортнее. Кроме этого, пока что Ruby показывает не очень хорошие результаты на M1 процессорах от Apple. Самое время to think different, и вот почему.
Во-первых, в Windows наконец-то можно комфортно заниматься разработкой на Ruby (а ещё на Python, PHP, JS и так далее). Конечно, Ruby и до этого работал, но это работа «ядра языка». А вот многие штуки из экосистемы не работают.
Раньше разработчики на винде страдали, постоянно что-то ломалось или вело себя непредсказуемо. А теперь на смену linux-овым виртуалкам, настроенным вручную, пришло официальное коробочное решение — полноценная песочница. Windows при этом умеет ходить в неё, как к себе домой, например, через cmd.
Во-вторых, теперь мы можем выбирать себе совершенно любой сетап для работы, по-всякому настраивать собственную экосистему, потому что кроме «Mac или Linux» у разработчиков появился третий вариант — детище Microsoft.
Ждёт ли Ruby «вторая жизнь»?
На HackerNews появилось интересное обсуждение — ждёт ли Ruby новая волна популярности в связи с динамичным развитием?
Смотрите сами: выходит 2 обновления за год, добавляются топовые фишки для языка (типы, pattern matching). DHH выпускает рельсы за рельсами и тоже добавляет революционные решения типа Hotwire (про него можно почитать в предыдущем выпуске).
К тому же из-за пандемии происходит масштабная «цифровизация». Компании неожиданно поняли, что мир изменился, много людей теперь работает из дома, логистика стала совершенно другой. Некоторые бизнес-процессы умирали десятилетиями и закончились, когда всем вдруг стали нужны электронные услуги, государственные сервисы и возможность решать задачи без личного присутствия. Сюрприз — для этого нужны программисты, нужно быстро выкатывать качественные фичи.
Причём тут Ruby? Последние 15 лет стек Ruby — это быстрое выкатывание бизнес-фичей. Ruby + Rails — это коробочное фулл-стек решение, практически станок для печатания бизнес-фичей. Профессиональный, очень удобный и приятный. Вся экосистема языка под это заточена.
И для нового витка популярности время самое подходящее. Открыто окно возможностей в связи с COVID’ом. К тому же — у Ruby и Rails очень яркие и мощные лидеры, которые тащат эти продукты вперед, делятся своим видением.
Что до этого нам, программистам на местах? Ждём роста интереса к Ruby, появление обучающих курсов. Могут подняться зарплаты из-за спроса на Ruby-разработчиков.
С ноября 2020-го Ruby уже поднялся на 2 позиции в индексе TIOBE. Кто знает, может и в десятку попадёт?
Вакансии
Удаленка / Офис
Evrone
Мы открыты для новых Ruby-разработчиков. Evrone работает удалённо с первого дня, участие в open-source проектах оплачивается, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.