10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

如何在 Cloudflare Workers 上部署 Rust 生成的 WASM

  • 2019-04-09
  • 本文字数:914 字

    阅读完需:约 3 分钟

如何在Cloudflare Workers上部署Rust生成的WASM

Cloudflare最近开源了 Wrangler。这是一组 CLI 工具,用于构建、预览和发布 Cloudfare Workers,这些 Workers 用 Rust 语言编写并编译到 WebAssembly。


Wrangler 的目标是为开发人员提供端到端的体验,使他们能够在 Rust 中编写自己的无服务器功能,并在将其转换为 WebAssembly 后,在 Cloudflare Workers 上部署和运行这些功能。WebAssembly 编译步骤隐藏在 Wrangler CLI 后面。


要尝试使用 Wrangler,可以使用 cargo 执行 cargo install Wrangler 安装它。Wrangler 生成的工程的一般结构包括一个存储 Rust 代码的 src 目录,一个包含一个 worker.js 的 Worker 目录(可以从中提取 Rust 生成的代码)和几个元数据文件。Wrangler 有三个主要命令:build(构建)、preview(预览)和 publish(发布)。build 命令将所有 Rust 代码编译到 WebAssembly,而 preview 命令将允许你在 Cloudflare 基础设施上运行函数。不过,目前还不能在本地预览函数,但至少在 Cloudflare 基础设施上预览函数不需要 Cloudflare 账户。


你可以像往常一样编写 Rust 代码:你可以在你的 Cargo.toml 文件中引入任何指定它的外部依赖项。使用 wasm_bindgen 通过启用字符串、对象、类等来改进 wasm 和 JS 之间的通信。例如,你可以写这样一个简单的 Rust 文件:


use wasm_bindgen::prelude::*;
extern "C" { fn alert(s: &str);}
#[wasm_bindgen]pub fn greet(name: &str) -> String{ &format!("Hello, {}!", name);}
复制代码


该代码可以使用以下语法导入并在 worker.js 文件中执行:


const { greet } = wasm_bindgen;await wasm_bindgen(wasm)const output = greet('Worker')
复制代码


Cloudflare 计划向 Wrangler 添加更多的命令,包括对 linting、测试、基准测试和大小分析的支持。


Cloudflare Workers 是用 JavaScript 编写的无服务器函数,可以在分布世界各地的Cloudflare边缘节点运行。Cloudflare 表示,由于它们的边缘节点与终端用户非常接近,Workers 可以通过减少网络延迟来提高性能。Cloudflare Workers 使用 V8 JavaScript 引擎运行代码,但他们不使用 Node.js,而是依靠他们自己实现的一些 API 来提高效率和安全性。


查看英文原文链接:Deploying Rust-Generated WASM on Cloudflare Serverless Workers


2019-04-09 08:007350
用户头像

发布了 124 篇内容, 共 48.8 次阅读, 收获喜欢 177 次。

关注

评论

发布
暂无评论
发现更多内容

华为云大数据轻模式体验:忘掉底层烦恼,专注数据开发

华为云开发者联盟

大数据 Serverless 数据湖 数据开发 华为云

2022全网最详细的音视频开发学习路线,零基础到项目实战,从小白到音视频专家

Linux服务器开发

音视频 WebRTC ffmpeg 音视频开发 流媒体服务器开发

详细解读阿里云开源PolarDB总体架构和企业级特性

阿里云数据库开源

数据库 阿里云 polarDB

星际营23期开始招募 门槛高,但是优秀项目可获得全额奖学金,敢来挑战吗?

创业邦

《中国软件根技术发展白皮书(基础软件册)》发布!

opengauss

openGauss助力中国移动获 “ICT优秀案例”

opengauss

HAVE FUN | SOFARegistry 源码解析

SOFAStack

GitHub 开源 程序员 开发者 源码剖析

2022年3月中国数据库排行榜:TiDB “三连降”仍霸榜首,“常胜四将军”得分集体下跌

墨天轮

数据库 TiDB 国产数据库 KingBase gbase8a

不为人知的网络编程(十四):拔掉网线再插上,TCP连接还在吗?一文即懂!

JackJiang

网络编程 TCP/IP TCP协议 即时通讯IM

极速体验|使用 Erda 微服务观测接入 Jaeger Trace

尔达Erda

云计算 微服务 云原生 PaaS 分布式架构

在线YAML转TOML工具

入门小站

工具

在充满挑战的时代天翼云以数字化加速市域社会治理现代化

天翼云开发者社区

恒源云(GpuShare)_PRGC:基于潜在关系和全局对应的联合关系三元组抽取

恒源云

机器学习 深度学习 算法 知识图谱

ENS 域名终极指南

devpoint

以太坊 eth 3月月更 ens

Redis现网那些坑:用个缓存,还要为磁盘故障买单?

华为云数据库小助手

redis GaussDB GaussDB ( for Redis ) 华为云数据库

翻译 | 解读首部 Kubernetes 纪录片

RadonDB

开源 Kubernetes RadonDB

通过CRM系统提高生产力的技巧

低代码小观

企业管理 CRM 企业管理系统 CRM系统 客户关系管理系统

[架构实战营] 模块9设计

Vincent

「架构实战营」

一周信创舆情观察(2.28~3.6)

统小信uos

如何打造极速数据湖分析引擎

StarRocks

数据库 数据分析 StarRocks

上讯信息正式加入openGauss社区

经验分享 | 如何搭建FAQ/用户培训手册

小炮

运营 客户服务

上海英方软件正式加入openGauss社区

opengauss

Linux curl命令详解

学神来啦

云计算 Linux 运维 curl

高精度轻量级目标检测产业应用,实现多类通信塔识别

百度大脑

Linux之netstat命令

入门小站

Linux

人脸识别闸机惊艳美国运动员背后的黑科技是如何实现的?

天翼云开发者社区

Flutter ChartSpace:通过跨端 Canvas 实现图表库

字节跳动终端技术

flutter 字节跳动 前端 canvas 图表库

天翼云发布云原生关系型数据库TeleDB for openGauss

天翼云开发者社区

东方电机打造大国重器 携手天翼云挺起智能制造新脊梁 智能制造的力量 东方电机的数字化前行之路

天翼云开发者社区

以数字化为引领天翼云助力中安公司应急管理云平台上线

天翼云开发者社区

如何在Cloudflare Workers上部署Rust生成的WASM_云原生_Sergio De Simone_InfoQ精选文章