14个版本 (8个重大变更)
0.9.0 | 2021年2月21日 |
---|---|
0.7.0 | 2021年2月18日 |
#517 在 WebAssembly
每月1,385次下载
在 2 个crate中使用
35KB
687 行
WebAssembly的异步执行器
Rust生态系统中提供了许多异步任务执行器。然而,大多数(如果不是全部)都依赖于可能在WebAssembly部署时不可用或不理想的原始功能。
用法
在您的 Cargo.toml
中包含此依赖项
[dependencies]
wasm-rs-async-executor = "0.9.0"
wasm-rs-async-executor
预期在稳定版Rust 1.49.0和更高版本上工作。它 可能 也可以在早期版本上工作。这尚未经过测试。
支持的目标
目前,它仅在 wasm32-unknown-unknown
上进行了测试,并且除 cooperative
功能外,在 wasmtime 和 wasmer 下通过测试,目标为 wasm32-wasi
。进一步的测试尚待完成。
注意事项
请注意,这个库在安全性方面没有经过太多分析。有关这方面的某些警告可能永远无法完全解决。这是一个持续的开发项目,维护者了解潜在的陷阱。欢迎提交有关不安全或不稳定的任何有价值的报告(无论它们是否可以解决,或者只是简单地通过 unsafe
将其屏蔽,以便最终用户注意)。
常见问题解答
问题:为什么不直接使用 wasm-bindgen-futures?
答案: (简短) 在许多情况下,wasm-bindgen-futures
是完全可以的
答案: (较长) wasm-rs-async-executor
揭示其功能的方式有一些细微的区别。其背后的核心思想是提供一定程度的 显式 控制。您需要显式地运行执行器,可以在未来上阻塞(再次,显式地——这赋予您有限的执行范围未来能力)。这确实带来了一些小的权衡。例如,如果您想从您的宿主环境中使用异步API,您不能简单地 await
在上面,因为执行器不会在告诉它之前让步给浏览器。然而,这通常可以通过简单地运行一个永久任务来解决,该任务循环将让步给浏览器。
最终,如果这种程度的控制对您的案例有益,那么或许这个执行器是受保证的。值得注意的是,目前 wasm-rs-async-executor
不支持 以任何方式在 WebAssembly 中进行多线程。如果标准库在构建时支持它,wasm-bindgen-futures
则支持。计划支持这一功能,但由于 Rust 的当前状态(现状),迄今为止这并不是一个高优先级的项目。
许可证
许可协议为以下之一:
- Apache License,版本 2.0(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT》)。
依赖项
~0.6–3MB
~56K SLoC