Rust, популярный для других задач, обычно не используется в веб-разработке. Однако это может измениться.
Учитывая, что ИИ берет на себя основную нагрузку, разработчики могут рассмотреть этот язык программирования благодаря его производительности во время выполнения и гарантиям безопасности, отметил Карл Лерхе, ведущий инженер Amazon Web Services, выступая на виртуальной конференции ScyllaDB’s 2026 P99 на прошлой неделе.
Лерхе представил свой последний проект Topcoat — фреймворк для запуска веб-приложений, написанных на Rust.
Лерхе, возможно, наиболее известен как создатель Tokio — самого популярного асинхронного рантайма Rust в этой экосистеме.
«Три года назад, если бы я сказал, что Rust может быть лучшим языком для создания веб-приложений, вы бы, вероятно, назвали меня сумасшедшим», — сказал он виртуальной аудитории.
Веб-разработчики тяготеют к наиболее знакомым им языкам. В наши дни это JavaScript или, возможно, Ruby.
Некоторые веб-фреймворки уже используют Rust. Leptos и Dioxus компилируют Rust в WebAssembly, который поддерживается большинством браузеров. Этот подход отлично подходит для задач, требующих интенсивных вычислений, хотя время начальной загрузки может быть существенным недостатком.
Topcoat компилирует ваш код Rust в более удобный для веба JavaScript. Для Лерхе JavaScript остается лучшим способом взаимодействия с Document Object Model (DOM) браузера.
«В целом, подход любого Rust-фреймворка можно проследить до другой экосистемы, обычно очень популярной. Вы не можете указать на какой-либо существующий фреймворк как на основной источник вдохновения [для Topcoat]», — отметил фронтенд-разработчик Кен Колман в обзорном видео на своем YouTube-канале «Code to the Moon».
Работа на стороне сервера
Лерхе признал, что Topcoat не предназначен для создания сложных приложений масштаба, скажем, Figma, но его можно легко использовать для обычных браузерных приложений, управляемых базами данных, что составляет 90% веба сегодня.
В отличие от большинства современных JavaScript-фреймворков, Topcoat отказывается от текущего определения реактивности, когда логика программы загружается в браузер в начале сессии. Вместо этого большая часть логики выполняется на сервере, и только результаты передаются в браузер (разработчики по-прежнему могут писать клиентскую логику, используя подмножество Rust, которое Topcoat автоматически компилирует в JavaScript для браузера).
Это старая идея, переосмысленная с использованием лучших технологий. Серверный рендеринг предшествует реактивному программированию (см. Server-Side Includes от Apache). Лерхе признал, что с серверным рендерингом «может показаться, что мы возвращаемся в старые времена полной перезагрузки страницы при каждом клике, но на самом деле вы можете получить почти все, что вы считаете реактивным, с помощью серверного рендеринга».
Однако серверное программирование в последнее время набирает обороты, особенно среди разработчиков, недовольных React и другими фреймворками. HTMX, Datastar и Phoenix LiveView рендерят веб-страницы на сервере, отправляя их обратно в браузер почти полностью готовыми.
Topcoat просто корректирует их идеи, чтобы они хорошо сочетались с Rust, сказал Лерхе. Когда пользователь нажимает кнопку на веб-странице, вся страница не перезагружается. Возвращается и обновляется только HTML-фрагмент для этого компонента, обновляемый сервером.
JavaScript на фронтенде, Rust на бэкенде
Topcoat экономит время загрузки, рендеря все компоненты одновременно, а не по одному. Кроме того, загрузка данных не блокирует загрузку страницы. Сервер может отправить веб-страницу с заполнителями, в которые будут поступать данные.
Одно из главных преимуществ Topcoat заключается в том, что он предоставляет способ для компонента, уже находящегося на сервере, напрямую взаимодействовать с базой данных, благодаря предыдущему проекту Лерхе под названием Toasty — асинхронному объектно-реляционному отображению баз данных на основе Rust (о котором он рассказывал на P99 2024).
«Вы можете выполнять рендеринг непосредственно с данными сразу же, поэтому вам не нужно разбираться, как их сериализовать, отправлять клиенту, десериализовать», — сказал он.
Перенося загрузку данных глубоко в рендеринг страницы, сервер может немедленно отправить заголовок HTML-шаблона клиенту, позволяя браузеру начать предварительную загрузку ресурсов (таких как CSS или изображения), пока сервер рендерит остальную часть страницы.
«Простота невероятна, и это то, чего нам очень не хватало в этой области. Я чувствую, что тот, кто не очень хорошо знает Rust, сможет довольно быстро освоить эту штуку», — сказал Колман. Он согласился с Лерхе в том, что Topcoat лучше всего подходит для небольших веб-проектов, учитывая, что Topcoat использует только подмножество синтаксиса Rust.
«Есть что-то особенное в том, чтобы иметь полный синтаксис Rust в вашем распоряжении», — сказал он. ®
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Joab Jackson




