本周 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 的新
wranglerCLI 工具允许您在 CloudFlare worker 上部署 Rust 生成的 Wasm - Fastly 开源了 Lucet:一个原生 WebAssembly 编译器和运行时。 它使用 Rust 在 Cranelift 之上构建,并支持 WASI。
来自 rustwasm/* 的更新
🎉 欢迎 @Pauan 加入 Rust 和 WebAssembly 工作组核心团队!🎉
RFC
新的 RFC
无。
最终评论期 RFC
合并的 RFC
无。
工作组会议
Gloo
- Gloo 更新:洋葱层、计时器和事件
- @Aehmlo 拆分了
gloo_timerscrate 的公共 API 以使用callbacks和futures子模块,正如我们在其他问题中共同商定的那样。 - @cbrevik 实现了
gloo_console_timercrate,它为使用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-bindgenCLI 的选项 以使用--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-bindgenCLI 工具时发生。
贡献请求
想参与 Rust 和 WebAssembly 吗?加入 Rust 和 WebAssembly 工作组!
新的良好首个问题
wasm-bindgen:.d.ts文件用于--web目标未定义init()函数wasm-bindgen:闭包应实现std::fmt::Debug- Gloo:帮助确保我们为所有 Web 平台功能制作实用程序 crate 拥有跟踪问题
Rust 和 WebAssembly