AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

数据中台建设(六):数据体系建设

Lansonli

数据中台 7月月更

Java编程

GalaxyCreater

Java

这款悄然崛起的国产API接口管理工具,你一定要晓得

王小凡

Java 程序员 开发工具 后端开发 API

深度剖析 Apache EventMesh 云原生分布式事件驱动架构

老周聊架构

云原生 全球架构师峰会 ArchSummit 8月月更 Apache EventMesh

Python中关于函数的那点事

Java学术趴

7月月更

Java面向对象

GalaxyCreater

Java 面向对象

leetcode 665. Non-decreasing Array 非递减数列(中等)

okokabcd

LeetCode 贪心算法 算法与数据结构

【PIMF】OpenHarmony 啃论文俱乐部—盘点开源鸿蒙三方库【3】

离北况归

OpenHarmony

架构实战营模块 8 作业

Naoki

架构实战营

行走的Offer收割机!首次公布Java10W字面经,Github访问量破百万

冉然学Java

MySQL Java 面试 Spring Boot CLI JVM; Redis 数据结构

Java线程

GalaxyCreater

Java

深入浅出边缘云 | 4. 生命周期管理

俞凡

架构 边缘计算 网络 深入浅出边缘云

我从Vuejs中学到了什么(一)

真嗣

前端 vuejs

你了解SpringBoot启动时API相关信息是用什么数据结构存储的吗?

宁在春

Java 源码 springboot 7月月更

CWE4.8 -- 2022年危害最大的25种软件安全问题

Tom(⊙o⊙)

软件安全 静态代码安全

开源当周上Github趋势全球第三的HTAP数据库,大家都在关注它什么?StoneDB社区答疑第一期来啦!

StoneDB

数据库 云原生 OLAP HTAP StoneDB

国内市场上的BI软件,到底有啥区别

石臻臻的杂货铺

7月月更

透过开发抽奖小程序,体会创新与迭代

小院里的霍大侠

创业 前端开发 创新 淘宝小程序 签约计划第三季

架构实战营|模块8

KDA

#架构实战营

消息队列消息数据存储MySQL表设计

泋清

#架构实战营

啃完阿里老哥这套Java架构速成笔记,我都能拿30K

王小凡

Java MySQL spring 程序员 面试

Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具

陈言必行

7月月更 签约计划第三季

架构实战营模块八作业

融冰

Jenkins + Docker + Github 实现自动化部署 Maven 项目

宁在春

Docker 运维 jenkins 签约计划第三季

自动化测试如何创造业务价值?

老张

自动化测试

最新发布!阿里巴巴专家亲自撰写,Dubbo 3.0 分布式实战(彩印版)

冉然学Java

Java 分布式 dubbo 框架 RPC 协议实现原理

架构实战营模块8消息队列表结构设计

地下地上

架构实战营

研发过程中的文档管理与工具

Java 文档 构架 文档管理

Java避坑指南:涉及金钱计算时使用BigDecimal如何避坑

Beaver

Apache EventMesh 分布式事件驱动多运行时

老周聊架构

云原生 事件驱动架构 全球架构师峰会 ArchSummit 8月月更

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