Fermyon Spin 2.0 新增对 WebAssembly 组件和 WASI 预览版 2 的支持

Spin 2.0 引入 WebAssembly 组件支持并提升性能

Spin 2.0 是一款开源的服务器端 WebAssembly 应用程序构建和运行工具。最新版本引入了对 WebAssembly 组件 的支持,显著提升了性能并优化了开发者体验,同时还为 WebAssembly 在不同运行环境和实现之间的可移植性奠定了基础。

WebAssembly 组件支持

Spin 自 1.5 版本起已在底层使用了 WebAssembly 组件。在 2.0 版本中,开发者可以利用 WebAssembly 组件的所有特性,包括能够组合使用任何支持 Wasm 的语言创建的组件。例如,一个用 Rust 编写的高性能组件可以与另一个用 Python 编写的组件组合,通过 Wasm Interface Type (WIT) 定义通用接口,确保它们能够以可移植的方式通信和交换数据。

性能提升

Spin 2.0 通过采用 Wasmtime 的池化内存分配器 和其他优化措施,将吞吐量提升了一个数量级。这使得 Spin 2.0 能够为 WebAssembly 组件提供更快的启动时间,并为每个请求创建新的实例,从而增强安全性。即使攻击者利用应用程序的漏洞破坏其状态,这种破坏也仅限于当前请求,而不会影响后续请求。

实验性功能:流式 HTTP 响应

Spin 2.0 还实现了对 流式 HTTP 响应 的实验性支持,该功能基于 WASI Preview 2WASI HTTP。这使得组件可以在响应数据开始可用时立即发送,从而提升响应效率。

适应 WASI Preview 2 的变化

尽管 WebAssembly 组件模型已经相对稳定,但 WASI Preview 2 仍在积极开发中。为了帮助开发者更好地适应 WASI Preview 2 的变化,Fermyon 将利用组件接口的版本控制功能,支持 WASI Preview 2 的多个快照。这样,现有组件可以继续正常工作,而新组件则可以采用最新的 WASI Preview 2 特性。

未来发展方向

虽然 Spin 2.0 目前仅支持为每个请求创建新实例的模型,但开发者可以通过实现不同的触发器来支持长运行进程等场景。这为 Spin 的未来发展提供了更多的灵活性和可能性。

阅读 25
0 条评论