Releases: wasmCloud/wascc-host
Release v0.14.0
This version corresponds to the project milestone 0.14
Added
- Host runtime will now look at the
OCI_REGISTRY_USER
andOCI_REGISTRY_PASSWORD
environment variables whenever it needs to contact an OCI registry. - Added the
add_native_capability_from_registry
to download and load an OS/CPU arch appropriate provider plugin.
Changed
- All non-local references to capability providers and actors are now assumed to be registry references that can be satisfied by the indicated OCI registry. If basic authentication is required by that registry, then you can supply those credentials via the
OCI_REGISTRY_USER
andOCI_REGISTRY_PASSWORD
environment variables. - The
add_actor_from_gantry
function has been renamed toadd_actor_from_registry
- Manifest files will now load either actors (if the actor string exists as a file) or registry-hosted modules (if the actor string is a registry reference)
Caution
The ability to remotely schedule capability providers in this version should be considered unstable, to be
stabilized in the 0.15.0 release (the "async rewrite"), which will include a rework of how capability providers
internally subscribe to the message bus and identify themselves to the host and lattice.
Release v0.13.0-1
This version corresponds to the project milestone 0.13
Added
- Lattice Control Plane Protocol - A new protocol is now supported on the lattice to allow for "auctions" to take place to gather a list of hosts willing to launch a given actor. An auction request is sent out with a set of constraints, any host that can satisfy those contraints responds affirmatively to the auction, and then the conductor of the auction chooses from among the responding hosts and sends a command to that specific host telling it to launch the actor in question. Launching that actor is then done by downloading the actor's bytes from a Gantry server and running it. You can specify a set of key/value pairs that define constraints that are matched against host labels to definite affinity-style scheduling rules.
- Sim Gantry - The gantry repo now has a "sim gantry" binary that developers can use to instantly start a Gantry host atop an arbitrary directory that contains signed actor modules.
- Lattice-Scoped Bindings - In lattice mode, calling
set_binding
will tell all running instances of a given capability provider to provision resources for the given actor+configuration. If a capability provider is added to a completely empty host, it will re-establish its bindings (including provisioning resources) by querying the lattice. If all instances of that provider are shut down, then the lattice will "forget" those bindings. Actors can be added and removed without the need to re-bind them to their capability providers. - There is now a
remove_binding
function on theHost
struct that will tell all running instances of a given capability provider to de-provision resources for a given actor group. - waPC now supports the choice of multiple underlying WebAssembly engines or drivers, so waSCC host now supports them through the use of feature flags. You can now choose your engine between
wasmtime
(the default) andwasm3
. For more information on the difference, please see the driver repository in the waPC Github organization.
Changed
- The
bind_actor
function has been renamed toset_binding
to better provide context around the distributed, idempotent nature of bindings. - You can no longer invoke
configure_gantry
on a running host. The gantry client can only be supplied by the host builder now, further improving the runtime security and reliability of the host. - The
gantry
feature has been merged with thelattice
feature. Gantry (client) support is no longer an isolated opt-in feature because both require the NATS connection in order to function and it didn't make sense to communicate with Gantry while not having the ability to connect to a lattice. - Renamed
from_bytes
on theActor
struct tofrom_slice
, and it now takes a&[u8]
parameter instead of an owned vector. - Loading an actor from gantry via the host API call now requires a revision number (0 indicates pull the latest)
- The Gantry client API to download an actor no longer requires a callback, it simply returns a vector of bytes.
Removed
- You can no longer call
set_label
on a running host. Labels must be set with aHostBuilder
Release v0.12.0
For a complete list of details on this release, consult the CHANGELOG file.
This release has 3 binaries associated with it that were build with the gantry
manifest
and lattice
features enabled--features most likely to be required for running demos, tutorials, walkthroughs, and examples.
Pay no attention to the -11
suffix on the release tag - that is purely an artifact of us attempting to iterate over automatic CI builds.
v0.10.0
In this release we added a lot of new functionality to the lattice
feature, improved the middleware system by allowing it to short-circuit or stop a middleware execution chain, and took care of a few minor issues.
For the full details on this release please consult the CHANGELOG file.
v0.9.0
In this release we added support for lattice
mode, a way of seamlessly connecting distributed waSCC hosts with each other no matter where they are. Lattice mode allows actors and capability providers to discover and bind across any number of intervening networks.
For more information on lattice mode and how to use it, check out the Lattice documentation.
Each of the ZIP files below contains the regular version of wascc-host
as well as the lattice-enabled version.
v0.8.0
All capability providers (including portable WASI providers) are now required to respond to the operation OP_GET_CAPABILITY_DESCRIPTOR
and return a messagepack-serialized struct containing metadata about the capability provider. This metadata includes:
- Name
- Documentation description
- Version (semver string) and Revision (monotonic)
- List of supported operations
We created a simple builder syntax that makes it easy and readable for capability providers to supply a capability descriptor:
/// Obtains the capability provider descriptor
fn get_descriptor(&self) -> Result<Vec<u8>, Box<dyn Error>> {
Ok(serialize(
CapabilityDescriptor::builder()
.id(CAPABILITY_ID)
.name("Default waSCC HTTP Server Provider (Actix)")
.long_description("A fast, multi-threaded HTTP server for waSCC actors")
.version(VERSION)
.revision(REVISION)
.with_operation(
OP_HANDLE_REQUEST,
OperationDirection::ToActor,
"Delivers an HTTP request to an actor and expects an HTTP response in return",
)
.build(),
)?)
}
NOTE - This is a breaking change, so old versions of capability providers will not work with this version of the waSCC host.
v0.7.0
This release adds no major new features. Instead, a number of refactors were done in dependencies as well as the main library. Actor execution latency may be somewhat faster now because of an upgraded dependency on waPC.
All global static variables have been removed and are now private fields on the WasccHost
struct. In addition to being cleaner code, this may reduce friction for those trying to write concurrent integration tests against WasccHost
.
The only breaking change is the Actor::from_gantry
method has been removed. Actors should be freestanding instances that don't require the use of the gantry
feature. Now, there is an add_actor_from_gantry
method on WasccHost
that replaces the old function (if the gantry
feature is enabled).
v0.6.0
See the release notes from the official waSCC.dev website.
v0.4.0
Aside from a few minor improvements, this release is comprised mostly of a change to take the latest version of waPC, which now contains a separate namespace
field in the host_call
function. That version of waPC also uses the latest version of wasmtime
, and so waSCC now, transitively, uses the latest version of wasmtime.
v0.3.0
Release notes for v0.3.0 can be found on the waSCC dev site