Skip to content

Latest commit

 

History

History
432 lines (389 loc) · 34.3 KB

CHANGELOG.md

File metadata and controls

432 lines (389 loc) · 34.3 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Chore

  • update messaging to 0.2.0
  • reenable clippy::pedantic
  • remove unused dependencies
  • remove compat crate
  • update WIT dependencies
  • move CallTargetInterface to core
  • simplify error handling
  • fix clippy lints
  • integrate set-link-name and wrpc
  • remove Actor abstraction
  • import wrpc-runtime-wasmtime
  • remove wit-component dep Ciao
  • appease Clippy Chillax, Clip
  • switch wasi-keyvalue to main
  • fix wasi-keyvalue incoming value ownership mismatch
  • implement preview 2 interfaces
  • update WIT packages
  • remove logging with pin
  • update to Wasmtime 15
  • polish tracing and logging levels
  • integrate wash into the workspace
  • update to Wasmtime 14 and latest WIT
  • resolve 1.73.0 warnings
  • reduce verbosity of instrumented functions
  • mark non-exhaustive Debug impls as such
  • remove noisy fields from instruments

Chore

  • updated with newest features

Chore

  • replace references to 'actor' with 'component'

New Features

  • update wrpc:keyvalue in providers part of this process is adopting wit-bindgen-wrpc in the host

  • update wasi:keyvalue

  • Bumps our wasmcloud wit to 1.0 This bumps our main wasmcloud:bus package and the package in the runtime crate to 1.0.0 in preparation for release. Also removes the use of the wasmcloud interface in tests where it wasn't needed

  • update to wasmtime 19

  • migrate to wrpc:keyvalue

  • implement wrpc:blobstore/blobstore for FS

  • implement Redis wrpc:keyvalue/{atomic,eventual}

  • implement wasi:http/outgoing-handler provider

  • support p1 module execution

  • support pubsub on wRPC subjects Up until now, publishing and subscribing for RPC communcations on the NATS cluster happened on subjects that were related to the wasmbus protocol (i.e. 'wasmbus.rpc.*').

    To support the WIT-native invocations, i.e. wRPC (#1389), we must change the publication and subscription subjects to include also the subjects that are expected to be used by wprc.

    This commit updates the provider-sdk to listen additionally to subjects that are required/used by wrpc, though we do not yet have an implementation for encode/deocde.

  • Switches runtime config to use a pooling allocator This leads to significant performance increases on Linux and brings it up to the same performance levels as other operating systems

  • improve byte stream efficiency

  • Switches modules to use pre instantiation instead In my load testing of this locally, this led to a 20% increase in throughput

  • implement wrpc:http/incoming-handler

  • switch to wrpc for wasmcloud:messaging

  • switch to wrpc:{keyvalue,blobstore}

  • implement wrpc:http/outgoing-handler.handle

  • change set-target to set-link-name Up until the relatively low-level wasmcloud:bus/lattice WIT interface has used a function called set-target to aim invocations that occurred in compliant actors and providers.

    Since wRPC (#1389) enabled wasmCloud 1.0 is going to be WIT-first going forward, all WIT-driven function executions have access to the relevant interface (WIT interfaces, rather than Smithy-derived ones) that they call, at call time.

    Given that actor & provider side function executions have access to their WIT interfaces (ex. wasi:keyvalue/readwrite.get), what we need to do is differentiate between the case where multiple targets might be responding to the same WIT interface-backed invocations.

    Unlike before, set-target only needs to really differentiate between link names.

    This commit updates set-target to perform differentiate between link names, building on the work already done to introduce more opaque targeting via Component IDs.

  • record polyfilled component imports

  • fix custom interface support and tests

  • remove module support

  • add resource handling stubs

  • support composite types

  • support composite Wasmtime type reflection in polyfills

  • add (most of) custom interface plumbing

  • Adds some additional context around test failures I was seeing

  • Adds support for actor config This is a fairly large PR because it is adding several new control interface topics as well as actually adding the actor config feature.

    This feature was motivated by 2 major reasons:

    1. We have been needing something like this for a while, at the very least for being able to configure link names in an actor at runtime
  1. There aren't currently any active (yes there were some in the past) efforts to add a generic wasi:cloud/guest-config interface that can allow any host to provide config values to a component. I want to use this as a springboard for the conversation in wasi-cloud as we will start to use it and can give active feedback as to how the interface should be shaped
  • make claims optional (at least for now)
  • add streaming support to wasmcloud:bus
  • rename wasmcloud_host -> wasmcloud_runtime
  • remove all wasmcloud-interface-* usages
  • add support for command executables (I/O actors)
  • add local lattice proving the concept, which is used for testing of the feature
  • implement an actor instance pool
  • generate crate changelogs
  • limit max execution time to 10 minutes
  • update to Wasmtime 20
  • generate crate changelogs
  • count epoch in a separate OS thread
  • propagate max_execution_time to the runtime

Bug Fixes

  • rustdoc spelling

  • fix link_name functionality, reorganize tests

  • correct name and data streaming, update WIT

  • do not polyfill wasi:blobstore interfaces

  • do not polyfill wasi cloud interfaces

  • improve target lookup error handling

  • add messaging triggered test actor This commit is the culmination of a few things that were required for getting our flavor of E2E tests (in the top level tests/ dir) working for a Provider & Actor.

    This commit is quite large because it does many things:

    • Adds missing implementation to bindgen for provider -> actor invocations

Other

  • clarify the instance exclusions
  • update to Wasmtime 18
  • update to wasmtime 17
  • update to wasmtime 16 Note this uses a release branch as 16 is not out yet.
  • pin blobstore to upstream rev Pin until WebAssembly/wasi-blobstore#14 merged
  • bump crate versions
  • bump to 0.79.0
  • update dependencies
  • switch to upstream wasi:blobstore
  • update WIT dependencies
  • update to Wasmtime 12
  • update WIT dependencies This fixes poll-oneof mismatch
  • update dependencies

Refactor

  • wascap::jwt::Actor -> wascap::jwt::Component
  • link actors on creation
  • improve WASI linking error
  • remove instance pooling
  • reduce verbosity on actor logs
  • component instantiation error message
  • split interface implementations into separate modules

Test

  • replicate component test in modules and compat

New Features (BREAKING)

  • Removes old guest config and uses runtime config instead Most of the changes are related to wit updates, but this removes the guest config from wasmcloud:bus and pulls down wasi:config in its place
  • convert to wrpc:blobstore
  • use wasmcloud:messaging in providers Also implement statically invoking the handler on components in the host
  • support interface link put, component spec
  • Updates topics to the new standard This is a wide ranging PR that changes all the topics as described in #1108. This also involved removing the start and stop actor operations. While I was in different parts of the code I did some small "campfire rule" cleanups mostly of clippy lints and removal of clippy pedant mode.

Commit Statistics

  • 124 commits contributed to the release over the course of 293 calendar days.
  • 120 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Updated with newest features (0f03f1f)
    • Generate crate changelogs (f986e39)
    • Count epoch in a separate OS thread (3eb4534)
    • Propagate max_execution_time to the runtime (a66921e)
    • Limit max execution time to 10 minutes (e928020)
    • Replace references to 'actor' with 'component' (7702e69)
    • Update to Wasmtime 20 (33b50c2)
    • Update wrpc:keyvalue in providers (9cd2b40)
    • Update wasi:keyvalue (a175419)
    • Clarify the instance exclusions (663b49e)
    • Update messaging to 0.2.0 (955a689)
    • Bumps our wasmcloud wit to 1.0 (2352092)
    • Removes old guest config and uses runtime config instead (6b2e1b5)
    • Rustdoc spelling (7abc170)
    • Wascap::jwt::Actor -> wascap::jwt::Component (468268e)
    • Reenable clippy::pedantic (327975d)
    • Update to wasmtime 19 (023358b)
    • Migrate to wrpc:keyvalue (f56492a)
    • Fix link_name functionality, reorganize tests (4ed3891)
    • Convert to wrpc:blobstore (91874e9)
    • Remove unused dependencies (1bad246)
    • Correct name and data streaming, update WIT (ccb3c73)
    • Use wasmcloud:messaging in providers (716d251)
    • Implement wrpc:blobstore/blobstore for FS (383b3f3)
    • Do not polyfill wasi:blobstore interfaces (bff9816)
    • Implement Redis wrpc:keyvalue/{atomic,eventual} (614af7e)
    • Implement wasi:http/outgoing-handler provider (e0dac9d)
    • Remove compat crate (f2aed15)
    • Do not polyfill wasi cloud interfaces (c8f26b8)
    • Update WIT dependencies (5e45723)
    • Support p1 module execution (0c5aee7)
    • Improve target lookup error handling (149f98b)
    • Add messaging triggered test actor (0f6a1eb)
    • Move CallTargetInterface to core (0d90023)
    • Support pubsub on wRPC subjects (76c1ed7)
    • Switches runtime config to use a pooling allocator (590a494)
    • Improve byte stream efficiency (400802a)
    • Do not polyfill logging (d1c3a59)
    • Tone down instrumentation level (923c650)
    • Switches modules to use pre instantiation instead (25e3e51)
    • Simplify error handling (d61303d)
    • Implement wrpc:http/incoming-handler (f2223a3)
    • Switch to wrpc for wasmcloud:messaging (0c0c004)
    • Switch to wrpc:{keyvalue,blobstore} (5ede01b)
    • Implement wrpc:http/outgoing-handler.handle (2463845)
    • Fix clippy lints (b83082a)
    • Bindgen issues preventing builds (e9bea42)
    • Integrate set-link-name and wrpc (4f55396)
    • Change set-target to set-link-name (5d19ba1)
    • Record polyfilled component imports (5d1590e)
    • Remove Actor abstraction (45445a6)
    • Fix custom interface support and tests (18875a7)
    • Remove module support (fec6f5f)
    • Import wrpc-runtime-wasmtime (22e71e5)
    • Add resource handling stubs (2193423)
    • Parse package (542427e)
    • Support composite types (eb61ce2)
    • Remove wit-component dep (6678fea)
    • Appease Clippy (9dc14c5)
    • Support composite Wasmtime type reflection in polyfills (da6e2b3)
    • Update to Wasmtime 18 (03c9d1c)
    • Support interface link put, component spec (5af1138)
    • Add (most of) custom interface plumbing (713e774)
    • Updates topics to the new standard (42d069e)
    • Fix clippy warning, added ; for consistency, return directly the instance instead of wrapping the instance's components in a future (c6fa704)
    • Add comments, remove useless future::ready (7db1183)
    • Fmt (1d3fd96)
    • Fix(1365): Encapsulate in spawn instance's process in response to a nats event. Also encapsulate the .clone on the wasmtime module. After this two modification the workload spread on all core of the CPU. Relates to issue #1365 (ba7590a)
    • Switch wasi-keyvalue to main (eee6c73)
    • Fix wasi-keyvalue incoming value ownership mismatch (089b895)
    • Implement preview 2 interfaces (08b8a3c)
    • Update WIT packages (a7e0e13)
    • Update to wasmtime 17 (49f3883)
    • Update to wasmtime 16 (75c0739)
    • Remove logging with pin (8b7152a)
    • Pin blobstore to upstream rev (a278764)
    • Update to Wasmtime 15 (7a6e6a0)
    • Adds some additional context around test failures I was seeing (64d21b1)
    • Adds support for actor config (1a048a7)
    • Polish tracing and logging levels (2389f27)
    • Link actors on creation (e128173)
    • Implement wasifills for simple types (cfb66f8)
    • Improve WASI linking error (770731c)
    • Merge pull request #807 from rvolosatovs/merge/wash (f2bc010)
    • Integrate wash into the workspace (dfad0be)
    • Implement outgoing HTTP (2e8982c)
    • Return Ready on trailers (c555bab)
    • Bump crate versions (d163240)
    • Update to Wasmtime 14 and latest WIT (831e901)
    • Resolve 1.73.0 warnings (93c0981)
    • Reduce verbosity of instrumented functions (0023f7e)
    • Bump to 0.79.0 (578c72d)
    • Mark non-exhaustive Debug impls as such (099ebcd)
    • Update dependencies (22276ff)
    • Remove instance pooling (017e6d4)
    • Allow namespaces with slashes (1829b27)
    • Include context on host errors (0e6e2da)
    • Reduce verbosity on actor logs (6c42d5c)
    • Properly handle path_with_query (b13a50c)
    • Add support for call aliases (123cb2f)
    • Remove noisy fields from instruments (4fb8206)
    • Support chunking and dechunking of requests (813ce52)
    • Switch to upstream wasi:blobstore (3179982)
    • Implement wasi:blobstore (bef159a)
    • Switch to wasmCloud messaging WIT (a82847f)
    • Update WIT dependencies (083f8e8)
    • Partially implement wasi:keyvalue/atomic (d434e14)
    • Component instantiation error message (b5aac8e)
    • Update to Wasmtime 12 (1f3448e)
    • Implement wasmcloud:http/incoming-handler support (50d0ed1)
    • Replicate component test in modules and compat (5f92225)
    • Move builtin smithy structs to compat (54f0afa)
    • Implement link names and a2a calls (2e3bd2b)
    • Implement wasmcloud:messaging/consumer support (77d663d)
    • Implement wasi:keyvalue/readwrite support (02c1ddc)
    • Split interface implementations into separate modules (2540b2a)
    • Introduce Blobstore trait (9eda090)
    • Update WIT dependencies (2bb60f3)
    • Implement actor -> provider linking (4de853a)
    • Provide wasmCloud interface stubs (3ae7cce)
    • Update dependencies (cb86378)
    • Merge pull request #396 from rvolosatovs/feat/provider-sdk (6ed04f0)
    • Implement linkdef add/delete (e943eca)
    • Implement data streaming (7364dd8)
Uncomments implementation from the host for wasmcloud:messagingAdds an invoker component that reacts to messaging rather than HTTPUses messaging & keyvalue providers plus the actor in a single test