75 releases (30 stable)
new 1.1.19 | Feb 20, 2025 |
---|---|
1.1.16 | Jan 24, 2025 |
1.1.8 | Dec 28, 2024 |
1.0.10 | Nov 30, 2024 |
0.0.16 | Mar 30, 2024 |
#275 in Encoding
929 downloads per month
Used in 10 crates
1MB
25K
SLoC
golem-wasm-rpc
Defines data types for Golem's remote function invocation and conversions between them.
WitValue
is the WIT-defined generic data type capable of representing an arbitrary value, generated bywit-bindgen
- A builder and an extractor API for
WitValue
Value
is a recursive Rust type which is more convenient to work with thanWitValue
. Conversion betweenWitValue
andValue
is implemented in both directions.- Protobuf message types for describing values and types, and a protobuf version of
WitValue
itself and conversion from and toValue
andWitValue
- JSON representation of WIT values, as defined in the Golem docs.
- Conversion of
Value
to and fromwasmtime
values
The JSON representation requires additional type information which can be extracted using the 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:
cargo build -p golem-wasm-rpc --no-default-features --features host
To compile the guest version, has minimal dependencies and feature set to be used in generated stubs:
cargo component build -p golem-wasm-rpc --no-default-features --features stub
Feature flags
arbitrary
adds anArbitrary
instance forValue
bincode
adds Bincode codecs for some typeshost-bindings
enables WIT-generated types for wasmtime hostsjson
adds conversion functions for mapping of a WIT value and type definition to/from JSONpoem_openapi
adds poem OpenAPI type class instances for some of the typesprotobuf
adds the protobuf message typesserde
adds serde JSON serialization for some of the typestext
enableswasm-wave
based text representation for valueswasmtime
adds conversion towasmtime
Val
valueshost
enables all features:arbitrary
,bincode
,host-bindings
,json
,poem_openapi
,protobuf
,serde
,text
,typeinfo
, andwasmtime
stub
is to be used in generated WASM stubs and disables all features, and generates guest bindings instead of host bindings
Dependencies
~7–27MB
~426K SLoC