created_at2024-02-13 17:24:59.286247
updated_at2024-04-10 15:59:45.957579
descriptionGolem WASM RPC support library
Daniel Vigovszky



# golem-wasm-rpc Defines data types for [Golem](https://golem.cloud)'s remote function invocation and conversions between them. - `WitValue` is the WIT-defined generic data type capable of representing an arbitrary value, generated by `wit-bindgen` - A builder and an extractor API for `WitValue` - `Value` is a recursive Rust type which is more convenient to work with than `WitValue`. Conversion between `WitValue` and `Value` is implemented in both directions. - Protobuf message types for describing values and types, and a protobuf version of `WitValue` itself and conversion from and to `Value` and `WitValue` - JSON representation of WIT values, as defined in [the Golem docs](https://learn.golem.cloud/docs/template-interface). - Conversion of `Value` to and from `wasmtime` values The JSON representation requires additional type information which can be extracted using the [golem-wasm-ast](https://crates.io/crates/golem-wasm-ast) crate. ## Host and stub mode The `golem-wasm-rpc` crate can be both used in host and guest environments: To compile the host version: ```shell cargo build -p wasm-rpc --no-default-features --features host ``` To compile the guest version, has minimal dependencies and feature set to be used in generated stubs: ```shell cargo component build -p wasm-rpc --no-default-features --features stub ``` ## Feature flags - `arbitrary` adds an `Arbitrary` instance for `Value` - `json` adds conversion functions for mapping of a WIT value and type definition to/from JSON - `protobuf` adds the protobuf message types - `wasmtime` adds conversion to `wasmtime` `Val` values - `host` enables all features: `arbitrary`, `json`, `protobuf`, `typeinfo`, and `wasmtime` - `stub` is to be used in generated WASM stubs and disables all features, and generates guest bindings instead of host bindings
Commit count: 141

cargo fmt