Cloudflare добавила поддержку Rust для создания воркеров

от автора

В Cloudflare внедрили поддержку создания воркеров на Rust без использования JavaScript. Соответствующий код опубликован на GitHub. 

Cloudflare Workers представили в 2018 году. Этот инструмент позволяет разворачивать JS-скрипты по всей облачной сети компании в пределах 30 секунд. Это позволяет перенаправлять запросы периферии, которая ближе всего к пользователю, что сокращает среднее время отклика и увеличивает производительность веб-приложений. Воркеры основаны на стандартном API от W3C для скриптов, работающих в фоновом режиме в браузере и перехватывающих HTTP-запросы, но код запускается не в браузере, а на серверах компании. Администраторы могут, в частности, перехватывать и модифицировать HTTP-запросы и высылать URL, статус, содержимое контейнеров header и body, отвечать на запросы из воркеров, отправлять HTTP-запросы сторонним серверам, управлять другими функциями CloudFlare, в том числе, кэшированием, создавать бессерверные приложения на веб-API и так далее.

Воркеры уже поддерживают запуск на многих языках с помощью WebAssembly. Однако для взаимодействия Rust с JavaScript API нужно было выполнить несколько шагов. Кроме того, не включалась поддержка API-интерфейсов Cloudflare, таких как KV и Durable Objects. 

Теперь разработчики Rust могут работать с воркерами, выполняя код внутри движка V8 WebAssembly:

use worker::*;  #[event(fetch)] pub async fn main(req: Request, env: Env) -> Result<Response> {     console_log!(         "{} {}, located at: {:?}, within: {}",         req.method().to_string(),         req.path(),         req.cf().coordinates().unwrap_or_default(),         req.cf().region().unwrap_or("unknown region".into())     );      if !matches!(req.method(), Method::Post) {         return Response::error("Method Not Allowed", 405);     }      if let Some(file) = req.form_data().await?.get("file") {         return match file {             FormEntry::File(buf) => {                 Response::ok(&format!("size = {}", buf.bytes().await?.len()))             }             _ => Response::error("`file` part of POST form must be a file", 400),         };     }      Response::error("Bad Request", 400) }

Чтобы создать собственный воркер в Rust, требуется одна команда:

# see installation instructions for our `wrangler` CLI at https://github.com/cloudflare/wrangler # (requires v1.19.2 or higher) $ wrangler generate --type=rust my-project

Таким образом, разработчики убрали весь связующий код и встроили компоненты, необходимые для создания небольших скриптов или полноценных приложений на Rust: маршрутизатор, функции HTTP, хранилища воркеров KV и переменные среды. 

В Cloudflare отметили, что выбрали Rust как растущий язык с мощной экосистемой. Команда заявила, что ждет отзывы и правки от разработчиков, а также расширяет штат, в том числе, открывает вакансии инженеров Rust.


ссылка на оригинал статьи https://habr.com/ru/articles/577270/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *