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:007251
用户头像

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

关注

评论

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

系统运维 SIG 直播: libbpf 编译平台 LCC——eBPF从入门到享受 | 第 20 期

OpenAnolis小助手

Linux 运维 内核 ebpf LCC

架构实战营|模块3

KDA

#架构实战营

使用 JavaScript 开发AR(增强现实)移动应用的预备知识和环境搭建

汪子熙

JavaScript AR SAP 增强现实 6月月更

电商后台权限设置有哪些规范你知道吗!

CRMEB

在 Flutter 中以编程方式截取任何 Widget

坚果

6月月更

GIT 常见问题

甜甜的白桃

git 版本管理 6月月更

网络七层结构是干啥的? 看这篇文章就够了

郑州埃文科技

TCP/IP 网络结构 传输网络

数字货币持币生息质押理财dapp系统开发

开发微hkkf5566

SAS击球实验室向青少年展示数据与分析的价值

E科讯

一二三线互联网公司划分标准和榜单

laofo

研发效能 互联网公司 一线大厂 二线互联网 一线互联网

什么是加密?有哪些加密类型和加密算法?逆天原创神作,值得一读!

wljslmz

加密 密码学 加密算法 网络技术 6月月更

这本书押中了2022北京高考作文题!

博文视点Broadview

服务管理与通信,基础原理分析

Java 架构 微服务 nacos Feign

java培训流Stream循环遍历list

@零度

stream JAVA开发

写入速度提升数十倍,TDengine 在拓斯达智能工厂解决方案上的应用

TDengine

数据库 tdengine 时序数据库

SpringBoot官方支持任务调度框架,轻量级用起来也挺香!

沉默王二

Java springboot

如何搭建短视频app源码,实现短视频内容的播放优化

开源直播系统源码

APP开发 短视频源码

Web Service进阶(七)浅谈SOAP Webservice和RESTful Webservice

No Silver Bullet

6月月更 SOAP Webservice RESTful Webservice

Linux驱动开发_倒车影像项目介绍

DS小龙哥

6月月更

优酷端侧弹幕穿人技术实战之:PixelAI移动端实时人像分割

阿里巴巴文娱技术

音视频 弹幕 人像 移动端 移动端开发

【LeetCode】爱吃香蕉的珂珂Java题解

Albert

LeetCode 6月月更

OA协同办公系统的发展趋势

力软低代码开发平台

我常用的两个翻译神器!程序员必备 | JavaGuide

JavaGuide

Vue 中 JSX 的基本用法

CRMEB

JavaScript原型链继承与盗用构造函数继承

大熊G

JavaScript 前端 6月月更

聚焦中国算力大会 | 浪潮集团肖雪: 数字化转型新场景激发算力需求

云计算

【Python技能树共建】正则表达式

梦想橡皮擦

6月月更

帮助中心对企业有用吗?要不要做帮助中心页面?

小炮

C#/VB.NET 在Word中设置纯色/渐变/图片背景

在下毛毛雨

C# .net word文档 背景设置

基于 spring-cloud-k8s 跨NS坑续集

Damon

微服务架构 云原生 6月月更

面试突击55:delete、drop、truncate有什么区别?

王磊

Java 面试

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