42 个版本 (3 个稳定版)

新版本 1.0.2 2024 年 8 月 21 日
1.0.1 2024 年 8 月 20 日
0.0.41 2024 年 8 月 14 日
0.0.36 2024 年 7 月 31 日
0.0.7 2024 年 2 月 23 日

176WebAssembly

Download history 69/week @ 2024-05-01 160/week @ 2024-05-08 143/week @ 2024-05-15 33/week @ 2024-05-22 132/week @ 2024-05-29 662/week @ 2024-06-05 615/week @ 2024-06-12 938/week @ 2024-06-19 638/week @ 2024-06-26 433/week @ 2024-07-03 434/week @ 2024-07-10 370/week @ 2024-07-17 341/week @ 2024-07-24 477/week @ 2024-07-31 429/week @ 2024-08-07 1111/week @ 2024-08-14

每月 2,367 次下载
用于 2 crates

Apache-2.0

565KB
12K SLoC

golem-wasm-rpc-stubgen

golem-wasm-rpc-stubgen 是一个命令行工具,用于从组件的 WIT 定义中生成 RPC 模块。

生成

Usage: wasm-rpc-stubgen generate [OPTIONS] --source-wit-root <SOURCE_WIT_ROOT> --dest-crate-root <DEST_CRATE_ROOT>

Options:
  -s, --source-wit-root <SOURCE_WIT_ROOT>                
  -d, --dest-crate-root <DEST_CRATE_ROOT>                
  -w, --world <WORLD>                                    
      --stub-crate-version <STUB_CRATE_VERSION>          [default: 0.0.1]
      --wasm-rpc-path-override <WASM_RPC_PATH_OVERRIDE>  
  -h, --help                                             Print help
  -V, --version                                          Print version
  • source-wit-root:通过 RPC 调用的组件 WIT 定义的根目录
  • dest-crate-root:生成新模块的目标路径
  • world:在生成的模块中使用的世界名称。如果源根包中只有一个世界,则无需指定。
  • stub-crate-version:生成的模块的 crate 版本
  • wasm-rpc-path-override:在生成的模块中使用的 wasm-rpc crate 的路径。如果没有指定,将使用 wasm-rpc 的最新版本。

该命令创建一个新 Rust 模块,可以编译使用

cargo component build --release

生成的 WASM 组件实现了与源接口对应的 模块接口,位于目标目录的 wit/_stub.wit 文件中。该 WASM 组件需要与其他组件一起组合,以通过 WASM RPC 调用原始接口。

构建

Usage: wasm-rpc-stubgen build [OPTIONS] --source-wit-root <SOURCE_WIT_ROOT> --dest-wasm <DEST_WASM> --dest-wit-root <DEST_WIT_ROOT>

Options:
  -s, --source-wit-root <SOURCE_WIT_ROOT>                
      --dest-wasm <DEST_WASM>                            
      --dest-wit-root <DEST_WIT_ROOT>                    
  -w, --world <WORLD>                                    
      --stub-crate-version <STUB_CRATE_VERSION>          [default: 0.0.1]
      --wasm-rpc-path-override <WASM_RPC_PATH_OVERRIDE>  
  -h, --help                                             Print help
  -V, --version                                          Print version
  • source-wit-root:通过 RPC 调用的组件 WIT 定义的根目录
  • dest-wasm:要生成的模块 WASM 文件名
  • dest-wit-root:生成的 WIT 文件应放置的目录名称
  • world:在生成的模块中使用的世界名称。如果源根包中只有一个世界,则无需指定。
  • stub-crate-version:生成的模块的 crate 版本
  • wasm-rpc-path-override:在生成的模块中使用的 wasm-rpc crate 的路径。如果没有指定,将使用 wasm-rpc 的最新版本。它需要是 绝对路径

添加模块 WIT 依赖项

Usage: wasm-rpc-stubgen add-stub-dependency [OPTIONS] --stub-wit-root <STUB_WIT_ROOT> --dest-wit-root <DEST_WIT_ROOT>

Options:
  -s, --stub-wit-root <STUB_WIT_ROOT>  
  -d, --dest-wit-root <DEST_WIT_ROOT>  
  -o, --overwrite                      
  -u, --update-cargo-toml                
  -h, --help                           Print help
  -V, --version                        Print version

该命令将生成的 RPC 模块作为 WIT 依赖项合并到其他组件的 WIT 根中。

  • stub-wit-root:由 generatebuild 命令生成的 WIT 根
  • dest-wit-root:要添加模块依赖项的组件的 WIT 根
  • overwrite:如果检测到会更改目标位置的现有 WIT 文件内容,此命令将不会做任何事情。使用此标志,可以强制覆盖这些文件。
  • update-cargo-toml:启用更新位于 dest-wit-root 父目录中的 Cargo.toml 文件,并包含复制的依赖项。

将存根与调用组件组合

Usage: wasm-rpc-stubgen compose --source-wasm <SOURCE_WASM> --stub-wasm <STUB_WASM> --dest-wasm <DEST_WASM>

Options:
      --source-wasm <SOURCE_WASM>  
      --stub-wasm <STUB_WASM>      
      --dest-wasm <DEST_WASM>      
  -h, --help                       Print help
  -V, --version                    Print version

该命令将调用组件的 WASM(使用生成的存根调用远程工作器)与生成的存根 WASM 组合,输出一个组合的 WASM 文件,不再依赖于存根接口,可以直接使用。

  • source-wasm:调用组件的 WASM 文件
  • stub-wasm:生成的存根的 WASM 文件。可以列出多个存根。
  • dest-wasm:要生成的组合 WASM 文件名

为工作空间初始化 cargo make 任务

Usage: wasm-rpc-stubgen initialize-workspace [OPTIONS] --targets <TARGETS> --callers <CALLERS>

Options:
      --targets <TARGETS>
          List of subprojects to be called via RPC
      --callers <CALLERS>
          List of subprojects using the generated stubs for calling remote workers
      --wasm-rpc-path-override <WASM_RPC_PATH_OVERRIDE>

当目标和调用组件都在同一 Cargo 工作空间中时,此命令可以初始化一个 cargo-make 文件,其中包含执行存根生成、WIT 合并和 WASM 组合的依赖任务。

一旦工作空间初始化完成,以下两个命令将可用

cargo make build-flow
cargo make release-build-flow

依赖项

~32–48MB
~787K SLoC