Topcoat

Узнал из новостей. Tokio team выпустили новый фреймворк. Называется Topcoat.

Tokio это те ребята, которые сделали асинхронность в Rust. Серьёзная контора. Если они что-то выпускают, это не просто так.

Topcoat это full-stack фреймворк для Rust. То есть всё в одном. Роутинг, шаблоны, отзывчивость, работа с базой. Не надо собирать из десяти библиотек. Пришёл, взял, делаешь.

Что такое full-stack

Объясню на пальцах.

Обычно сайт делают из двух частей. Одна часть на сервере, другая в браузере. Сервер отдаёт данные, браузер их рисует. Между ними мост. Данные туда-сюда, запросы, ответы. Сложно, долго, больно.

Full-stack это когда всё в одном месте. Ты пишешь один код, а он работает и на сервере, и в браузере. Не надо строить мост. Не надо думать, где что лежит. Всё рядом.

Что интересного

Главная фишка Topcoat. Они не пошли по пути Leptos и Dioxus. Те компилируют Rust в WebAssembly и гоняют в браузере. Мощно, но тяжело. Браузер должен скачать кусок кода, распаковать его, запустить. Всё это время.

Topcoat сделал иначе. Всё рисуется на сервере. HTML приходит готовым. А отзывчивость добавляется через маленькие инструкции. Похоже на HTMX, но умнее.

Как это работает. Ты пишешь обычный Rust. Выражения с долларом и скобками. Они проверяются компилятором, а потом превращаются в JavaScript. Тот же код, но работает и на сервере при первой отрисовке, и в браузере мгновенно. Без WebAssembly. Без отдельной сборки для браузера.

Пример

Кнопка с тогглом. Нажал, состояние поменялось. Всё в браузере, без запроса на сервер. Мгновенно.

А если нужны свежие данные с сервера, например результаты поиска, то помечаешь компонент специальной меткой. Он перерисовывается на сервере, когда аргументы меняются, и HTML подменяется на месте. Только то, что изменилось.

Что это даёт

Меньше кода. Не надо писать отдельно сервер и клиент. Не надо строить API. Не надо сериализовать данные туда-сюда. Компоненты могут быть асинхронными и напрямую ходить в базу.

Меньше веса. Нет WebAssembly-бандла. Нет отдельной сборки для браузера. Страница приходит готовой, а отзывчивость это маленькие инструкции.

Проще для поисковиков. Всё рендерится на сервере. Google видит готовый HTML. Не надо ничего гидрировать.

Для кого

Carl Lerche, основатель Tokio, сказал прямо. Они делают это для тех, кто уже пишет на Rust. Бэкенд, CLI, встраиваемые системы. А теперь хочет и веб. Чтобы не прыгать в другой язык, не собирать зоопарк из библиотек.

Он также сказал, что AI сильно сократил разрыв в продуктивности Rust. Раньше ты тратил кучу времени на борьбу с компилятором и экосистемой. Теперь AI помогает. И Topcoat делает так, чтобы помочь ещё больше.

Мой взгляд

Я это не пробовал. Не ставил. Не собирал. Просто прочитал новости.

Но интересно. Потому что это другой путь. Leptos, который у меня сейчас, рендерит на сервере и гидрирует в браузере. Тяжело. Topcoat не гидрирует. Он просто шлёт HTML и маленькие инструкции. Легче.

И это от Tokio. Не от одиночки. Не от стартапа на коленке. Это люди, которые сделали асинхронный Rust. Если они берутся за веб, значит, что-то поняли.

Не побегу переписывать блог. Пока рано. Фреймворк молодой, версия 0.9, обещают breaking changes. Мне нужна стабильность.

Но следить буду. Потому что такие вещи меняют расклад. И если через год Topcoat будет стабильным, я вернусь к этому разговору. Как с Azumi. Как с Mojo.

Пока просто читаю новости. И запоминаю.