← На главную

Вышел Hanami 3.0: запросы в 3 раза быстрее, аллокаций в 14 раз меньше

01.07.2026 17:41 · hackernews

Вышел Hanami 3.0 — новая мажорная версия Ruby-фреймворка, построенного на модульности и чистоте кода. В этом релизе три крупных нововведения: собственные почтовики, встроенная интернационализация и полноценная поддержка Minitest. Почтовики (mailers) работают как самостоятельные объекты, интегрируются через Deps mixin, поддерживают SMTP из коробки и позволяют писать собственные методы доставки. Интернационализация (i18n) встраивается напрямую во фреймворк — достаточно подключить гем i18n, и в каждом приложении и слайсе появляются хелперы translate и localize. Минитаст теперь полноценно поддерживается наравне с RSpec: можно сгенерировать новое приложение с флагом --test=minitest.

Производительность выросла кардинально. Hanami 3.0 запоминает компоненты по умолчанию — каждый сервис создаётся один раз и переиспользуется. В тестовом приложении один и тот же запрос стал выполняться почти в 3 раза быстрее по HTTP, а количество аллокаций на запрос сократилось в 14 раз. p99 latency упала с 89 мс до 4 мс. Hanami Action в изоляции работает в 3.7 раза быстрее при 80% меньшем числе аллокаций. Hanami View ускорился в 2.9 раза. Всё это — без правок кода со стороны разработчика.

Логи стали цветными в разработке, SQL-запросы теперь пишутся на уровне :debug и подсвечиваются через rouge. Уровень логов можно задать через переменную окружения HANAMI_LOG_LEVEL. Наблюдение за ассетами (hanami assets watch) теперь подхватывает новые и удалённые точки входа без перезапуска. Парсинг тела запроса переехал из middleware в Hanami Action и настраивается через formats. Экспозиции вью по умолчанию перестали декорироваться — для декора надо явно вызывать .decorate.

Кодовая база упростилась: hanami-controller переименован в hanami-action, гем hanami-validations ушёл в отставку — теперь Hanami Action использует dry-validation напрямую. Фреймворк требует Ruby 3.3 или новее. Добавлены генераторы для провайдеров и почтовиков, опция --force для перезаписи файлов, флаг --name для пространства имён при создании проекта, а также настройка шаблонизатора через --template-engine. Маршрутизатор получил явные хелперы permanent_redirect и temporary_redirect. И, конечно, новый приветственный экран в стиле Hanakai.

Читать оригинал →