Skip to main content
Version: v2.0.0-rc

Glossary

wasmCloud uses several terms with distinct meanings in the context of the platform and the WebAssembly ecosystem.

Capability

An abstraction for a given functionality (such as key-value storage or connection over HTTP) utilized by a WebAssembly component.

Component

Components are sandboxed, interoperable WebAssembly binaries that can be compiled from various programming languages such as Rust, Go, and JavaScript. Components are .wasm files that include interface definitions which define the contracts through which they may relate to other entities.

In a wasmCloud workload, we use "component" to refer to the binary that implements stateless logic and typically enacts the core logic of an application, but it is important to note that services are implemented as Wasm components as well. For more information, see Workloads.

Host

A wasmCloud host is a process consisting of a WebAssembly runtime (Wasmtime) and additional layers of security and functionality. Multiple hosts may run on a single machine and can be ephemeral.

Host Group

A host group is a set of wasmCloud hosts.

Host Plugin

Host plugins extend a wasmCloud host with a specific implementation of a given capability according to an interface, and may optionally serve as shared resources, providing functionality to many different components for many different applications.

You can find several examples of host plugins in the wash-runtime/src/plugin directory of the wash repository. (Note that these plugins are built-in by default.)

Interface

Interfaces are contracts that define the relationships between entities like components and providers, often defining functionalities like HTTP or key-value storage at a high and vendor-agnostic level. Interfaces describe a component or provider's requirements ("imports") and exposed functions that may be used by other entities ("exports"). Interfaces are defined in WebAssembly Interface Type (WIT) files.

See the WebAssembly System Interface (WASI) API proposals for examples of interfaces defined in WIT.

NATS

NATS is a connective technology for distributed systems that can be used as a transport in production wasmCloud deployments. NATS is governed by the Cloud Native Computing Foundation.

For more information, see the NATS documentation.

Service

In a wasmCloud workload, "service" refers to a WebAssembly binary that acts as a persistent, stateful companion to stateless components in the same workload. For more information, see Workloads.

wash

wash is shorthand for Wasm Shell, the open source CLI tool for developing and publishing WebAssembly components. Using wash, you can build components, view component interfaces, publish components to an OCI registry, and more.

For more information, see Wasm Shell.

Wasm

Wasm is shorthand for WebAssembly.

Wasmtime

Wasmtime is an open source WebAssembly runtime wrapped by wasmCloud's wash-runtime crate. Wasmtime is maintained by the Bytecode Alliance and may be used as a standalone tool.

For more information, see the Wasmtime documentation.

WebAssembly

WebAssembly is a bytecode format paired with a virtual instruction set architecture that can serve as a compilation target for any language. Developers can compile code from a given language to a very small binary that runs on what is essentially a tiny virtual machine, enabling that code to run in any environment, including browsers, servers, edge devices, clouds, and more.

For more information, see WebAssembly.org.

WebAssembly Component Model

The WebAssembly Component Model is a specification for WebAssembly binaries that enables them to interoperate—meaning that a component written in one language (Rust, for example) can communicate with a component written in another language (such as Go) using shared types and functions. When we talk about components in wasmCloud, we are simply talking about standard WebAssembly components conforming to the Component Model, which may run anywhere else that runs components.

For more information on components and the Component Model, see Components or the Component Model documentation.

WebAssembly Module

WebAssembly modules are units of code conforming to the core WebAssembly specification. These are sometimes contrasted with components, but components are modules with an additional layer of specification to the Component Model.

For more information, see the WebAssembly core specification.

WebAssembly System Interface (WASI)

WASI stands for "WebAssembly System Interface" and refers to a group of standard APIs for use by WebAssembly binaries. WASI is developed and maintained by the WASI Subgroup in the W3C WebAssembly Community Group. WASI interfaces are sometimes called "proposals" as they move through a multi-stage proposal process before being accepted as a standard. You may see the second major WASI release referred to variously as WASI 0.2, WASI P2, or WASI Preview 2.

For more information, see WASI.dev.

WebAssembly Interface Type (WIT)

WIT stands for "WebAssembly Interface Type." WIT is an interface description language used to define the high-level interfaces used by components, such as the APIs included in WASI. In wasmCloud, all interfaces are defined in WIT.

For more information on WIT, see the Component Model documentation.

Workload

A wasmCloud workload is an application-level abstraction that consists of one or more components and optionally a service. For more information, see Workloads.