84 releases (35 stable)

new 1.2.0-rc4 Mar 22, 2025
1.1.21 Feb 25, 2025
1.1.8 Dec 28, 2024
1.0.10 Nov 30, 2024
0.0.16 Mar 30, 2024

#1 in #golem

Download history 1673/week @ 2024-12-02 872/week @ 2024-12-09 217/week @ 2024-12-16 143/week @ 2024-12-23 15/week @ 2024-12-30 21/week @ 2025-01-06 313/week @ 2025-01-13 655/week @ 2025-01-20 162/week @ 2025-01-27 82/week @ 2025-02-03 31/week @ 2025-02-10 501/week @ 2025-02-17 237/week @ 2025-02-24 166/week @ 2025-03-03 621/week @ 2025-03-10 386/week @ 2025-03-17

1,434 downloads per month
Used in 11 crates

Apache-2.0

1MB
25K SLoC

Rust 15K SLoC // 0.0% comments WebAssembly 10K 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 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.
  • Conversion of Value to and from wasmtime 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 an Arbitrary instance for Value
  • bincode adds Bincode codecs for some types
  • host-bindings enables WIT-generated types for wasmtime hosts
  • json adds conversion functions for mapping of a WIT value and type definition to/from JSON
  • poem_openapi adds poem OpenAPI type class instances for some of the types
  • protobuf adds the protobuf message types
  • serde adds serde JSON serialization for some of the types
  • text enables wasm-wave based text representation for values
  • wasmtime adds conversion to wasmtime Val values
  • host enables all features: arbitrary, bincode, host-bindings, json, poem_openapi, protobuf, serde, text, typeinfo, and wasmtime
  • stub is to be used in generated WASM stubs and disables all features, and generates guest bindings instead of host bindings

Dependencies

~8–28MB
~441K SLoC