本周 Rust 和 WebAssembly 15
大家好,欢迎来到本周 Rust 和 WebAssembly 的另一期!
Rust 是一种系统语言,追求安全、并发和速度的三重奏。
WebAssembly 是一种基于堆栈的虚拟机和指令集。它快速、安全、可移植,并且是开放 Web 平台的一部分。通过编译到 WebAssembly,我们可以在 Web 上运行 Rust 代码!
这是一份关于 Rust 和 WebAssembly 的进展和社区的每周总结。
我们错过了什么吗?在 @rustwasm 上发推文或 向我们发送拉取请求。
想参与 Rust 和 WebAssembly 吗?加入 Rust 和 WebAssembly 工作组!
来自网络的新闻和博客文章
想确保下次我们发布时,某些内容会出现在此列表中吗?在此问题上发表评论。
- 标准化 WASI:一个在 Web 之外运行 WebAssembly 的系统接口
- @alexcrichton 已经有一个拉取请求到 为 Rust 添加
wasm32-unknown-wasi
目标!
- @alexcrichton 已经有一个拉取请求到 为 Rust 添加
RustVolley
是使用 Rust 和 Wasm 重新实现 Blobby Volley 2 游戏- CloudFlare 的新
wrangler
CLI 工具允许您在 CloudFlare worker 上部署 Rust 生成的 Wasm - Fastly 开源了 Lucet:一个原生 WebAssembly 编译器和运行时。 它使用 Rust 在 Cranelift 之上构建,并支持 WASI。
来自 rustwasm/*
的更新
🎉 欢迎 @Pauan 加入 Rust 和 WebAssembly 工作组核心团队!🎉
RFC
新的 RFC
无。
最终评论期 RFC
合并的 RFC
无。
工作组会议
Gloo
- Gloo 更新:洋葱层、计时器和事件
- @Aehmlo 拆分了
gloo_timers
crate 的公共 API 以使用callbacks
和futures
子模块,正如我们在其他问题中共同商定的那样。 - @cbrevik 实现了
gloo_console_timer
crate,它为使用console.time
和console.timeEnd
提供了作用域闭包和 RAII 风格的助手。 - @OddCoincidence 更新了
gloo_timers
内部 以使用wasm_bindgen::closures::Closure::once
用于setTimeout
。 - @RyLev 为 Gloo 添加了一些初始的 Azure Pipelines 持续集成测试。
- @David-OConnor 添加了 Gloo 的
mdbook
指南的框架。
wasm-bindgen
- @alexcrichton 调整了
no-modules
目标的生成的 JavaScript 胶水,用于实例化 Wasm 模块 以支持 CloudFlare worker(以及其他可能导致x instanceof WebAssembly.Module
失败的环境,例如跨<iframe>
)。 - @alexcrichton 使得我们为将 Rust 闭包反射为 JS 函数而发出的 JS 胶水能够正确地 检测并防止来自 JS 方面的使用后释放。
- @alexcrichton 修复了一个错误,该错误导致作为 JS 导出的 Rust 结构体 并不总是以确定性顺序发出 JS 类胶水。
- @fitzgen 使“没有 JS 捆绑器”示例使用
wasm-pack build --target web
,现在它在最新的wasm-pack
版本中得到支持。 - @alexcrichton 清理了
wasm-bindgen
CLI 的选项 以使用--target blah
而不是--blah
(仍然存在但已弃用)。 - @stevebob 为
wasm-bindgen
指南的持续集成测试启用了mdbook
的链接检查测试。 - @alexcrichton 实现了
rustwasm/rfcs#8
以启用对 npm 包的传递依赖关系。 - @RReverser 添加了
constructor
属性 到js_sys::Object
。 - @alexcrichton 修复了从 Wasm 发送大型
u32
到 JS。 - @RReverser 一致地为我们生成的 JS 胶水公开
is_like_none
,在此过程中修复了一个错误。 - @RReverser 简化了
Option<char>
的 ABI 表示。 - @alexcrichton 将所有
wasm-bindgen-*
crate 迁移到 Rust 2018 版本。 - @RReverser 通过删除冗余的属性字符串解码,使通过 JS 迭代协议迭代 JS 对象更快。
- @RReverser 创建了一个从 JS 传递字符串到 Wasm 的特殊版本,当我们针对 Node.js 时,它比使用 Node.js 的
TextEncoder
实现更快。
wasm-pack
- @alexcrichton 修复了一个恐慌,它可能在安装
wasm-bindgen
CLI 工具时发生。
贡献请求
想参与 Rust 和 WebAssembly 吗?加入 Rust 和 WebAssembly 工作组!
新的良好首个问题
wasm-bindgen
:.d.ts
文件用于--web
目标未定义init()
函数wasm-bindgen
:闭包应实现std::fmt::Debug
- Gloo:帮助确保我们为所有 Web 平台功能制作实用程序 crate 拥有跟踪问题