Назад
Topcoat 0.9: Rust-застосунки отримали клієнтські сигнали та server push
SiTech AI Team2 წთ. საკითხავი

Topcoat 0.9: Rust-застосунки отримали клієнтські сигнали та server push

Tokio опублікувала огляд фреймворку Topcoat через два місяці після анонсу та випустила версію 0.9. Оновлення додає клієнтські сигнали, потокові оновлення інтерфейсу та server push через WebSocket, а в Toasty з'явилися нові макроси.

24 вересня 2026 року Tokio опублікувала у блозі статтю про Topcoat: від анонсу фреймворку минуло два місяці й вийшла версія 0.9. Автори тексту це Карл Лерч і Жульєн Шольц.

Topcoat це Rust-фреймворк full-stack, що об'єднує подання, компоненти, поштові розсилки, конвеєр ресурсів та ORM Toasty. Уся розмітка рендериться на сервері, тому компоненти можуть бути асинхронними й напряму звертатися до бази даних, без окремого API-шару.

Сигнали й shards: реактивність без WebAssembly

За інтерактивність відповідають сигнали, змінні стану, які ініціалізуються на сервері, але живуть у браузері, та runtime-вирази всередині макроса view!. Це повністю типізована підмножина Rust, яку Topcoat обчислює на сервері для першого рендеру й водночас компілює в JavaScript, тож проста поведінка, як-от перемикання панелі, не потребує ні звернення до сервера, ні WebAssembly.

Коли частині інтерфейсу потрібні свіжі дані, компонент позначають як shard: щойно його аргумент змінюється, браузер надсилає нове значення, сервер перерендерює компонент і повертає оновлений HTML, який замінюється на місці. Із версії 0.8 shard може читати сигнал під час рендеру, і тоді Topcoat перезавантажує лише ті частини сторінки, що відстежують це значення. Оновлені елементи не замінюються повністю, а зазнають морфінгу.

Потокові оновлення та server push у 0.9

Для оновлень, що надходять із сервера, призначені макроси live! та emit!: подання live! може надіслати необмежену кількість оновлень інтерфейсу в одній відповіді, тож спершу надходить індикатор завантаження, а після отримання даних на його місці з'являється реальний вміст.

Версія 0.9 додає server push: браузер відкриває WebSocket-з'єднання й підписується на зміни інтерфейсу через тривале з'єднання, як у прикладі чату, який наводять автори.

Toasty: нові макроси, документні поля й поліморфні зв'язки

У статті описано й Toasty, ORM, який готовий до використання з квітня 2026 року. Макрос update! генерує один SQL-запит, що оновлює поля та збільшує лічильники без попереднього завантаження рядка. Документні поля дають повноцінну підтримку JSON-колонок і транслюють фільтри в запити PostgreSQL JSONB, а поліморфні зв'язки виражаються комбінацією Rust-переліків і звичайних зв'язків.

Навіщо цей фреймворк

Лерч, колишній член core-команди Ruby on Rails, описує проєкт як спробу перенести продуктивність тієї епохи в Rust, де вебзастосунок працює в межах кількох десятків мегабайтів пам'яті. Його аргумент пов'язаний з AI-розробкою: добре визначені конвенції та абстракції допомагають моделі працювати швидше, з меншою кількістю токенів і помилок. Topcoat і Toasty це відкритий код на GitHub.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.