Zed 扩展的生命周期:Rust、WIT、Wasm - Zed 博客

主要观点:今年早些时候 Zed 引入了扩展功能,扩展系统由 Max 和 Marshall 构建,半年后作者与他们探讨扩展工作原理。以zed-metals扩展为例,解释了安装扩展的过程,从extensions仓库到本地 Zed 的流程,包括使用extensions_cli编译扩展、生成manifest.jsonarchive.tar.gz等文件,以及这些文件的内容和作用。还介绍了编译扩展的过程,通过wit_bindgen根据 WIT 定义生成 Wasm 兼容的 Rust 代码,将 Rust 代码编译为 Wasm 模块。最后说明了在 Zed 中运行 Wasm 的过程,包括加载 Wasm 模块、初始化扩展等步骤。

关键信息

  • 扩展系统由 Max 和 Marshall 构建,半年后作者与他们探讨扩展工作原理。
  • zed-metals扩展为例,介绍安装扩展的流程和相关文件。
  • 编译扩展时使用wit_bindgen根据 WIT 定义生成 Wasm 兼容的 Rust 代码。
  • 在 Zed 中运行 Wasm 涉及加载模块、初始化扩展等步骤。

重要细节

  • extensions仓库是扩展的数据源,其内容定期镜像到zed.dev
  • 编译扩展使用extensions_cli,生成manifest.json和包含 Wasm 文件及 Scheme 文件的archive.tar.gz
  • zed_extension_api crate 定义了Extension trait,通过wit_bindgen根据 WIT 定义生成 Wasm 兼容代码。
  • 在 Zed 中运行 Wasm 时,通过wasm_host.load_extension加载 Wasm 模块,初始化扩展并调用相关方法。
  • 15 岁黑客 Jozef Steinhübl 利用现有 API 构建了 Zed Discord 存在扩展。
阅读 15
0 条评论