主要观点:今年早些时候 Zed 引入了扩展功能,扩展系统由 Max 和 Marshall 构建,半年后作者与他们探讨扩展工作原理。以zed-metals
扩展为例,解释了安装扩展的过程,从extensions
仓库到本地 Zed 的流程,包括使用extensions_cli
编译扩展、生成manifest.json
和archive.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 存在扩展。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。