# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## 0.12.0 (2024-11-08)
### Chore
- update `wrpc-transport-nats`
- bump wascap v0.15.1, wasmcloud-core v0.13.0, wash-lib v0.29.0, wasmcloud-tracing v0.10.0, wasmcloud-provider-sdk v0.11.0, wash-cli v0.36.0, safety bump 7 crates
SAFETY BUMP: wash-lib v0.29.0, wasmcloud-tracing v0.10.0, wasmcloud-provider-sdk v0.11.0, wash-cli v0.36.0, wasmcloud-host v0.22.0, wasmcloud-runtime v0.6.0, wasmcloud-test-util v0.14.0
- bump wasmcloud-core v0.12.0, wash-lib v0.28.0, wasmcloud-tracing v0.9.0, wasmcloud-provider-sdk v0.10.0, wash-cli v0.35.0, safety bump 7 crates
SAFETY BUMP: wash-lib v0.28.0, wasmcloud-tracing v0.9.0, wasmcloud-provider-sdk v0.10.0, wash-cli v0.35.0, wasmcloud-host v0.21.0, wasmcloud-runtime v0.5.0, wasmcloud-test-util v0.13.0
- clippy
- update README
- enable otel feature for docsrs
- address clippy warnings
- enable `ring` feature for `async-nats`
- address clippy warnings
- generate changelogs after 1.0.1 release
- updated with newest features
- address clippy warnings
- bump to 0.4.0
- mark `LinkConfig` `non_exhaustive`
- Excises vestigal remains of wasmbus-rpc
There were some parts of the core crate that we no longer use,
especially now that we don't require claims signing anymore. This
removes them and bumps the core crate in preparation for 1.0
- remove unused braces
- bump to 0.3
- use `&str` directly
- relax type bounds
- remove wasmbus rpc client
- bump `provider-sdk` to 0.2.0
- add descriptions to crates
- replace error field name with err
- reduce verbosity of instrumented functions
- fix format
### New Features
- optimize provider export serving
- name the provider's NATS connection
- add initialize_host_data fn
- support for receiving config updates
- set NATS queue group
- upgrade `wrpc`, `async-nats`, `wasmtime`
- add Context::link_name
This commit adds a utility method `link_name` to the `Context` struct
made available to providers to make it a bit easier to retrieve the
link name.
Since link names are not included on `Context` natively, the headers
availble on the context must be searched.
- add support for flame graphs
- use `tracing-appender`
Avoid locking whole process on each logging statement
- allow providers to access wit metadata for links
This commit enables providers to easily access WIT meatadata related
to a link via the `LinkConfig` struct available at link time.
- generate crate changelogs
- add macro for propagating context
- update `wrpc:keyvalue` in providers
part of this process is adopting `wit-bindgen-wrpc` in the host
- switch to `wit-bindgen-wrpc`
- add trace context to wrpc client
This commit adds tracing information (if provided) to the wRPC client
when creating it manually from inside a provider (and when using an
`InvocationHandler`).
- introduce interface provider running utilities
- introduce provider interface sdk
- use native TLS roots along webpki
- add support for init()
This commit adds support for a implementer-provided provider
initialization hook that `provider-sdk` can call during
initialization.
- implement Redis `wrpc:keyvalue/{atomic,eventual}`
- implement `wasi:http/outgoing-handler` provider
- deliver full config with link
- introduce `run_provider_handler`
- export wRPC client constructor
- Switch to using --enable-observability and --enable- flags
- 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.
- 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.
- enable OTEL logs
- update provider bindgen, add kvredis smithy-WIT implementation
- support chunking and dechunking of requests
- support OTEL traces end-to-end
- send OTEL config via HostData
- add new provider SDK to repo
This is now manually tested and in a state where I think we should have it
in the repo. We should be able to keep iterating from there
### Bug Fixes
- allow override of OTEL config
This commit updates the provider SDK to enable picking up overrides of
the OTEL prvider configuration via initial configuration (available at
provider startup).
- robust check link duplicates
- remove configure_observability() call
- wasmcloud messaging provider directionality
- 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
- Uncomments implementation from the host for wasmcloud:messaging
- Adds an invoker component that reacts to messaging rather than HTTP
- Uses messaging & keyvalue providers plus the actor in a single test
With this, we have an easy to understand way to test every provider
that we have in the repository.
- use send_request to handle request timeout
- add what clippy took from me
- attach traces on inbound and outbound messages
Parse headers from CTL interface and RPC messages, and publish tracing headers
on CTL and RPC responses
- enable `ansi` feature
### Other
- provider-sdk v0.9.1
- tracing v0.8.0, provider-sdk v0.9.0, wash-cli v0.33.0
- bump wasmcloud-core v0.10.0, safety bump 5 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-tracing v0.8.0, wasmcloud-provider-sdk v0.9.0, wash-cli v0.33.0, wash-lib v0.26.0
- bump wasmcloud-core v0.9.0, wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wasmcloud-secrets-types v0.4.0, wash-cli v0.31.0, safety bump 5 crates
SAFETY BUMP: wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wash-cli v0.31.0, wasmcloud-secrets-client v0.4.0
- bump for test-util release
Bump wasmcloud-core v0.8.0, opentelemetry-nats v0.1.1, provider-archive v0.12.0, wasmcloud-runtime v0.3.0, wasmcloud-secrets-types v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, safety bump 8 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, wasmcloud-provider-sdk v0.7.0, wash-cli v0.30.0, wash-lib v0.23.0
- clarify timeout purpose
- update `async-nats` to 0.33
- 'upstream/main' into `merge/wash`
- update opentelemetry
### Refactor
- efficiency, pass optional vec secrets
- rename secrets redis provider
- improve error representations, cleanup
- remove extra trace_level field
- enable consumer groups with kafka provider
This commit enables consumer groups via link time configuration in the
kafka provider.
The native Rust ecosystem for Kafka is somewhat immature, so to do
this we must switch to a different crate
`kafka-rs` (https://crates.io/crates/kafka), which implements consumer
groups but is otherwise missing some features.
With this branch, one can specify CONSUMER_GROUP in link configuration
to control the consumer group that is used for Kafka consumers (whose
incoming messages will trigger downstream components).
- introduce `serve_provider_exports`
- update observability init code
- minor changes from pr feedback
- return wrapped `WrpcClient` directly
- remove `ProviderHandler`
- move wasmbus RPC topic generation to core
This commit moves the topic generation functions that were used for
wasmbus RPC topics from `provider-sdk` to `core` so that they can be
used/referred to more widely.
- remove `serialize` and `deserialize`
- minimize API surface
- subscribe for control subjects in init
- export subject constructors
- extract reusable `init_provider`
- get values from new link def constistently
This commit updates all providers that were marked with TODOs related
to using named config to use `InterfaceLinkDefinition.target_config`
temporarily.
The idea is to stuff configuration into the "names"s of configs that
were supposed to be in use (i.e. `["NAME=VALUE", "NAME=VALUE"]` rather
than `["config-1", "config-2"]`), ahead of named config being ready.
- convert blobstore-fs to bindgen
- move chunking to core
- simply re-export wasmcloud_core as core
- replace lazy_static with once_cell
- construct a strongly typed HostData to send to providers
- remove `atty` dependency
### Style
- replace needs_chunking function with direct comparison
### Test
- update start_provider with named config
### Chore (BREAKING)
- remove cluster_seed/cluster_issuers
### New Features (BREAKING)
- handle hostdata xkeys, decrypt link secrets
- add trace_level option
- handle secrets at init and link
- support storing directional links
- rename put_link to receive_link_config_as_*
This commit renames `put_link` which was a part of the
`ProviderHandler` trait to `receive_link_config_as_target` and
`receive_link_config_as_source` depending on the position of the
provider when the link is put.
With both of these explicit methods, users should be able to configure
their providers appropriately depending on how the link has been put
to them.
### Bug Fixes (BREAKING)
- change inputs of Provider::delete_link_*
This commit introduces new methods to the `Provider` trait for
deleting links -- `delete_link_as_source()` and
`delete_link_as_target()`.
Thse new methods are meant to address an issue with deleting links in
that the name of the link was unavailable -- only the source of the
link was provided.
As the signatures of these functions have changed, this is a breaking change.
- rename actor to component
### Refactor (BREAKING)
- remove link_name, rename provider_key
- unflatten provider errors & invocation errors
This commit refactors areas of provider code (SDK, in-tree providers)
that previously used `ProviderInvocationError`s which mixed
`InvocationError`s and a string-based catch-all for provider-internal
errors to return types that are true to the WIT contracts.
With this commit, provider developers must code to the interface that
matches the WIT contract (ex. `async fn operation() ->
T`), rather than having values that are wrapped in `ProviderInvocationResult`.
Contracts that were ported/not originally written with failure in mind
(i.e. not using `result<_,_>` in WIT) should be rewritten (in the
future) for operations that may fail, rather than relying on the
previously used `ProviderInvocation(Result|Error)` structures.
- rename lattice prefix to just lattice
- make publish method crate-public
- make content_length a required field
### Commit Statistics
- 120 commits contributed to the release over the course of 471 calendar days.
- 114 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
view details
* **Uncategorized**
- Update `wrpc-transport-nats` ([`6d250ff`](https://github.com/wasmCloud/wasmCloud/commit/6d250ffa473385baae59b6f83b35ff38f119c054))
- Optimize provider export serving ([`36b1bf4`](https://github.com/wasmCloud/wasmCloud/commit/36b1bf4876c684e6fc23a938218a522bd88226d3))
- Bump wascap v0.15.1, wasmcloud-core v0.13.0, wash-lib v0.29.0, wasmcloud-tracing v0.10.0, wasmcloud-provider-sdk v0.11.0, wash-cli v0.36.0, safety bump 7 crates ([`c5ba85c`](https://github.com/wasmCloud/wasmCloud/commit/c5ba85cfe6ad63227445b0a5e21d58a8f3e15e33))
- Bump wasmcloud-core v0.12.0, wash-lib v0.28.0, wasmcloud-tracing v0.9.0, wasmcloud-provider-sdk v0.10.0, wash-cli v0.35.0, safety bump 7 crates ([`44bf4c8`](https://github.com/wasmCloud/wasmCloud/commit/44bf4c8793b3989aebbbc28c2f2ce3ebbd4d6a0a))
- Provider-sdk v0.9.1 ([`d49b6ac`](https://github.com/wasmCloud/wasmCloud/commit/d49b6ac050f0ee3c6f25c7a35f0b05ad77365e7a))
- Allow override of OTEL config ([`b0f1523`](https://github.com/wasmCloud/wasmCloud/commit/b0f15232ca7a2a0ce34d7bd66575afc9470eed59))
- Tracing v0.8.0, provider-sdk v0.9.0, wash-cli v0.33.0 ([`1ff476d`](https://github.com/wasmCloud/wasmCloud/commit/1ff476dcd61675a81d747091a1a94f1a4cd5fedb))
- Bump wasmcloud-core v0.10.0, safety bump 5 crates ([`1af6e05`](https://github.com/wasmCloud/wasmCloud/commit/1af6e05f1a47be4e62a4c21d1704aff2e09bef89))
- Robust check link duplicates ([`a77e20f`](https://github.com/wasmCloud/wasmCloud/commit/a77e20f6bf556f715dafc944c2b4d81e698b2119))
- Name the provider's NATS connection ([`fa875b2`](https://github.com/wasmCloud/wasmCloud/commit/fa875b259c57774c44840dd3a42fbdce8f6c0ef8))
- Add initialize_host_data fn ([`4b24e27`](https://github.com/wasmCloud/wasmCloud/commit/4b24e27a68cfc5fe43a993d1d9b542daf0818021))
- Bump wasmcloud-core v0.9.0, wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wasmcloud-secrets-types v0.4.0, wash-cli v0.31.0, safety bump 5 crates ([`8403350`](https://github.com/wasmCloud/wasmCloud/commit/8403350432a2387d4a2bce9c096f002005ba54be))
- Change inputs of Provider::delete_link_* ([`22fed29`](https://github.com/wasmCloud/wasmCloud/commit/22fed29d67f14326ddca56a272310759dcfd1965))
- Support for receiving config updates ([`a2f3ad5`](https://github.com/wasmCloud/wasmCloud/commit/a2f3ad5e63fa6d333bb86d73464319cb35e83f32))
- Bump for test-util release ([`7cd2e71`](https://github.com/wasmCloud/wasmCloud/commit/7cd2e71cb82c1e1b75d0c89bd5bda343016e75f4))
- Clippy ([`3097af2`](https://github.com/wasmCloud/wasmCloud/commit/3097af2824e0fa4477792e798a6c2cda742e3fff))
- Update README ([`8c50fa9`](https://github.com/wasmCloud/wasmCloud/commit/8c50fa9b90424b12a81276872c6e9b5bda61dd99))
- Efficiency, pass optional vec secrets ([`cfbf232`](https://github.com/wasmCloud/wasmCloud/commit/cfbf23226f34f3e7245a5d36cd7bb15e1796850c))
- Rename secrets redis provider ([`8e92e3b`](https://github.com/wasmCloud/wasmCloud/commit/8e92e3b292e72af232524577c3410891a749eca2))
- Improve error representations, cleanup ([`d8ad437`](https://github.com/wasmCloud/wasmCloud/commit/d8ad4376cb4db282047de8c4f62f6b8b907c9356))
- Handle hostdata xkeys, decrypt link secrets ([`4095f2e`](https://github.com/wasmCloud/wasmCloud/commit/4095f2ead49ffd61a8bc57189ccbd8a7defa4de0))
- Remove extra trace_level field ([`4e1d6da`](https://github.com/wasmCloud/wasmCloud/commit/4e1d6da189ff49790d876cd244aed89114efba98))
- Add trace_level option ([`8ad2cde`](https://github.com/wasmCloud/wasmCloud/commit/8ad2cde49cb52872af4c9753be7c422092ae56ee))
- Handle secrets at init and link ([`f643d51`](https://github.com/wasmCloud/wasmCloud/commit/f643d51e1fd01209ad93e93a04eed66b268dc2e2))
- Enable consumer groups with kafka provider ([`1814fd5`](https://github.com/wasmCloud/wasmCloud/commit/1814fd52e32ed4286d8f0be838a6c525cfeccc30))
- Enable otel feature for docsrs ([`929661a`](https://github.com/wasmCloud/wasmCloud/commit/929661ae115a05ccdacbcb0eb90642cdd1ff5cea))
- Address clippy warnings ([`0b1569b`](https://github.com/wasmCloud/wasmCloud/commit/0b1569b42dccdf3ae0f12e0d93fa9bcedd71e6dc))
- Clarify timeout purpose ([`f324674`](https://github.com/wasmCloud/wasmCloud/commit/f324674facf892f5db1747d1b780ccd22383a940))
- Introduce `serve_provider_exports` ([`2406601`](https://github.com/wasmCloud/wasmCloud/commit/2406601fb476e6a8ab7f7b2617ab70834474891a))
- Set NATS queue group ([`c2bb9cb`](https://github.com/wasmCloud/wasmCloud/commit/c2bb9cb5e2ba1c6b055f6726e86ffc95dab90d2c))
- Enable `ring` feature for `async-nats` ([`81ab591`](https://github.com/wasmCloud/wasmCloud/commit/81ab5914e7d08740eb9371c9b718f13f0419c23f))
- Address clippy warnings ([`bd50166`](https://github.com/wasmCloud/wasmCloud/commit/bd50166619b8810ccdc2bcd80c33ff80d94bc909))
- Upgrade `wrpc`, `async-nats`, `wasmtime` ([`9cb1b78`](https://github.com/wasmCloud/wasmCloud/commit/9cb1b784fe7a8892d73bdb40d1172b1879fcd932))
- Update observability init code ([`1dcbeee`](https://github.com/wasmCloud/wasmCloud/commit/1dcbeee35e180ed0334c48b2dc80c9c15ad51994))
- Remove configure_observability() call ([`2eb4c99`](https://github.com/wasmCloud/wasmCloud/commit/2eb4c9947e0300e86971d398a03f6673de031dc3))
- Add Context::link_name ([`757c8e0`](https://github.com/wasmCloud/wasmCloud/commit/757c8e06c053030d9c6b39e67cebb4f27786624f))
- Add support for flame graphs ([`e283619`](https://github.com/wasmCloud/wasmCloud/commit/e28361935ad3b09d46658488e813c809522317bf))
- Use `tracing-appender` ([`1b076b3`](https://github.com/wasmCloud/wasmCloud/commit/1b076b3479874dbc2f7e575fcee65bab66bd056d))
- Bump wasmcloud-tracing v0.5.0, wasmcloud-provider-sdk v0.6.0, wash-cli v0.29.0 ([`b22d338`](https://github.com/wasmCloud/wasmCloud/commit/b22d338d0d61f8a438c4d6ea5e8e5cd26116ade5))
- Bump wascap v0.15.0, wasmcloud-core v0.7.0, wash-lib v0.22.0, wasmcloud-tracing v0.5.0, wasmcloud-provider-sdk v0.6.0, wash-cli v0.29.0, safety bump 5 crates ([`2e38cd4`](https://github.com/wasmCloud/wasmCloud/commit/2e38cd45adef18d47af71b87ca456a25edb2f53a))
- Allow providers to access wit metadata for links ([`feaf5f9`](https://github.com/wasmCloud/wasmCloud/commit/feaf5f9cd63fa7bf8476389396808fac9ba4ce09))
- Bump provider-archive v0.10.2, wasmcloud-core v0.6.0, wash-lib v0.21.0, wasmcloud-tracing v0.4.0, wasmcloud-provider-sdk v0.5.0, wash-cli v0.28.0 ([`73c0ef0`](https://github.com/wasmCloud/wasmCloud/commit/73c0ef0bbe2f6b525655939d2cd30740aef4b6bc))
- Bump provider-archive v0.10.1, wasmcloud-core v0.6.0, wash-lib v0.21.0, wasmcloud-tracing v0.4.0, wasmcloud-provider-sdk v0.5.0, wash-cli v0.28.0, safety bump 5 crates ([`75a2e52`](https://github.com/wasmCloud/wasmCloud/commit/75a2e52f52690ba143679c90237851ebd07e153f))
- Generate changelogs after 1.0.1 release ([`4e0313a`](https://github.com/wasmCloud/wasmCloud/commit/4e0313ae4cfb5cbb2d3fa0320c662466a7082c0e))
- Remove link_name, rename provider_key ([`e1e50d7`](https://github.com/wasmCloud/wasmCloud/commit/e1e50d7366716b61ddce52244e3dd66758ee0b82))
- Support storing directional links ([`88aedb1`](https://github.com/wasmCloud/wasmCloud/commit/88aedb17e90011cb602f48845c3896a3d836c980))
- Updated with newest features ([`0f03f1f`](https://github.com/wasmCloud/wasmCloud/commit/0f03f1f91210a4ed3fa64a4b07aebe8e56627ea6))
- Generate crate changelogs ([`f986e39`](https://github.com/wasmCloud/wasmCloud/commit/f986e39450676dc598b92f13cb6e52b9c3200c0b))
- Minor changes from pr feedback ([`7c664a8`](https://github.com/wasmCloud/wasmCloud/commit/7c664a88cd7bbaa201b9b07a2bb9ba1c215a3b56))
- Wasmcloud messaging provider directionality ([`27cb86d`](https://github.com/wasmCloud/wasmCloud/commit/27cb86d9e86b09c2da9e23a4ebfbddf22f3abad2))
- Add macro for propagating context ([`e19f77d`](https://github.com/wasmCloud/wasmCloud/commit/e19f77dee5fef7d211965a4a07946a0533bbc4a0))
- Address clippy warnings ([`5957fce`](https://github.com/wasmCloud/wasmCloud/commit/5957fce86a928c7398370547d0f43c9498185441))
- Bump to 0.4.0 ([`8c93b0e`](https://github.com/wasmCloud/wasmCloud/commit/8c93b0edbf37f1d0b40e065acfafc89af936a425))
- Rename actor to component ([`9039550`](https://github.com/wasmCloud/wasmCloud/commit/903955009340190283c813fa225bae514fb15c03))
- Update `wrpc:keyvalue` in providers ([`9cd2b40`](https://github.com/wasmCloud/wasmCloud/commit/9cd2b4034f8d5688ce250429dc14120eaf61b483))
- Remove cluster_seed/cluster_issuers ([`bc5d296`](https://github.com/wasmCloud/wasmCloud/commit/bc5d296f3a58bc5e8df0da7e0bf2624d03335d9f))
- Mark `LinkConfig` `non_exhaustive` ([`902a17e`](https://github.com/wasmCloud/wasmCloud/commit/902a17ec9bd73e6bf4dc08dca109d7e11765e6e4))
- Return wrapped `WrpcClient` directly ([`87eb6c8`](https://github.com/wasmCloud/wasmCloud/commit/87eb6c8b2c0bd31def1cfdc6121c612c4dc90871))
- Switch to `wit-bindgen-wrpc` ([`322f471`](https://github.com/wasmCloud/wasmCloud/commit/322f471f9a8154224a50ec33517c9f5b1716d2d5))
- Remove `ProviderHandler` ([`8082135`](https://github.com/wasmCloud/wasmCloud/commit/8082135282f66b5d56fe6d14bb5ce6dc510d4b63))
- Excises vestigal remains of wasmbus-rpc ([`fd69df4`](https://github.com/wasmCloud/wasmCloud/commit/fd69df40f24ca565ace0f8c97a0c47a89db575a4))
- Add trace context to wrpc client ([`5f39863`](https://github.com/wasmCloud/wasmCloud/commit/5f3986365b322624f904260962c3a830580c7b5e))
- Introduce interface provider running utilities ([`8ce845b`](https://github.com/wasmCloud/wasmCloud/commit/8ce845bec7ca3f50e211d36e62fffbb0f36a0b37))
- Introduce provider interface sdk ([`a84492d`](https://github.com/wasmCloud/wasmCloud/commit/a84492d15d154a272de33680f6338379fc036a3a))
- Use native TLS roots along webpki ([`07b5e70`](https://github.com/wasmCloud/wasmCloud/commit/07b5e70a7f1321d184962d7197a8d98d1ecaaf71))
- Move wasmbus RPC topic generation to core ([`5d73831`](https://github.com/wasmCloud/wasmCloud/commit/5d7383137897d28a1bc5df9b1c48f75281dab55b))
- Remove unused braces ([`859663e`](https://github.com/wasmCloud/wasmCloud/commit/859663e775f5505ec8fd7ee2bbb2ada73faae0e2))
- Add support for init() ([`c610c84`](https://github.com/wasmCloud/wasmCloud/commit/c610c845e003400cc515c0134cf546f2c7e9f6ac))
- Bump to 0.3 ([`3d7b643`](https://github.com/wasmCloud/wasmCloud/commit/3d7b64321686139e2e266ff7c69f094bcfac1f6d))
- Implement Redis `wrpc:keyvalue/{atomic,eventual}` ([`614af7e`](https://github.com/wasmCloud/wasmCloud/commit/614af7e3ed734c56b27cd1d2aacb0789a85e8b81))
- Implement `wasi:http/outgoing-handler` provider ([`e0dac9d`](https://github.com/wasmCloud/wasmCloud/commit/e0dac9de4d3a74424e3138971753db9da143db5a))
- Deliver full config with link ([`e14d040`](https://github.com/wasmCloud/wasmCloud/commit/e14d0405e9f746041001e101fc24320c9e6b4f9c))
- Rename put_link to receive_link_config_as_* ([`abffe4b`](https://github.com/wasmCloud/wasmCloud/commit/abffe4bac6137371e00c0afa668db907bde082e6))
- Update start_provider with named config ([`8e15d48`](https://github.com/wasmCloud/wasmCloud/commit/8e15d48258489dbb94f83cbea3872d4ee946c70b))
- Remove `serialize` and `deserialize` ([`54321c7`](https://github.com/wasmCloud/wasmCloud/commit/54321c7cce159b7dad073dfc254dd4f13c21d2a2))
- Minimize API surface ([`637be5d`](https://github.com/wasmCloud/wasmCloud/commit/637be5dea8c8bef72f6f76ccc673477b7b0f1d0f))
- Introduce `run_provider_handler` ([`f50af38`](https://github.com/wasmCloud/wasmCloud/commit/f50af38d7fb9bda9b8e05703240e6fda55f2c6df))
- Export wRPC client constructor ([`97aff4f`](https://github.com/wasmCloud/wasmCloud/commit/97aff4f5f93eeb6e31a31e891f742ab252bffe3b))
- Subscribe for control subjects in init ([`05ae20c`](https://github.com/wasmCloud/wasmCloud/commit/05ae20c8ef474ad2249c6ad4b6ca8cc3b7d01b01))
- Export subject constructors ([`2e473aa`](https://github.com/wasmCloud/wasmCloud/commit/2e473aa8b3337179566c71a9a93a945519b467db))
- Use `&str` directly ([`6b369d4`](https://github.com/wasmCloud/wasmCloud/commit/6b369d49cd37a87dca1f92f31c4d4d3e33dec501))
- Relax type bounds ([`435300a`](https://github.com/wasmCloud/wasmCloud/commit/435300a5d5461860ad5f9abaf2f85cdb6ca3f900))
- Remove wasmbus rpc client ([`56e48aa`](https://github.com/wasmCloud/wasmCloud/commit/56e48aaac4a3e11f2f5e98ff2fa136ce9bb2235c))
- Extract reusable `init_provider` ([`68daded`](https://github.com/wasmCloud/wasmCloud/commit/68dadeddb79cc041851d2adcfeb0417a4006d296))
- Switch to using --enable-observability and --enable- flags ([`868570b`](https://github.com/wasmCloud/wasmCloud/commit/868570be8d94a6d73608c7cde5d2422e15f9eb0c))
- Add messaging triggered test actor ([`0f6a1eb`](https://github.com/wasmCloud/wasmCloud/commit/0f6a1eb97cb46a43c9b24977a8e8dc11061af330))
- Get values from new link def constistently ([`b6a6b04`](https://github.com/wasmCloud/wasmCloud/commit/b6a6b04229730d6783c3fee61c6e078cd3b962ef))
- Support pubsub on wRPC subjects ([`76c1ed7`](https://github.com/wasmCloud/wasmCloud/commit/76c1ed7b5c49152aabd83d27f0b8955d7f874864))
- Change set-target to set-link-name ([`5d19ba1`](https://github.com/wasmCloud/wasmCloud/commit/5d19ba16a98dca9439628e8449309ccaa763ab10))
- Use send_request to handle request timeout ([`2dbc392`](https://github.com/wasmCloud/wasmCloud/commit/2dbc392215c9fa1971b1f3bd83fab0807c60aaee))
- Enable OTEL logs ([`3602bdf`](https://github.com/wasmCloud/wasmCloud/commit/3602bdf5345ec9a75e88c7ce1ab4599585bcc2d3))
- Unflatten provider errors & invocation errors ([`e75d3e2`](https://github.com/wasmCloud/wasmCloud/commit/e75d3e2f2da91371266715723a3229b2138bf4f9))
- Rename lattice prefix to just lattice ([`6e8faab`](https://github.com/wasmCloud/wasmCloud/commit/6e8faab6a6e9f9bb7327ffb71ded2a83718920f7))
- Bump `provider-sdk` to 0.2.0 ([`b9770de`](https://github.com/wasmCloud/wasmCloud/commit/b9770de23b8d3b0fa1adffddb94236403d7e1d3f))
- Make publish method crate-public ([`5fd0557`](https://github.com/wasmCloud/wasmCloud/commit/5fd0557c7ff454211e3f590333ff4dda208a1f7a))
- Update `async-nats` to 0.33 ([`4adbf06`](https://github.com/wasmCloud/wasmCloud/commit/4adbf0647f1ef987e92fbf927db9d09e64d3ecd8))
- Add descriptions to crates ([`cb0bcab`](https://github.com/wasmCloud/wasmCloud/commit/cb0bcab822cb4290c673051ec1dd98d034a61546))
- 'upstream/main' into `merge/wash` ([`0f967b0`](https://github.com/wasmCloud/wasmCloud/commit/0f967b065f30a0b5418f7ed519fdef3dc75a6205))
- Convert blobstore-fs to bindgen ([`aea0a28`](https://github.com/wasmCloud/wasmCloud/commit/aea0a282911a704ee0d70ad38f267d8d8cc00d78))
- Replace error field name with err ([`3ffbd3a`](https://github.com/wasmCloud/wasmCloud/commit/3ffbd3ae2770a2bb7ef2d5635489e2725b3d9daa))
- Update provider bindgen, add kvredis smithy-WIT implementation ([`bf396e0`](https://github.com/wasmCloud/wasmCloud/commit/bf396e0cea4dcb5baa0f0cb0201af0fb078f38a5))
- Reduce verbosity of instrumented functions ([`0023f7e`](https://github.com/wasmCloud/wasmCloud/commit/0023f7e86d5a40a534f623b7220743f27871549e))
- Add cfg block to import ([`a810769`](https://github.com/wasmCloud/wasmCloud/commit/a810769b7be36f02443b707ca1ae06c1e8bf33cc))
- Add what clippy took from me ([`07d818c`](https://github.com/wasmCloud/wasmCloud/commit/07d818cdbd50ae350d236fb1cc309d86b75739ea))
- Fix format ([`7b9ad7b`](https://github.com/wasmCloud/wasmCloud/commit/7b9ad7b57edd06c1c62833965041634811df47eb))
- Attach traces on inbound and outbound messages ([`74142c4`](https://github.com/wasmCloud/wasmCloud/commit/74142c4cff683565fb321b7b65fbb158b5a9c990))
- Make content_length a required field ([`6428747`](https://github.com/wasmCloud/wasmCloud/commit/642874717b6aab760d4692f9e8b12803548314e2))
- Replace needs_chunking function with direct comparison ([`6de67aa`](https://github.com/wasmCloud/wasmCloud/commit/6de67aa1ddab22ec99fe70f2c2fdc92dc5760b06))
- Support chunking and dechunking of requests ([`813ce52`](https://github.com/wasmCloud/wasmCloud/commit/813ce52a9c11270814eec051dfaa8817bf9f567d))
- Move chunking to core ([`0319a92`](https://github.com/wasmCloud/wasmCloud/commit/0319a9245589709d96b03786374d8026beb5d5d0))
- Simply re-export wasmcloud_core as core ([`6f0a7d8`](https://github.com/wasmCloud/wasmCloud/commit/6f0a7d848e49d4cdc66dffe38fd8b41657f32649))
- Replace lazy_static with once_cell ([`e1d7356`](https://github.com/wasmCloud/wasmCloud/commit/e1d7356bb0a07af9f4e6b1626f5df33709f3ed78))
- Construct a strongly typed HostData to send to providers ([`23f1759`](https://github.com/wasmCloud/wasmCloud/commit/23f1759e818117f007df8d9b1bdfdfa7710c98c5))
- Support OTEL traces end-to-end ([`675d364`](https://github.com/wasmCloud/wasmCloud/commit/675d364d2f53f9dbf7ebb6c655d5fbbbba6c62b6))
- Send OTEL config via HostData ([`c334d84`](https://github.com/wasmCloud/wasmCloud/commit/c334d84d01b8b92ab9db105f8e6f0c4a6bcef8b1))
- Update opentelemetry ([`d98a317`](https://github.com/wasmCloud/wasmCloud/commit/d98a317b30e352ea0d73439ad3fa790ddfb8bf3f))
- Enable `ansi` feature ([`c604aca`](https://github.com/wasmCloud/wasmCloud/commit/c604aca1db1017e2458cf66eab232b081d615521))
- Remove `atty` dependency ([`3430c72`](https://github.com/wasmCloud/wasmCloud/commit/3430c72b11564acc0624987cd3df08c629d7d197))
- Merge pull request #396 from rvolosatovs/feat/provider-sdk ([`6ed04f0`](https://github.com/wasmCloud/wasmCloud/commit/6ed04f00a335333196f6bafb96f2c40155537df3))
- Add new provider SDK to repo ([`ada9067`](https://github.com/wasmCloud/wasmCloud/commit/ada90674df5130be6320788bcb08b7868f3b67a5))
## 0.11.0 (2024-10-23)
### Chore
- bump wasmcloud-core v0.12.0, wash-lib v0.28.0, wasmcloud-tracing v0.9.0, wasmcloud-provider-sdk v0.10.0, wash-cli v0.35.0, safety bump 7 crates
SAFETY BUMP: wash-lib v0.28.0, wasmcloud-tracing v0.9.0, wasmcloud-provider-sdk v0.10.0, wash-cli v0.35.0, wasmcloud-host v0.21.0, wasmcloud-runtime v0.5.0, wasmcloud-test-util v0.13.0
- clippy
- update README
- enable otel feature for docsrs
- address clippy warnings
- enable `ring` feature for `async-nats`
- address clippy warnings
- generate changelogs after 1.0.1 release
- updated with newest features
- address clippy warnings
- bump to 0.4.0
- mark `LinkConfig` `non_exhaustive`
- Excises vestigal remains of wasmbus-rpc
There were some parts of the core crate that we no longer use,
especially now that we don't require claims signing anymore. This
removes them and bumps the core crate in preparation for 1.0
- remove unused braces
- bump to 0.3
- use `&str` directly
- relax type bounds
- remove wasmbus rpc client
- bump `provider-sdk` to 0.2.0
- add descriptions to crates
- replace error field name with err
- reduce verbosity of instrumented functions
- fix format
### New Features
- name the provider's NATS connection
- add initialize_host_data fn
- support for receiving config updates
- set NATS queue group
- upgrade `wrpc`, `async-nats`, `wasmtime`
- add Context::link_name
This commit adds a utility method `link_name` to the `Context` struct
made available to providers to make it a bit easier to retrieve the
link name.
Since link names are not included on `Context` natively, the headers
availble on the context must be searched.
- add support for flame graphs
- use `tracing-appender`
Avoid locking whole process on each logging statement
- allow providers to access wit metadata for links
This commit enables providers to easily access WIT meatadata related
to a link via the `LinkConfig` struct available at link time.
- generate crate changelogs
- add macro for propagating context
- update `wrpc:keyvalue` in providers
part of this process is adopting `wit-bindgen-wrpc` in the host
- switch to `wit-bindgen-wrpc`
- add trace context to wrpc client
This commit adds tracing information (if provided) to the wRPC client
when creating it manually from inside a provider (and when using an
`InvocationHandler`).
- introduce interface provider running utilities
- introduce provider interface sdk
- use native TLS roots along webpki
- add support for init()
This commit adds support for a implementer-provided provider
initialization hook that `provider-sdk` can call during
initialization.
- implement Redis `wrpc:keyvalue/{atomic,eventual}`
- implement `wasi:http/outgoing-handler` provider
- deliver full config with link
- introduce `run_provider_handler`
- export wRPC client constructor
- Switch to using --enable-observability and --enable- flags
- 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.
- 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.
- enable OTEL logs
- update provider bindgen, add kvredis smithy-WIT implementation
- support chunking and dechunking of requests
- support OTEL traces end-to-end
- send OTEL config via HostData
- add new provider SDK to repo
This is now manually tested and in a state where I think we should have it
in the repo. We should be able to keep iterating from there
### Bug Fixes
- allow override of OTEL config
This commit updates the provider SDK to enable picking up overrides of
the OTEL prvider configuration via initial configuration (available at
provider startup).
- robust check link duplicates
- remove configure_observability() call
- wasmcloud messaging provider directionality
- 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
- Uncomments implementation from the host for wasmcloud:messaging
- Adds an invoker component that reacts to messaging rather than HTTP
- Uses messaging & keyvalue providers plus the actor in a single test
### Other
- provider-sdk v0.9.1
- tracing v0.8.0, provider-sdk v0.9.0, wash-cli v0.33.0
- bump wasmcloud-core v0.10.0, safety bump 5 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-tracing v0.8.0, wasmcloud-provider-sdk v0.9.0, wash-cli v0.33.0, wash-lib v0.26.0
- bump wasmcloud-core v0.9.0, wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wasmcloud-secrets-types v0.4.0, wash-cli v0.31.0, safety bump 5 crates
SAFETY BUMP: wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wash-cli v0.31.0, wasmcloud-secrets-client v0.4.0
- bump for test-util release
Bump wasmcloud-core v0.8.0, opentelemetry-nats v0.1.1, provider-archive v0.12.0, wasmcloud-runtime v0.3.0, wasmcloud-secrets-types v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, safety bump 8 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, wasmcloud-provider-sdk v0.7.0, wash-cli v0.30.0, wash-lib v0.23.0
- clarify timeout purpose
- update `async-nats` to 0.33
- 'upstream/main' into `merge/wash`
- update opentelemetry
### Refactor
- efficiency, pass optional vec secrets
- rename secrets redis provider
- improve error representations, cleanup
- remove extra trace_level field
- enable consumer groups with kafka provider
This commit enables consumer groups via link time configuration in the
kafka provider.
The native Rust ecosystem for Kafka is somewhat immature, so to do
this we must switch to a different crate
`kafka-rs` (https://crates.io/crates/kafka), which implements consumer
groups but is otherwise missing some features.
With this branch, one can specify CONSUMER_GROUP in link configuration
to control the consumer group that is used for Kafka consumers (whose
incoming messages will trigger downstream components).
- introduce `serve_provider_exports`
- update observability init code
- minor changes from pr feedback
- return wrapped `WrpcClient` directly
- remove `ProviderHandler`
- move wasmbus RPC topic generation to core
This commit moves the topic generation functions that were used for
wasmbus RPC topics from `provider-sdk` to `core` so that they can be
used/referred to more widely.
- remove `serialize` and `deserialize`
- minimize API surface
- subscribe for control subjects in init
- export subject constructors
- extract reusable `init_provider`
- get values from new link def constistently
This commit updates all providers that were marked with TODOs related
to using named config to use `InterfaceLinkDefinition.target_config`
temporarily.
The idea is to stuff configuration into the "names"s of configs that
were supposed to be in use (i.e. `["NAME=VALUE", "NAME=VALUE"]` rather
than `["config-1", "config-2"]`), ahead of named config being ready.
- convert blobstore-fs to bindgen
- move chunking to core
- simply re-export wasmcloud_core as core
- replace lazy_static with once_cell
- construct a strongly typed HostData to send to providers
- remove `atty` dependency
### Style
- replace needs_chunking function with direct comparison
### Test
- update start_provider with named config
### Chore (BREAKING)
- remove cluster_seed/cluster_issuers
### New Features (BREAKING)
- handle hostdata xkeys, decrypt link secrets
- add trace_level option
- handle secrets at init and link
- support storing directional links
- rename put_link to receive_link_config_as_*
This commit renames `put_link` which was a part of the
`ProviderHandler` trait to `receive_link_config_as_target` and
`receive_link_config_as_source` depending on the position of the
provider when the link is put.
With both of these explicit methods, users should be able to configure
their providers appropriately depending on how the link has been put
to them.
### Bug Fixes (BREAKING)
- change inputs of Provider::delete_link_*
This commit introduces new methods to the `Provider` trait for
deleting links -- `delete_link_as_source()` and
`delete_link_as_target()`.
Thse new methods are meant to address an issue with deleting links in
that the name of the link was unavailable -- only the source of the
link was provided.
As the signatures of these functions have changed, this is a breaking change.
- rename actor to component
### Refactor (BREAKING)
- remove link_name, rename provider_key
- unflatten provider errors & invocation errors
This commit refactors areas of provider code (SDK, in-tree providers)
that previously used `ProviderInvocationError`s which mixed
`InvocationError`s and a string-based catch-all for provider-internal
errors to return types that are true to the WIT contracts.
With this commit, provider developers must code to the interface that
matches the WIT contract (ex. `async fn operation() ->
T`), rather than having values that are wrapped in `ProviderInvocationResult`.
Contracts that were ported/not originally written with failure in mind
(i.e. not using `result<_,_>` in WIT) should be rewritten (in the
future) for operations that may fail, rather than relying on the
previously used `ProviderInvocation(Result|Error)` structures.
- rename lattice prefix to just lattice
- make publish method crate-public
- make content_length a required field
With this, we have an easy to understand way to test every providerthat we have in the repository. use send_request to handle request timeout add what clippy took from me attach traces on inbound and outbound messagesParse headers from CTL interface and RPC messages, and publish tracing headerson CTL and RPC responses enable ansi feature
## 0.10.0 (2024-10-09)
### Chore
- clippy
- update README
- enable otel feature for docsrs
- address clippy warnings
- enable `ring` feature for `async-nats`
- address clippy warnings
- generate changelogs after 1.0.1 release
- updated with newest features
- address clippy warnings
- bump to 0.4.0
- mark `LinkConfig` `non_exhaustive`
- Excises vestigal remains of wasmbus-rpc
There were some parts of the core crate that we no longer use,
especially now that we don't require claims signing anymore. This
removes them and bumps the core crate in preparation for 1.0
- remove unused braces
- bump to 0.3
- use `&str` directly
- relax type bounds
- remove wasmbus rpc client
- bump `provider-sdk` to 0.2.0
- add descriptions to crates
- replace error field name with err
- reduce verbosity of instrumented functions
- fix format
### New Features
- name the provider's NATS connection
- add initialize_host_data fn
- support for receiving config updates
- set NATS queue group
- upgrade `wrpc`, `async-nats`, `wasmtime`
- add Context::link_name
This commit adds a utility method `link_name` to the `Context` struct
made available to providers to make it a bit easier to retrieve the
link name.
Since link names are not included on `Context` natively, the headers
availble on the context must be searched.
- add support for flame graphs
- use `tracing-appender`
Avoid locking whole process on each logging statement
- allow providers to access wit metadata for links
This commit enables providers to easily access WIT meatadata related
to a link via the `LinkConfig` struct available at link time.
- generate crate changelogs
- add macro for propagating context
- update `wrpc:keyvalue` in providers
part of this process is adopting `wit-bindgen-wrpc` in the host
- switch to `wit-bindgen-wrpc`
- add trace context to wrpc client
This commit adds tracing information (if provided) to the wRPC client
when creating it manually from inside a provider (and when using an
`InvocationHandler`).
- introduce interface provider running utilities
- introduce provider interface sdk
- use native TLS roots along webpki
- add support for init()
This commit adds support for a implementer-provided provider
initialization hook that `provider-sdk` can call during
initialization.
- implement Redis `wrpc:keyvalue/{atomic,eventual}`
- implement `wasi:http/outgoing-handler` provider
- deliver full config with link
- introduce `run_provider_handler`
- export wRPC client constructor
- Switch to using --enable-observability and --enable- flags
- 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.
- 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.
- enable OTEL logs
- update provider bindgen, add kvredis smithy-WIT implementation
- support chunking and dechunking of requests
- support OTEL traces end-to-end
- send OTEL config via HostData
- add new provider SDK to repo
This is now manually tested and in a state where I think we should have it
in the repo. We should be able to keep iterating from there
### Bug Fixes
- allow override of OTEL config
This commit updates the provider SDK to enable picking up overrides of
the OTEL prvider configuration via initial configuration (available at
provider startup).
- robust check link duplicates
- remove configure_observability() call
- wasmcloud messaging provider directionality
- 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
- provider-sdk v0.9.1
- tracing v0.8.0, provider-sdk v0.9.0, wash-cli v0.33.0
- bump wasmcloud-core v0.10.0, safety bump 5 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-tracing v0.8.0, wasmcloud-provider-sdk v0.9.0, wash-cli v0.33.0, wash-lib v0.26.0
- bump wasmcloud-core v0.9.0, wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wasmcloud-secrets-types v0.4.0, wash-cli v0.31.0, safety bump 5 crates
SAFETY BUMP: wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wash-cli v0.31.0, wasmcloud-secrets-client v0.4.0
- bump for test-util release
Bump wasmcloud-core v0.8.0, opentelemetry-nats v0.1.1, provider-archive v0.12.0, wasmcloud-runtime v0.3.0, wasmcloud-secrets-types v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, safety bump 8 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, wasmcloud-provider-sdk v0.7.0, wash-cli v0.30.0, wash-lib v0.23.0
- clarify timeout purpose
- update `async-nats` to 0.33
- 'upstream/main' into `merge/wash`
- update opentelemetry
### Refactor
- efficiency, pass optional vec secrets
- rename secrets redis provider
- improve error representations, cleanup
- remove extra trace_level field
- enable consumer groups with kafka provider
This commit enables consumer groups via link time configuration in the
kafka provider.
The native Rust ecosystem for Kafka is somewhat immature, so to do
this we must switch to a different crate
`kafka-rs` (https://crates.io/crates/kafka), which implements consumer
groups but is otherwise missing some features.
With this branch, one can specify CONSUMER_GROUP in link configuration
to control the consumer group that is used for Kafka consumers (whose
incoming messages will trigger downstream components).
- introduce `serve_provider_exports`
- update observability init code
- minor changes from pr feedback
- return wrapped `WrpcClient` directly
- remove `ProviderHandler`
- move wasmbus RPC topic generation to core
This commit moves the topic generation functions that were used for
wasmbus RPC topics from `provider-sdk` to `core` so that they can be
used/referred to more widely.
- remove `serialize` and `deserialize`
- minimize API surface
- subscribe for control subjects in init
- export subject constructors
- extract reusable `init_provider`
- get values from new link def constistently
This commit updates all providers that were marked with TODOs related
to using named config to use `InterfaceLinkDefinition.target_config`
temporarily.
The idea is to stuff configuration into the "names"s of configs that
were supposed to be in use (i.e. `["NAME=VALUE", "NAME=VALUE"]` rather
than `["config-1", "config-2"]`), ahead of named config being ready.
- convert blobstore-fs to bindgen
- move chunking to core
- simply re-export wasmcloud_core as core
- replace lazy_static with once_cell
- construct a strongly typed HostData to send to providers
- remove `atty` dependency
### Style
- replace needs_chunking function with direct comparison
### Test
- update start_provider with named config
### Chore (BREAKING)
- remove cluster_seed/cluster_issuers
### New Features (BREAKING)
- handle hostdata xkeys, decrypt link secrets
- add trace_level option
- handle secrets at init and link
- support storing directional links
- rename put_link to receive_link_config_as_*
This commit renames `put_link` which was a part of the
`ProviderHandler` trait to `receive_link_config_as_target` and
`receive_link_config_as_source` depending on the position of the
provider when the link is put.
With both of these explicit methods, users should be able to configure
their providers appropriately depending on how the link has been put
to them.
### Bug Fixes (BREAKING)
- change inputs of Provider::delete_link_*
This commit introduces new methods to the `Provider` trait for
deleting links -- `delete_link_as_source()` and
`delete_link_as_target()`.
Thse new methods are meant to address an issue with deleting links in
that the name of the link was unavailable -- only the source of the
link was provided.
As the signatures of these functions have changed, this is a breaking change.
- rename actor to component
### Refactor (BREAKING)
- remove link_name, rename provider_key
- unflatten provider errors & invocation errors
This commit refactors areas of provider code (SDK, in-tree providers)
that previously used `ProviderInvocationError`s which mixed
`InvocationError`s and a string-based catch-all for provider-internal
errors to return types that are true to the WIT contracts.
With this commit, provider developers must code to the interface that
matches the WIT contract (ex. `async fn operation() ->
T`), rather than having values that are wrapped in `ProviderInvocationResult`.
Contracts that were ported/not originally written with failure in mind
(i.e. not using `result<_,_>` in WIT) should be rewritten (in the
future) for operations that may fail, rather than relying on the
previously used `ProviderInvocation(Result|Error)` structures.
- rename lattice prefix to just lattice
- make publish method crate-public
- make content_length a required field
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 testWith this, we have an easy to understand way to test every providerthat we have in the repository. use send_request to handle request timeout add what clippy took from me attach traces on inbound and outbound messagesParse headers from CTL interface and RPC messages, and publish tracing headerson CTL and RPC responses enable ansi feature
## 0.9.1 (2024-09-24)
### Chore
- clippy
- update README
- enable otel feature for docsrs
- address clippy warnings
- enable `ring` feature for `async-nats`
- address clippy warnings
- generate changelogs after 1.0.1 release
- updated with newest features
- address clippy warnings
- bump to 0.4.0
- mark `LinkConfig` `non_exhaustive`
- Excises vestigal remains of wasmbus-rpc
There were some parts of the core crate that we no longer use,
especially now that we don't require claims signing anymore. This
removes them and bumps the core crate in preparation for 1.0
- remove unused braces
- bump to 0.3
- use `&str` directly
- relax type bounds
- remove wasmbus rpc client
- bump `provider-sdk` to 0.2.0
- add descriptions to crates
- replace error field name with err
- reduce verbosity of instrumented functions
- fix format
### New Features
- name the provider's NATS connection
- add initialize_host_data fn
- support for receiving config updates
- set NATS queue group
- upgrade `wrpc`, `async-nats`, `wasmtime`
- add Context::link_name
This commit adds a utility method `link_name` to the `Context` struct
made available to providers to make it a bit easier to retrieve the
link name.
Since link names are not included on `Context` natively, the headers
availble on the context must be searched.
- add support for flame graphs
- use `tracing-appender`
Avoid locking whole process on each logging statement
- allow providers to access wit metadata for links
This commit enables providers to easily access WIT meatadata related
to a link via the `LinkConfig` struct available at link time.
- generate crate changelogs
- add macro for propagating context
- update `wrpc:keyvalue` in providers
part of this process is adopting `wit-bindgen-wrpc` in the host
- switch to `wit-bindgen-wrpc`
- add trace context to wrpc client
This commit adds tracing information (if provided) to the wRPC client
when creating it manually from inside a provider (and when using an
`InvocationHandler`).
- introduce interface provider running utilities
- introduce provider interface sdk
- use native TLS roots along webpki
- add support for init()
This commit adds support for a implementer-provided provider
initialization hook that `provider-sdk` can call during
initialization.
- implement Redis `wrpc:keyvalue/{atomic,eventual}`
- implement `wasi:http/outgoing-handler` provider
- deliver full config with link
- introduce `run_provider_handler`
- export wRPC client constructor
- Switch to using --enable-observability and --enable- flags
- 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.
- 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.
- enable OTEL logs
- update provider bindgen, add kvredis smithy-WIT implementation
- support chunking and dechunking of requests
- support OTEL traces end-to-end
- send OTEL config via HostData
- add new provider SDK to repo
This is now manually tested and in a state where I think we should have it
in the repo. We should be able to keep iterating from there
### Bug Fixes
- allow override of OTEL config
This commit updates the provider SDK to enable picking up overrides of
the OTEL prvider configuration via initial configuration (available at
provider startup).
- robust check link duplicates
- remove configure_observability() call
- wasmcloud messaging provider directionality
- 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
- tracing v0.8.0, provider-sdk v0.9.0, wash-cli v0.33.0
- bump wasmcloud-core v0.10.0, safety bump 5 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-tracing v0.8.0, wasmcloud-provider-sdk v0.9.0, wash-cli v0.33.0, wash-lib v0.26.0
- bump wasmcloud-core v0.9.0, wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wasmcloud-secrets-types v0.4.0, wash-cli v0.31.0, safety bump 5 crates
SAFETY BUMP: wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wash-cli v0.31.0, wasmcloud-secrets-client v0.4.0
- bump for test-util release
Bump wasmcloud-core v0.8.0, opentelemetry-nats v0.1.1, provider-archive v0.12.0, wasmcloud-runtime v0.3.0, wasmcloud-secrets-types v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, safety bump 8 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, wasmcloud-provider-sdk v0.7.0, wash-cli v0.30.0, wash-lib v0.23.0
- clarify timeout purpose
- update `async-nats` to 0.33
- 'upstream/main' into `merge/wash`
- update opentelemetry
### Refactor
- efficiency, pass optional vec secrets
- rename secrets redis provider
- improve error representations, cleanup
- remove extra trace_level field
- enable consumer groups with kafka provider
This commit enables consumer groups via link time configuration in the
kafka provider.
The native Rust ecosystem for Kafka is somewhat immature, so to do
this we must switch to a different crate
`kafka-rs` (https://crates.io/crates/kafka), which implements consumer
groups but is otherwise missing some features.
With this branch, one can specify CONSUMER_GROUP in link configuration
to control the consumer group that is used for Kafka consumers (whose
incoming messages will trigger downstream components).
- introduce `serve_provider_exports`
- update observability init code
- minor changes from pr feedback
- return wrapped `WrpcClient` directly
- remove `ProviderHandler`
- move wasmbus RPC topic generation to core
This commit moves the topic generation functions that were used for
wasmbus RPC topics from `provider-sdk` to `core` so that they can be
used/referred to more widely.
- remove `serialize` and `deserialize`
- minimize API surface
- subscribe for control subjects in init
- export subject constructors
- extract reusable `init_provider`
- get values from new link def constistently
This commit updates all providers that were marked with TODOs related
to using named config to use `InterfaceLinkDefinition.target_config`
temporarily.
The idea is to stuff configuration into the "names"s of configs that
were supposed to be in use (i.e. `["NAME=VALUE", "NAME=VALUE"]` rather
than `["config-1", "config-2"]`), ahead of named config being ready.
- convert blobstore-fs to bindgen
- move chunking to core
- simply re-export wasmcloud_core as core
- replace lazy_static with once_cell
- construct a strongly typed HostData to send to providers
- remove `atty` dependency
### Style
- replace needs_chunking function with direct comparison
### Test
- update start_provider with named config
### Chore (BREAKING)
- remove cluster_seed/cluster_issuers
### New Features (BREAKING)
- handle hostdata xkeys, decrypt link secrets
- add trace_level option
- handle secrets at init and link
- support storing directional links
- rename put_link to receive_link_config_as_*
This commit renames `put_link` which was a part of the
`ProviderHandler` trait to `receive_link_config_as_target` and
`receive_link_config_as_source` depending on the position of the
provider when the link is put.
With both of these explicit methods, users should be able to configure
their providers appropriately depending on how the link has been put
to them.
### Bug Fixes (BREAKING)
- change inputs of Provider::delete_link_*
This commit introduces new methods to the `Provider` trait for
deleting links -- `delete_link_as_source()` and
`delete_link_as_target()`.
Thse new methods are meant to address an issue with deleting links in
that the name of the link was unavailable -- only the source of the
link was provided.
As the signatures of these functions have changed, this is a breaking change.
- rename actor to component
### Refactor (BREAKING)
- remove link_name, rename provider_key
- unflatten provider errors & invocation errors
This commit refactors areas of provider code (SDK, in-tree providers)
that previously used `ProviderInvocationError`s which mixed
`InvocationError`s and a string-based catch-all for provider-internal
errors to return types that are true to the WIT contracts.
With this commit, provider developers must code to the interface that
matches the WIT contract (ex. `async fn operation() ->
T`), rather than having values that are wrapped in `ProviderInvocationResult`.
Contracts that were ported/not originally written with failure in mind
(i.e. not using `result<_,_>` in WIT) should be rewritten (in the
future) for operations that may fail, rather than relying on the
previously used `ProviderInvocation(Result|Error)` structures.
- rename lattice prefix to just lattice
- make publish method crate-public
- make content_length a required field
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 testWith this, we have an easy to understand way to test every providerthat we have in the repository. use send_request to handle request timeout add what clippy took from me attach traces on inbound and outbound messagesParse headers from CTL interface and RPC messages, and publish tracing headerson CTL and RPC responses enable ansi feature
## 0.9.0 (2024-09-18)
### Chore
- clippy
- update README
- enable otel feature for docsrs
- address clippy warnings
- enable `ring` feature for `async-nats`
- address clippy warnings
- generate changelogs after 1.0.1 release
- updated with newest features
- address clippy warnings
- bump to 0.4.0
- mark `LinkConfig` `non_exhaustive`
- Excises vestigal remains of wasmbus-rpc
There were some parts of the core crate that we no longer use,
especially now that we don't require claims signing anymore. This
removes them and bumps the core crate in preparation for 1.0
- remove unused braces
- bump to 0.3
- use `&str` directly
- relax type bounds
- remove wasmbus rpc client
- bump `provider-sdk` to 0.2.0
- add descriptions to crates
- replace error field name with err
- reduce verbosity of instrumented functions
- fix format
### New Features
- name the provider's NATS connection
- add initialize_host_data fn
- support for receiving config updates
- set NATS queue group
- upgrade `wrpc`, `async-nats`, `wasmtime`
- add Context::link_name
This commit adds a utility method `link_name` to the `Context` struct
made available to providers to make it a bit easier to retrieve the
link name.
Since link names are not included on `Context` natively, the headers
availble on the context must be searched.
- add support for flame graphs
- use `tracing-appender`
Avoid locking whole process on each logging statement
- allow providers to access wit metadata for links
This commit enables providers to easily access WIT meatadata related
to a link via the `LinkConfig` struct available at link time.
- generate crate changelogs
- add macro for propagating context
- update `wrpc:keyvalue` in providers
part of this process is adopting `wit-bindgen-wrpc` in the host
- switch to `wit-bindgen-wrpc`
- add trace context to wrpc client
This commit adds tracing information (if provided) to the wRPC client
when creating it manually from inside a provider (and when using an
`InvocationHandler`).
- introduce interface provider running utilities
- introduce provider interface sdk
- use native TLS roots along webpki
- add support for init()
This commit adds support for a implementer-provided provider
initialization hook that `provider-sdk` can call during
initialization.
- implement Redis `wrpc:keyvalue/{atomic,eventual}`
- implement `wasi:http/outgoing-handler` provider
- deliver full config with link
- introduce `run_provider_handler`
- export wRPC client constructor
- Switch to using --enable-observability and --enable- flags
- 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.
- 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.
- enable OTEL logs
- update provider bindgen, add kvredis smithy-WIT implementation
- support chunking and dechunking of requests
- support OTEL traces end-to-end
- send OTEL config via HostData
- add new provider SDK to repo
This is now manually tested and in a state where I think we should have it
in the repo. We should be able to keep iterating from there
### Bug Fixes
- robust check link duplicates
- remove configure_observability() call
- wasmcloud messaging provider directionality
- 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
- bump wasmcloud-core v0.10.0, safety bump 5 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-tracing v0.8.0, wasmcloud-provider-sdk v0.9.0, wash-cli v0.33.0, wash-lib v0.26.0
- bump wasmcloud-core v0.9.0, wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wasmcloud-secrets-types v0.4.0, wash-cli v0.31.0, safety bump 5 crates
SAFETY BUMP: wash-lib v0.24.0, wasmcloud-tracing v0.7.0, wasmcloud-provider-sdk v0.8.0, wash-cli v0.31.0, wasmcloud-secrets-client v0.4.0
- bump for test-util release
Bump wasmcloud-core v0.8.0, opentelemetry-nats v0.1.1, provider-archive v0.12.0, wasmcloud-runtime v0.3.0, wasmcloud-secrets-types v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, safety bump 8 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, wasmcloud-provider-sdk v0.7.0, wash-cli v0.30.0, wash-lib v0.23.0
- clarify timeout purpose
- update `async-nats` to 0.33
- 'upstream/main' into `merge/wash`
- update opentelemetry
### Refactor
- efficiency, pass optional vec secrets
- rename secrets redis provider
- improve error representations, cleanup
- remove extra trace_level field
- enable consumer groups with kafka provider
This commit enables consumer groups via link time configuration in the
kafka provider.
The native Rust ecosystem for Kafka is somewhat immature, so to do
this we must switch to a different crate
`kafka-rs` (https://crates.io/crates/kafka), which implements consumer
groups but is otherwise missing some features.
With this branch, one can specify CONSUMER_GROUP in link configuration
to control the consumer group that is used for Kafka consumers (whose
incoming messages will trigger downstream components).
- introduce `serve_provider_exports`
- update observability init code
- minor changes from pr feedback
- return wrapped `WrpcClient` directly
- remove `ProviderHandler`
- move wasmbus RPC topic generation to core
This commit moves the topic generation functions that were used for
wasmbus RPC topics from `provider-sdk` to `core` so that they can be
used/referred to more widely.
- remove `serialize` and `deserialize`
- minimize API surface
- subscribe for control subjects in init
- export subject constructors
- extract reusable `init_provider`
- get values from new link def constistently
This commit updates all providers that were marked with TODOs related
to using named config to use `InterfaceLinkDefinition.target_config`
temporarily.
The idea is to stuff configuration into the "names"s of configs that
were supposed to be in use (i.e. `["NAME=VALUE", "NAME=VALUE"]` rather
than `["config-1", "config-2"]`), ahead of named config being ready.
- convert blobstore-fs to bindgen
- move chunking to core
- simply re-export wasmcloud_core as core
- replace lazy_static with once_cell
- construct a strongly typed HostData to send to providers
- remove `atty` dependency
### Style
- replace needs_chunking function with direct comparison
### Test
- update start_provider with named config
### Chore (BREAKING)
- remove cluster_seed/cluster_issuers
### New Features (BREAKING)
- handle hostdata xkeys, decrypt link secrets
- add trace_level option
- handle secrets at init and link
- support storing directional links
- rename put_link to receive_link_config_as_*
This commit renames `put_link` which was a part of the
`ProviderHandler` trait to `receive_link_config_as_target` and
`receive_link_config_as_source` depending on the position of the
provider when the link is put.
With both of these explicit methods, users should be able to configure
their providers appropriately depending on how the link has been put
to them.
### Bug Fixes (BREAKING)
- change inputs of Provider::delete_link_*
This commit introduces new methods to the `Provider` trait for
deleting links -- `delete_link_as_source()` and
`delete_link_as_target()`.
Thse new methods are meant to address an issue with deleting links in
that the name of the link was unavailable -- only the source of the
link was provided.
As the signatures of these functions have changed, this is a breaking change.
- rename actor to component
### Refactor (BREAKING)
- remove link_name, rename provider_key
- unflatten provider errors & invocation errors
This commit refactors areas of provider code (SDK, in-tree providers)
that previously used `ProviderInvocationError`s which mixed
`InvocationError`s and a string-based catch-all for provider-internal
errors to return types that are true to the WIT contracts.
With this commit, provider developers must code to the interface that
matches the WIT contract (ex. `async fn operation() ->
T`), rather than having values that are wrapped in `ProviderInvocationResult`.
Contracts that were ported/not originally written with failure in mind
(i.e. not using `result<_,_>` in WIT) should be rewritten (in the
future) for operations that may fail, rather than relying on the
previously used `ProviderInvocation(Result|Error)` structures.
- rename lattice prefix to just lattice
- make publish method crate-public
- make content_length a required field
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 testWith this, we have an easy to understand way to test every providerthat we have in the repository. use send_request to handle request timeout add what clippy took from me attach traces on inbound and outbound messagesParse headers from CTL interface and RPC messages, and publish tracing headerson CTL and RPC responses enable ansi feature
## 0.8.0 (2024-08-23)
### Chore
- clippy
- update README
- enable otel feature for docsrs
- address clippy warnings
- enable `ring` feature for `async-nats`
- address clippy warnings
- generate changelogs after 1.0.1 release
- updated with newest features
- address clippy warnings
- bump to 0.4.0
- mark `LinkConfig` `non_exhaustive`
- Excises vestigal remains of wasmbus-rpc
There were some parts of the core crate that we no longer use,
especially now that we don't require claims signing anymore. This
removes them and bumps the core crate in preparation for 1.0
- remove unused braces
- bump to 0.3
- use `&str` directly
- relax type bounds
- remove wasmbus rpc client
- bump `provider-sdk` to 0.2.0
- add descriptions to crates
- replace error field name with err
- reduce verbosity of instrumented functions
- fix format
### New Features
- support for receiving config updates
- set NATS queue group
- upgrade `wrpc`, `async-nats`, `wasmtime`
- add Context::link_name
This commit adds a utility method `link_name` to the `Context` struct
made available to providers to make it a bit easier to retrieve the
link name.
Since link names are not included on `Context` natively, the headers
availble on the context must be searched.
- add support for flame graphs
- use `tracing-appender`
Avoid locking whole process on each logging statement
- allow providers to access wit metadata for links
This commit enables providers to easily access WIT meatadata related
to a link via the `LinkConfig` struct available at link time.
- generate crate changelogs
- add macro for propagating context
- update `wrpc:keyvalue` in providers
part of this process is adopting `wit-bindgen-wrpc` in the host
- switch to `wit-bindgen-wrpc`
- add trace context to wrpc client
This commit adds tracing information (if provided) to the wRPC client
when creating it manually from inside a provider (and when using an
`InvocationHandler`).
- introduce interface provider running utilities
- introduce provider interface sdk
- use native TLS roots along webpki
- add support for init()
This commit adds support for a implementer-provided provider
initialization hook that `provider-sdk` can call during
initialization.
- implement Redis `wrpc:keyvalue/{atomic,eventual}`
- implement `wasi:http/outgoing-handler` provider
- deliver full config with link
- introduce `run_provider_handler`
- export wRPC client constructor
- Switch to using --enable-observability and --enable- flags
- 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.
- 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.
- enable OTEL logs
- update provider bindgen, add kvredis smithy-WIT implementation
- support chunking and dechunking of requests
- support OTEL traces end-to-end
- send OTEL config via HostData
- add new provider SDK to repo
This is now manually tested and in a state where I think we should have it
in the repo. We should be able to keep iterating from there
### Bug Fixes
- remove configure_observability() call
- wasmcloud messaging provider directionality
- 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
- bump for test-util release
Bump wasmcloud-core v0.8.0, opentelemetry-nats v0.1.1, provider-archive v0.12.0, wasmcloud-runtime v0.3.0, wasmcloud-secrets-types v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, safety bump 8 crates
SAFETY BUMP: wasmcloud-runtime v0.3.0, wasmcloud-secrets-client v0.3.0, wasmcloud-tracing v0.6.0, wasmcloud-host v0.82.0, wasmcloud-test-util v0.12.0, wasmcloud-provider-sdk v0.7.0, wash-cli v0.30.0, wash-lib v0.23.0
- clarify timeout purpose
- update `async-nats` to 0.33
- 'upstream/main' into `merge/wash`
- update opentelemetry
### Refactor
- efficiency, pass optional vec secrets
- rename secrets redis provider
- improve error representations, cleanup
- remove extra trace_level field
- enable consumer groups with kafka provider
This commit enables consumer groups via link time configuration in the
kafka provider.
The native Rust ecosystem for Kafka is somewhat immature, so to do
this we must switch to a different crate
`kafka-rs` (https://crates.io/crates/kafka), which implements consumer
groups but is otherwise missing some features.
With this branch, one can specify CONSUMER_GROUP in link configuration
to control the consumer group that is used for Kafka consumers (whose
incoming messages will trigger downstream components).
- introduce `serve_provider_exports`
- update observability init code
- minor changes from pr feedback
- return wrapped `WrpcClient` directly
- remove `ProviderHandler`
- move wasmbus RPC topic generation to core
This commit moves the topic generation functions that were used for
wasmbus RPC topics from `provider-sdk` to `core` so that they can be
used/referred to more widely.
- remove `serialize` and `deserialize`
- minimize API surface
- subscribe for control subjects in init
- export subject constructors
- extract reusable `init_provider`
- get values from new link def constistently
This commit updates all providers that were marked with TODOs related
to using named config to use `InterfaceLinkDefinition.target_config`
temporarily.
The idea is to stuff configuration into the "names"s of configs that
were supposed to be in use (i.e. `["NAME=VALUE", "NAME=VALUE"]` rather
than `["config-1", "config-2"]`), ahead of named config being ready.
- convert blobstore-fs to bindgen
- move chunking to core
- simply re-export wasmcloud_core as core
- replace lazy_static with once_cell
- construct a strongly typed HostData to send to providers
- remove `atty` dependency
### Style
- replace needs_chunking function with direct comparison
### Test
- update start_provider with named config
### Chore (BREAKING)
- remove cluster_seed/cluster_issuers
### New Features (BREAKING)
- handle hostdata xkeys, decrypt link secrets
- add trace_level option
- handle secrets at init and link
- support storing directional links
- rename put_link to receive_link_config_as_*
This commit renames `put_link` which was a part of the
`ProviderHandler` trait to `receive_link_config_as_target` and
`receive_link_config_as_source` depending on the position of the
provider when the link is put.
With both of these explicit methods, users should be able to configure
their providers appropriately depending on how the link has been put
to them.
### Bug Fixes (BREAKING)
- change inputs of Provider::delete_link_*
This commit introduces new methods to the `Provider` trait for
deleting links -- `delete_link_as_source()` and
`delete_link_as_target()`.
Thse new methods are meant to address an issue with deleting links in
that the name of the link was unavailable -- only the source of the
link was provided.
As the signatures of these functions have changed, this is a breaking change.
- rename actor to component
### Refactor (BREAKING)
- remove link_name, rename provider_key
- unflatten provider errors & invocation errors
This commit refactors areas of provider code (SDK, in-tree providers)
that previously used `ProviderInvocationError`s which mixed
`InvocationError`s and a string-based catch-all for provider-internal
errors to return types that are true to the WIT contracts.
With this commit, provider developers must code to the interface that
matches the WIT contract (ex. `async fn operation() ->
T`), rather than having values that are wrapped in `ProviderInvocationResult`.
Contracts that were ported/not originally written with failure in mind
(i.e. not using `result<_,_>` in WIT) should be rewritten (in the
future) for operations that may fail, rather than relying on the
previously used `ProviderInvocation(Result|Error)` structures.
- rename lattice prefix to just lattice
- make publish method crate-public
- make content_length a required field
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 testWith this, we have an easy to understand way to test every providerthat we have in the repository. use send_request to handle request timeout add what clippy took from me attach traces on inbound and outbound messagesParse headers from CTL interface and RPC messages, and publish tracing headerson CTL and RPC responses enable ansi feature
## 0.6.0 (2024-06-12)
### Chore
- generate changelogs after 1.0.1 release
- updated with newest features
- address clippy warnings
- bump to 0.4.0
- mark `LinkConfig` `non_exhaustive`
- Excises vestigal remains of wasmbus-rpc
There were some parts of the core crate that we no longer use,
especially now that we don't require claims signing anymore. This
removes them and bumps the core crate in preparation for 1.0
- remove unused braces
- bump to 0.3
- use `&str` directly
- relax type bounds
- remove wasmbus rpc client
- bump `provider-sdk` to 0.2.0
- add descriptions to crates
- replace error field name with err
- reduce verbosity of instrumented functions
- fix format
### New Features
- allow providers to access wit metadata for links
This commit enables providers to easily access WIT meatadata related
to a link via the `LinkConfig` struct available at link time.
- generate crate changelogs
- add macro for propagating context
- update `wrpc:keyvalue` in providers
part of this process is adopting `wit-bindgen-wrpc` in the host
- switch to `wit-bindgen-wrpc`
- add trace context to wrpc client
This commit adds tracing information (if provided) to the wRPC client
when creating it manually from inside a provider (and when using an
`InvocationHandler`).
- introduce interface provider running utilities
- introduce provider interface sdk
- use native TLS roots along webpki
- add support for init()
This commit adds support for a implementer-provided provider
initialization hook that `provider-sdk` can call during
initialization.
- implement Redis `wrpc:keyvalue/{atomic,eventual}`
- implement `wasi:http/outgoing-handler` provider
- deliver full config with link
- introduce `run_provider_handler`
- export wRPC client constructor
- Switch to using --enable-observability and --enable- flags
- 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.
- 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.
- enable OTEL logs
- update provider bindgen, add kvredis smithy-WIT implementation
- support chunking and dechunking of requests
- support OTEL traces end-to-end
- send OTEL config via HostData
- add new provider SDK to repo
This is now manually tested and in a state where I think we should have it
in the repo. We should be able to keep iterating from there
### Bug Fixes
- wasmcloud messaging provider directionality
- 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
- update `async-nats` to 0.33
- 'upstream/main' into `merge/wash`
- update opentelemetry
### Refactor
- minor changes from pr feedback
- return wrapped `WrpcClient` directly
- remove `ProviderHandler`
- move wasmbus RPC topic generation to core
This commit moves the topic generation functions that were used for
wasmbus RPC topics from `provider-sdk` to `core` so that they can be
used/referred to more widely.
- remove `serialize` and `deserialize`
- minimize API surface
- subscribe for control subjects in init
- export subject constructors
- extract reusable `init_provider`
- get values from new link def constistently
This commit updates all providers that were marked with TODOs related
to using named config to use `InterfaceLinkDefinition.target_config`
temporarily.
The idea is to stuff configuration into the "names"s of configs that
were supposed to be in use (i.e. `["NAME=VALUE", "NAME=VALUE"]` rather
than `["config-1", "config-2"]`), ahead of named config being ready.
- convert blobstore-fs to bindgen
- move chunking to core
- simply re-export wasmcloud_core as core
- replace lazy_static with once_cell
- construct a strongly typed HostData to send to providers
- remove `atty` dependency
### Style
- replace needs_chunking function with direct comparison
### Test
- update start_provider with named config
### Chore (BREAKING)
- remove cluster_seed/cluster_issuers
### New Features (BREAKING)
- support storing directional links
- rename put_link to receive_link_config_as_*
This commit renames `put_link` which was a part of the
`ProviderHandler` trait to `receive_link_config_as_target` and
`receive_link_config_as_source` depending on the position of the
provider when the link is put.
With both of these explicit methods, users should be able to configure
their providers appropriately depending on how the link has been put
to them.
### Bug Fixes (BREAKING)
- rename actor to component
### Refactor (BREAKING)
- remove link_name, rename provider_key
- unflatten provider errors & invocation errors
This commit refactors areas of provider code (SDK, in-tree providers)
that previously used `ProviderInvocationError`s which mixed
`InvocationError`s and a string-based catch-all for provider-internal
errors to return types that are true to the WIT contracts.
With this commit, provider developers must code to the interface that
matches the WIT contract (ex. `async fn operation() ->
T`), rather than having values that are wrapped in `ProviderInvocationResult`.
Contracts that were ported/not originally written with failure in mind
(i.e. not using `result<_,_>` in WIT) should be rewritten (in the
future) for operations that may fail, rather than relying on the
previously used `ProviderInvocation(Result|Error)` structures.
- rename lattice prefix to just lattice
- make publish method crate-public
- make content_length a required field
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
## 0.5.0 (2024-05-08)
### Chore
- address clippy warnings
- bump to 0.4.0
- mark `LinkConfig` `non_exhaustive`
- Excises vestigal remains of wasmbus-rpc
There were some parts of the core crate that we no longer use,
especially now that we don't require claims signing anymore. This
removes them and bumps the core crate in preparation for 1.0
- remove unused braces
- bump to 0.3
- use `&str` directly
- relax type bounds
- remove wasmbus rpc client
- bump `provider-sdk` to 0.2.0
- add descriptions to crates
- replace error field name with err
- reduce verbosity of instrumented functions
- fix format
### Chore
- generate changelogs after 1.0.1 release
### Refactor (BREAKING)
- remove link_name, rename provider_key
### Chore
- updated with newest features
### New Features
- add macro for propagating context
- update `wrpc:keyvalue` in providers
part of this process is adopting `wit-bindgen-wrpc` in the host
- switch to `wit-bindgen-wrpc`
- add trace context to wrpc client
This commit adds tracing information (if provided) to the wRPC client
when creating it manually from inside a provider (and when using an
`InvocationHandler`).
- introduce interface provider running utilities
- introduce provider interface sdk
- use native TLS roots along webpki
- add support for init()
This commit adds support for a implementer-provided provider
initialization hook that `provider-sdk` can call during
initialization.
- implement Redis `wrpc:keyvalue/{atomic,eventual}`
- implement `wasi:http/outgoing-handler` provider
- deliver full config with link
- introduce `run_provider_handler`
- export wRPC client constructor
- Switch to using --enable-observability and --enable- flags
- 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.
- 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.
- enable OTEL logs
- update provider bindgen, add kvredis smithy-WIT implementation
- support chunking and dechunking of requests
- support OTEL traces end-to-end
- send OTEL config via HostData
- add new provider SDK to repo
This is now manually tested and in a state where I think we should have it
in the repo. We should be able to keep iterating from there
- generate crate changelogs
- generate crate changelogs
### Bug Fixes
- wasmcloud messaging provider directionality
- 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
- update `async-nats` to 0.33
- 'upstream/main' into `merge/wash`
- update opentelemetry
### Refactor
- minor changes from pr feedback
- return wrapped `WrpcClient` directly
- remove `ProviderHandler`
- move wasmbus RPC topic generation to core
This commit moves the topic generation functions that were used for
wasmbus RPC topics from `provider-sdk` to `core` so that they can be
used/referred to more widely.
- remove `serialize` and `deserialize`
- minimize API surface
- subscribe for control subjects in init
- export subject constructors
- extract reusable `init_provider`
- get values from new link def constistently
This commit updates all providers that were marked with TODOs related
to using named config to use `InterfaceLinkDefinition.target_config`
temporarily.
The idea is to stuff configuration into the "names"s of configs that
were supposed to be in use (i.e. `["NAME=VALUE", "NAME=VALUE"]` rather
than `["config-1", "config-2"]`), ahead of named config being ready.
- convert blobstore-fs to bindgen
- move chunking to core
- simply re-export wasmcloud_core as core
- replace lazy_static with once_cell
- construct a strongly typed HostData to send to providers
- remove `atty` dependency
### Style
- replace needs_chunking function with direct comparison
### Test
- update start_provider with named config
### Chore (BREAKING)
- remove cluster_seed/cluster_issuers
### New Features (BREAKING)
- rename put_link to receive_link_config_as_*
This commit renames `put_link` which was a part of the
`ProviderHandler` trait to `receive_link_config_as_target` and
`receive_link_config_as_source` depending on the position of the
provider when the link is put.
With both of these explicit methods, users should be able to configure
their providers appropriately depending on how the link has been put
to them.
- support storing directional links
### Bug Fixes (BREAKING)
- rename actor to component
### Refactor (BREAKING)
- unflatten provider errors & invocation errors
This commit refactors areas of provider code (SDK, in-tree providers)
that previously used `ProviderInvocationError`s which mixed
`InvocationError`s and a string-based catch-all for provider-internal
errors to return types that are true to the WIT contracts.
With this commit, provider developers must code to the interface that
matches the WIT contract (ex. `async fn operation() ->
T`), rather than having values that are wrapped in `ProviderInvocationResult`.
Contracts that were ported/not originally written with failure in mind
(i.e. not using `result<_,_>` in WIT) should be rewritten (in the
future) for operations that may fail, rather than relying on the
previously used `ProviderInvocation(Result|Error)` structures.
- rename lattice prefix to just lattice
- make publish method crate-public
- make content_length a required field