50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

如何在 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:007403
用户头像

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

关注

评论

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

AI和社交媒体:改变信息传播的方式

测吧(北京)科技有限公司

测试

干货 | Elasticsearch Java 客户端演进历史和选型指南

腾讯云大数据

ES

云起无垠参编的《软件物料清单(SBOM)发展洞察报告》正式发布

云起无垠

使用br工具备份到local的一些操作

TiDB 社区干货传送门

迁移 备份 & 恢复 6.x 实践

站群服务器租用:为您的多站点网络提供支持

一只扑棱蛾子

站群服务器

达梦数据库接入案例—基于EntityFrameworkCore 6.x

为自己带盐

.net core 达梦 EFCore

【华秋干货铺】软硬结合板的阻抗计算,你会吗?

华秋电子

PCB

AI和语言翻译:跨文化交流的帮手

测吧(北京)科技有限公司

测试

Arbitrum公链系统开发丨ARB链代币质押挖矿系统开发

l8l259l3365

Pyth

RTE 领域近期词云统计发布;谷歌开始新一轮「瘦身」计划;使用ChatGPT之后智力提高 50%丨RTE开发者日报 Vol.50

声网

基于Web的智慧污水厂2D组态系统

2D3D前端可视化开发

组态软件 智慧水务 智慧污水处理 污水厂组态图 污水厂监控系统

迎产业东风,柔性电子供应链企业的机会与挑战

华秋电子

PCB

AI和安全性:网络安全的挑战与机会

测吧(北京)科技有限公司

测试

HarmonyOS应用开发Web组件基本属性应用和事件

HarmonyOS开发者

HarmonyOS

小度携手可口可乐,AIGC成就未来3000年时空畅想

新消费日报

机器学习——决策树模型

小魏写代码

文字图像转换的创新技术

百度开发者中心

#人工智能 生成式AI 千帆大模型平台

OpenHarmony系统能力SystemCapability使用指南

OpenHarmony开发者

OpenHarmony

处理更多数据,大幅降低成本!Milvus MMap 启示录

Zilliz

Mmap Milvus Zilliz 向量数据库 Milvus2.3

使用Docker构建轻量级Linux容器

互联网工科生

Docker 容器

AI和语音助手:智能助手的展露头角

测吧(北京)科技有限公司

测试

AI和智能家居:打造智慧生活

测吧(北京)科技有限公司

测试

揭秘 ChunJun:如何实现 e2e&session 日志隔离

袋鼠云数栈

大数据 开源

文心一言 VS 讯飞星火 VS chatgpt (93)-- 算法导论9.2 1题

福大大架构师每日一题

福大大架构师每日一题

SpringBoot拦截器和动态代理有什么区别?

王磊

Java Java面试题

Axeos 跨域解决指南,让你的接口请求畅通无阻

Liam

前端 后端 前端开发 跨域 axios

TiDB Serverless Branching:通过数据库分支简化应用开发流程

TiDB 社区干货传送门

在Mac上浏览Android设备文件:MacDroid pro最新中文版

胖墩儿不胖y

Mac软件 传输文件 文件传输工具

秒合约竞猜游戏app系统开发定制源代码部署

开发微hkkf5566

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