diff --git a/Cargo.lock b/Cargo.lock index 07c1e4317..f63d7e287 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4079,7 +4079,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower-service", "tracing", @@ -4214,7 +4214,7 @@ dependencies = [ "http-body 1.0.1", "hyper 1.5.0", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower-service", "tracing", @@ -5401,7 +5401,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "socket2 0.5.7", + "socket2", "thiserror 2.0.12", "tokio", "tokio-native-tls", @@ -6771,7 +6771,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.18", - "socket2 0.5.7", + "socket2", "thiserror 1.0.69", "tokio", "tracing", @@ -6803,7 +6803,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.7", + "socket2", "tracing", "windows-sys 0.59.0", ] @@ -7005,14 +7005,36 @@ checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" [[package]] name = "redis" -version = "0.32.5" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd3650deebc68526b304898b192fa4102a4ef0b9ada24da096559cb60e0eef8" +checksum = "e0d7a6955c7511f60f3ba9e86c6d02b3c3f144f8c24b288d1f4e18074ab8bbec" +dependencies = [ + "async-trait", + "bytes", + "combine", + "futures-util", + "itoa", + "native-tls", + "percent-encoding", + "pin-project-lite", + "ryu", + "sha1_smol", + "socket2", + "tokio", + "tokio-native-tls", + "tokio-util", + "url", +] + +[[package]] +name = "redis" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc42f3a12fd4408ce64d8efef67048a924e543bd35c6591c0447fda9054695f" dependencies = [ "arc-swap", "backon", "bytes", - "cfg-if", "combine", "futures-channel", "futures-util", @@ -7023,7 +7045,7 @@ dependencies = [ "pin-project-lite", "ryu", "sha1_smol", - "socket2 0.6.0", + "socket2", "tokio", "tokio-native-tls", "tokio-util", @@ -8178,16 +8200,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "socket2" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - [[package]] name = "spdx" version = "0.10.6" @@ -8264,7 +8276,7 @@ dependencies = [ "openssl", "path-absolutize", "pretty_assertions", - "redis", + "redis 0.29.5", "regex", "reqwest 0.12.9", "rpassword", @@ -8444,6 +8456,7 @@ dependencies = [ "anyhow", "async-trait", "futures", + "serde", "spin-locked-app", "thiserror 2.0.12", "tokio", @@ -8505,7 +8518,6 @@ dependencies = [ "reqwest 0.12.9", "rustls 0.23.18", "serde", - "spin-common", "spin-factor-outbound-networking", "spin-factor-variables", "spin-factors", @@ -8616,7 +8628,7 @@ name = "spin-factor-outbound-redis" version = "3.5.0-pre0" dependencies = [ "anyhow", - "redis", + "redis 0.25.4", "spin-core", "spin-factor-outbound-networking", "spin-factor-variables", @@ -8785,7 +8797,7 @@ name = "spin-key-value-redis" version = "3.5.0-pre0" dependencies = [ "anyhow", - "redis", + "redis 0.29.5", "serde", "spin-core", "spin-factor-key-value", @@ -9158,6 +9170,7 @@ dependencies = [ "spin-core", "spin-factor-key-value", "spin-factor-sqlite", + "spin-factor-variables", "spin-factor-wasi", "spin-factors", "spin-factors-executor", @@ -9207,7 +9220,7 @@ version = "3.5.0-pre0" dependencies = [ "anyhow", "futures", - "redis", + "redis 0.29.5", "serde", "spin-factor-variables", "spin-factors", @@ -9860,7 +9873,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2", "tokio-macros", "windows-sys 0.52.0", ] @@ -9906,7 +9919,7 @@ dependencies = [ "postgres-protocol", "postgres-types", "rand 0.8.5", - "socket2 0.5.7", + "socket2", "tokio", "tokio-util", "whoami", @@ -10037,7 +10050,7 @@ dependencies = [ "percent-encoding", "pin-project", "prost 0.13.3", - "socket2 0.5.7", + "socket2", "tokio", "tokio-stream", "tower 0.4.13", diff --git a/Cargo.toml b/Cargo.toml index 0b43d5971..01fddbe86 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -145,7 +145,7 @@ lazy_static = "1.5" path-absolutize = "3" quote = "1" rand = "0.9" -redis = "0.32.5" +redis = "0.29" regex = "1" reqwest = { version = "0.12", features = ["stream", "blocking"] } rusqlite = "0.34" diff --git a/crates/common/src/assert.rs b/crates/common/src/assert.rs deleted file mode 100644 index ad41eed6c..000000000 --- a/crates/common/src/assert.rs +++ /dev/null @@ -1,33 +0,0 @@ -//! Assertion macros. - -/// Asserts that the expression matches the pattern. -/// -/// This is equivalent to `assert!(matches!(...))` except that it produces nicer -/// errors. -#[macro_export] -macro_rules! assert_matches { - ($expr:expr, $pat:pat $(,)?) => {{ - let val = $expr; - assert!( - matches!(val, $pat), - "expected {val:?} to match {}", - stringify!($pat), - ) - }}; -} - -/// Asserts that the expression does not match the pattern. -/// -/// This is equivalent to `assert!(!matches!(...))` except that it produces -/// nicer errors. -#[macro_export] -macro_rules! assert_not_matches { - ($expr:expr, $pat:pat $(,)?) => {{ - let val = $expr; - assert!( - !matches!(val, $pat), - "expected {val:?} to NOT match {}", - stringify!($pat), - ) - }}; -} diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index 778852d37..f747d1544 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -9,7 +9,6 @@ // - Code should have at least 2 dependents pub mod arg_parser; -pub mod assert; pub mod data_dir; pub mod paths; pub mod sha256; diff --git a/crates/expressions/Cargo.toml b/crates/expressions/Cargo.toml index 6c9749fb4..8b6245184 100644 --- a/crates/expressions/Cargo.toml +++ b/crates/expressions/Cargo.toml @@ -8,6 +8,7 @@ edition = { workspace = true } anyhow = { workspace = true } async-trait = { workspace = true } futures = { workspace = true } +serde = { workspace = true } spin-locked-app = { path = "../locked-app" } thiserror = { workspace = true } diff --git a/crates/expressions/src/lib.rs b/crates/expressions/src/lib.rs index 221904437..70181a9d3 100644 --- a/crates/expressions/src/lib.rs +++ b/crates/expressions/src/lib.rs @@ -11,6 +11,8 @@ pub use provider::Provider; use template::Part; pub use template::Template; +use crate::provider::ProviderVariableKind; + /// A [`ProviderResolver`] that can be shared. pub type SharedPreparedResolver = std::sync::Arc>>; @@ -90,6 +92,30 @@ impl ProviderResolver { Ok(PreparedResolver { variables }) } + /// Prepares the resolver by attempting to resolve all variables, printing warnings for any + /// that cannot be resolved. + pub async fn pre_runtime_prepare(&self) -> Result<()> { + for name in self.internal.variables.keys() { + self.check_variable_existence(name).await?; + } + Ok(()) + } + + async fn check_variable_existence(&self, key: &str) -> Result<()> { + for provider in &self.providers { + if provider.kind() == &ProviderVariableKind::Dynamic { + continue; + } + + match provider.get(&Key(key)).await { + Ok(Some(_)) => return Ok(()), + Err(_) | Ok(None) => return self.internal.resolve_variable(key).map(|_| ()), + } + } + + Ok(()) + } + async fn resolve_variable(&self, key: &str) -> Result { for provider in &self.providers { if let Some(value) = provider.get(&Key(key)).await.map_err(Error::Provider)? { @@ -309,6 +335,8 @@ pub enum Error { mod tests { use async_trait::async_trait; + use crate::provider::ProviderVariableKind; + use super::*; #[derive(Debug)] @@ -323,6 +351,10 @@ mod tests { _ => Ok(None), } } + + fn kind(&self) -> &ProviderVariableKind { + &ProviderVariableKind::Static + } } async fn test_resolve(template: &str) -> Result { diff --git a/crates/expressions/src/provider.rs b/crates/expressions/src/provider.rs index f0eec76ab..f4cfeea1f 100644 --- a/crates/expressions/src/provider.rs +++ b/crates/expressions/src/provider.rs @@ -1,6 +1,7 @@ use std::fmt::Debug; use async_trait::async_trait; +use serde::Deserialize; use crate::Key; @@ -9,4 +10,15 @@ use crate::Key; pub trait Provider: Debug + Send + Sync { /// Returns the value at the given config path, if it exists. async fn get(&self, key: &Key) -> anyhow::Result>; + fn kind(&self) -> &ProviderVariableKind; +} + +/// The dynamism of a Provider. +#[derive(Clone, Debug, Default, Deserialize, PartialEq)] +pub enum ProviderVariableKind { + /// Variable must be declared on start + #[default] + Static, + /// Variable can be made available at runtime + Dynamic, } diff --git a/crates/factor-outbound-http/Cargo.toml b/crates/factor-outbound-http/Cargo.toml index 03f513629..2dba3e9f1 100644 --- a/crates/factor-outbound-http/Cargo.toml +++ b/crates/factor-outbound-http/Cargo.toml @@ -27,7 +27,6 @@ wasmtime-wasi = { workspace = true } wasmtime-wasi-http = { workspace = true } [dev-dependencies] -spin-common = { path = "../common" } spin-factor-variables = { path = "../factor-variables" } spin-factors-test = { path = "../factors-test" } diff --git a/crates/factor-outbound-http/tests/factor_test.rs b/crates/factor-outbound-http/tests/factor_test.rs index 95816712d..7074605f4 100644 --- a/crates/factor-outbound-http/tests/factor_test.rs +++ b/crates/factor-outbound-http/tests/factor_test.rs @@ -2,7 +2,6 @@ use std::time::Duration; use anyhow::bail; use http::{Request, Uri}; -use spin_common::{assert_matches, assert_not_matches}; use spin_factor_outbound_http::{OutboundHttpFactor, SelfRequestOrigin}; use spin_factor_outbound_networking::OutboundNetworkingFactor; use spin_factor_variables::VariablesFactor; @@ -32,10 +31,10 @@ async fn allowed_host_is_allowed() -> anyhow::Result<()> { // Different systems handle the discard prefix differently; some will // immediately reject it while others will silently let it time out - assert_matches!( - future_resp.unwrap_ready().unwrap(), - Err(ErrorCode::ConnectionRefused | ErrorCode::ConnectionTimeout), - ); + match future_resp.unwrap_ready().unwrap() { + Err(ErrorCode::ConnectionRefused | ErrorCode::ConnectionTimeout) => (), + other => bail!("expected Err(ConnectionRefused | ConnectionTimeout), got {other:?}"), + }; Ok(()) } @@ -53,10 +52,10 @@ async fn self_request_smoke_test() -> anyhow::Result<()> { // Different systems handle the discard prefix differently; some will // immediately reject it while others will silently let it time out - assert_matches!( - future_resp.unwrap_ready().unwrap(), - Err(ErrorCode::ConnectionRefused | ErrorCode::ConnectionTimeout), - ); + match future_resp.unwrap_ready().unwrap() { + Err(ErrorCode::ConnectionRefused | ErrorCode::ConnectionTimeout) => (), + other => bail!("expected Err(ConnectionRefused | ConnectionTimeout), got {other:?}"), + }; Ok(()) } @@ -68,10 +67,10 @@ async fn disallowed_host_fails() -> anyhow::Result<()> { let req = Request::get("https://denied.test").body(Default::default())?; let mut future_resp = wasi_http.send_request(req, test_request_config())?; future_resp.ready().await; - assert_matches!( - future_resp.unwrap_ready().unwrap(), - Err(ErrorCode::HttpRequestDenied), - ); + match future_resp.unwrap_ready().unwrap() { + Ok(_) => bail!("expected Err, got Ok"), + Err(err) => assert!(matches!(err, ErrorCode::HttpRequestDenied)), + }; Ok(()) } @@ -90,11 +89,11 @@ async fn disallowed_private_ips_fails() -> anyhow::Result<()> { Ok(_) => {} // If private IPs are disallowed, we should get an error saying the destination is prohibited Err(err) if !allow_private_ips => { - assert_matches!(err, ErrorCode::DestinationIpProhibited); + assert!(matches!(err, ErrorCode::DestinationIpProhibited)) } // Otherwise, we should get some non-DestinationIpProhibited error Err(err) => { - assert_not_matches!(err, ErrorCode::DestinationIpProhibited); + assert!(!matches!(err, ErrorCode::DestinationIpProhibited)) } }; Ok(()) diff --git a/crates/factor-outbound-redis/Cargo.toml b/crates/factor-outbound-redis/Cargo.toml index e8970bff0..092363069 100644 --- a/crates/factor-outbound-redis/Cargo.toml +++ b/crates/factor-outbound-redis/Cargo.toml @@ -6,7 +6,7 @@ edition = { workspace = true } [dependencies] anyhow = { workspace = true } -redis = { workspace = true , features = ["tokio-comp", "tokio-native-tls-comp", "aio"] } +redis = { version = "0.25", features = ["tokio-comp", "tokio-native-tls-comp", "aio"] } spin-core = { path = "../core" } spin-factor-outbound-networking = { path = "../factor-outbound-networking" } spin-factors = { path = "../factors" } diff --git a/crates/factor-outbound-redis/src/host.rs b/crates/factor-outbound-redis/src/host.rs index 1e0d01ecd..d938cf9c3 100644 --- a/crates/factor-outbound-redis/src/host.rs +++ b/crates/factor-outbound-redis/src/host.rs @@ -191,7 +191,7 @@ impl v2::HostConnection for crate::InstanceState { } }); - cmd.query_async::(conn) + cmd.query_async::<_, RedisResults>(conn) .await .map(|values| values.0) .map_err(other_error) @@ -296,72 +296,18 @@ struct RedisResults(Vec); impl FromRedisValue for RedisResults { fn from_redis_value(value: &Value) -> redis::RedisResult { - fn append(values: &mut Vec, value: &Value) -> redis::RedisResult<()> { + fn append(values: &mut Vec, value: &Value) { match value { - Value::Nil => { - values.push(RedisResult::Nil); - Ok(()) - } - Value::Int(v) => { - values.push(RedisResult::Int64(*v)); - Ok(()) - } - Value::BulkString(bytes) => { - values.push(RedisResult::Binary(bytes.to_owned())); - Ok(()) - } - Value::SimpleString(s) => { - values.push(RedisResult::Status(s.to_owned())); - Ok(()) - } - Value::Okay => { - values.push(RedisResult::Status("OK".to_string())); - Ok(()) - } - Value::Map(_) => Err(redis::RedisError::from(( - redis::ErrorKind::TypeError, - "Could not convert Redis response", - "Redis Map type is not supported".to_string(), - ))), - Value::Attribute { .. } => Err(redis::RedisError::from(( - redis::ErrorKind::TypeError, - "Could not convert Redis response", - "Redis Attribute type is not supported".to_string(), - ))), - Value::Array(arr) | Value::Set(arr) => { - arr.iter().try_for_each(|value| append(values, value)) - } - Value::Double(v) => { - values.push(RedisResult::Binary(v.to_string().into_bytes())); - Ok(()) - } - Value::VerbatimString { .. } => Err(redis::RedisError::from(( - redis::ErrorKind::TypeError, - "Could not convert Redis response", - "Redis string with format attribute is not supported".to_string(), - ))), - Value::Boolean(v) => { - values.push(RedisResult::Int64(if *v { 1 } else { 0 })); - Ok(()) - } - Value::BigNumber(v) => { - values.push(RedisResult::Binary(v.to_string().as_bytes().to_owned())); - Ok(()) - } - Value::Push { .. } => Err(redis::RedisError::from(( - redis::ErrorKind::TypeError, - "Could not convert Redis response", - "Redis Pub/Sub types are not supported".to_string(), - ))), - Value::ServerError(err) => Err(redis::RedisError::from(( - redis::ErrorKind::ResponseError, - "Server error", - format!("{err:?}"), - ))), + Value::Nil | Value::Okay => (), + Value::Int(v) => values.push(RedisResult::Int64(*v)), + Value::Data(bytes) => values.push(RedisResult::Binary(bytes.to_owned())), + Value::Bulk(bulk) => bulk.iter().for_each(|value| append(values, value)), + Value::Status(message) => values.push(RedisResult::Status(message.to_owned())), } } + let mut values = Vec::new(); - append(&mut values, value)?; + append(&mut values, value); Ok(RedisResults(values)) } } diff --git a/crates/factor-variables/src/lib.rs b/crates/factor-variables/src/lib.rs index fc60dfed2..b75824b9b 100644 --- a/crates/factor-variables/src/lib.rs +++ b/crates/factor-variables/src/lib.rs @@ -85,6 +85,10 @@ impl AppState { let template = Template::new(expr)?; self.expression_resolver.resolve_template(&template).await } + + pub fn expression_resolver(&self) -> &Arc { + &self.expression_resolver + } } pub struct InstanceState { diff --git a/crates/factor-variables/tests/factor_test.rs b/crates/factor-variables/tests/factor_test.rs index 40e8be773..fc4baa2ed 100644 --- a/crates/factor-variables/tests/factor_test.rs +++ b/crates/factor-variables/tests/factor_test.rs @@ -1,4 +1,4 @@ -use spin_expressions::{Key, Provider}; +use spin_expressions::{provider::ProviderVariableKind, Key, Provider}; use spin_factor_variables::{runtime_config::RuntimeConfig, VariablesFactor}; use spin_factors::{anyhow, RuntimeFactors}; use spin_factors_test::{toml, TestEnvironment}; @@ -46,4 +46,8 @@ impl Provider for MockProvider { _ => Ok(None), } } + + fn kind(&self) -> &ProviderVariableKind { + &ProviderVariableKind::Static + } } diff --git a/crates/manifest/src/compat.rs b/crates/manifest/src/compat.rs index eb8852416..4cca17cd3 100644 --- a/crates/manifest/src/compat.rs +++ b/crates/manifest/src/compat.rs @@ -42,6 +42,11 @@ pub fn v1_to_v2_app(manifest: v1::AppManifestV1) -> Result>()?; + let ai_models = component + .ai_models + .into_iter() + .map(id_from_string) + .collect::>()?; let allowed_http = convert_allowed_http_to_allowed_hosts( &component.allowed_http_hosts, component.allowed_outbound_hosts.is_none(), @@ -66,7 +71,7 @@ pub fn v1_to_v2_app(manifest: v1::AppManifestV1) -> Result, + pub ai_models: Vec, /// The component build configuration. /// /// Learn more: https://spinframework.dev/build diff --git a/crates/runtime-config/src/variables.rs b/crates/runtime-config/src/variables.rs index 4bed26706..f5fd88335 100644 --- a/crates/runtime-config/src/variables.rs +++ b/crates/runtime-config/src/variables.rs @@ -1,3 +1,5 @@ +//! The runtime configuration for the variables factor used in the Spin CLI. + use serde::Deserialize; use spin_expressions::Provider; use spin_factor_variables::runtime_config::RuntimeConfig; diff --git a/crates/runtime-factors/src/build.rs b/crates/runtime-factors/src/build.rs index 11eb10849..96459ff74 100644 --- a/crates/runtime-factors/src/build.rs +++ b/crates/runtime-factors/src/build.rs @@ -8,7 +8,7 @@ use spin_runtime_config::ResolvedRuntimeConfig; use spin_trigger::cli::{ FactorsConfig, InitialKvSetterHook, KeyValueDefaultStoreSummaryHook, MaxInstanceMemoryHook, RuntimeFactorsBuilder, SqlStatementExecutorHook, SqliteDefaultStoreSummaryHook, - StdioLoggingExecutorHooks, + StdioLoggingExecutorHooks, VariablesPreparationExecutorHook, }; use spin_variables_static::StaticVariablesProvider; @@ -72,6 +72,7 @@ impl RuntimeFactorsBuilder for FactorsBuilder { executor.add_hooks(InitialKvSetterHook::new(args.key_values.clone())); executor.add_hooks(SqliteDefaultStoreSummaryHook); executor.add_hooks(KeyValueDefaultStoreSummaryHook); + executor.add_hooks(VariablesPreparationExecutorHook); let max_instance_memory = args .max_instance_memory diff --git a/crates/trigger-http/src/wasi.rs b/crates/trigger-http/src/wasi.rs index 0afbbf3fb..2a38d6d66 100644 --- a/crates/trigger-http/src/wasi.rs +++ b/crates/trigger-http/src/wasi.rs @@ -93,6 +93,7 @@ impl HttpExecutor for WasiHttpExecutor<'_> { HandlerType::Wagi(_) => unreachable!("should have used WagiExecutor instead"), }; + let span = tracing::debug_span!("execute_wasi"); let handle = task::spawn( async move { let result = match handler { @@ -100,21 +101,21 @@ impl HttpExecutor for WasiHttpExecutor<'_> { handler .wasi_http_incoming_handler() .call_handle(&mut store, request, response) - .in_current_span() + .instrument(span) .await } Handler::Handler2023_10_18(handler) => { handler .wasi_http0_2_0_rc_2023_10_18_incoming_handler() .call_handle(&mut store, request, response) - .in_current_span() + .instrument(span) .await } Handler::Handler2023_11_10(handler) => { handler .wasi_http0_2_0_rc_2023_11_10_incoming_handler() .call_handle(&mut store, request, response) - .in_current_span() + .instrument(span) .await } }; diff --git a/crates/trigger/Cargo.toml b/crates/trigger/Cargo.toml index 44db6ff91..7cffd25f0 100644 --- a/crates/trigger/Cargo.toml +++ b/crates/trigger/Cargo.toml @@ -28,6 +28,7 @@ spin-compose = { path = "../compose" } spin-core = { path = "../core" } spin-factor-key-value = { path = "../factor-key-value" } spin-factor-sqlite = { path = "../factor-sqlite" } +spin-factor-variables = { path = "../factor-variables" } spin-factor-wasi = { path = "../factor-wasi" } spin-factors = { path = "../factors" } spin-factors-executor = { path = "../factors-executor" } diff --git a/crates/trigger/src/cli.rs b/crates/trigger/src/cli.rs index 2f41ba1b7..9af2b0a44 100644 --- a/crates/trigger/src/cli.rs +++ b/crates/trigger/src/cli.rs @@ -4,6 +4,7 @@ mod max_instance_memory; mod sqlite_statements; mod stdio; mod summary; +mod variable; use std::path::PathBuf; use std::{future::Future, sync::Arc}; @@ -25,6 +26,7 @@ pub use sqlite_statements::SqlStatementExecutorHook; use stdio::FollowComponents; pub use stdio::StdioLoggingExecutorHooks; pub use summary::{KeyValueDefaultStoreSummaryHook, SqliteDefaultStoreSummaryHook}; +pub use variable::VariablesPreparationExecutorHook; pub const APP_LOG_DIR: &str = "APP_LOG_DIR"; pub const SPIN_TRUNCATE_LOGS: &str = "SPIN_TRUNCATE_LOGS"; diff --git a/crates/trigger/src/cli/variable.rs b/crates/trigger/src/cli/variable.rs new file mode 100644 index 000000000..fe61e88c1 --- /dev/null +++ b/crates/trigger/src/cli/variable.rs @@ -0,0 +1,21 @@ +use spin_factor_variables::VariablesFactor; +use spin_factors::RuntimeFactors; +use spin_factors_executor::ExecutorHooks; + +/// An executor hook that prepares the variables factor before runtime execution. +pub struct VariablesPreparationExecutorHook; + +#[spin_core::async_trait] +impl ExecutorHooks for VariablesPreparationExecutorHook { + async fn configure_app( + &self, + configured_app: &spin_factors::ConfiguredApp, + ) -> anyhow::Result<()> { + let variables_factor = configured_app.app_state::()?; + + let expression_resolver = variables_factor.expression_resolver(); + expression_resolver.pre_runtime_prepare().await?; + + Ok(()) + } +} diff --git a/crates/variables-azure/src/lib.rs b/crates/variables-azure/src/lib.rs index 691c980a2..5b2fb211b 100644 --- a/crates/variables-azure/src/lib.rs +++ b/crates/variables-azure/src/lib.rs @@ -4,7 +4,7 @@ use anyhow::Context as _; use azure_core::{auth::TokenCredential, Url}; use azure_security_keyvault::SecretClient; use serde::Deserialize; -use spin_expressions::{Key, Provider}; +use spin_expressions::{provider::ProviderVariableKind, Key, Provider}; use spin_factors::anyhow; use spin_world::async_trait; use tracing::{instrument, Level}; @@ -107,6 +107,7 @@ pub enum AzureKeyVaultAuthOptions { #[derive(Debug)] pub struct AzureKeyVaultProvider { secret_client: SecretClient, + kind: ProviderVariableKind, } impl AzureKeyVaultProvider { @@ -136,6 +137,7 @@ impl AzureKeyVaultProvider { Ok(Self { secret_client: SecretClient::new(&vault_url.into(), token_credential)?, + kind: ProviderVariableKind::Dynamic, }) } } @@ -151,6 +153,10 @@ impl Provider for AzureKeyVaultProvider { .context("Failed to read variable from Azure Key Vault")?; Ok(Some(secret.value)) } + + fn kind(&self) -> &ProviderVariableKind { + &self.kind + } } impl From for Url { diff --git a/crates/variables-env/src/lib.rs b/crates/variables-env/src/lib.rs index 6976b00ca..82cfbbe9c 100644 --- a/crates/variables-env/src/lib.rs +++ b/crates/variables-env/src/lib.rs @@ -6,7 +6,7 @@ use std::{ }; use serde::Deserialize; -use spin_expressions::{Key, Provider}; +use spin_expressions::{provider::ProviderVariableKind, Key, Provider}; use spin_factors::anyhow::{self, Context as _}; use spin_world::async_trait; use tracing::{instrument, Level}; @@ -35,6 +35,7 @@ pub struct EnvVariablesProvider { env_fetcher: EnvFetcherFn, dotenv_path: Option, dotenv_cache: OnceLock>, + kind: ProviderVariableKind, } impl Default for EnvVariablesProvider { @@ -44,6 +45,7 @@ impl Default for EnvVariablesProvider { env_fetcher: Box::new(|s| std::env::var(s)), dotenv_path: Some(".env".into()), dotenv_cache: Default::default(), + kind: Default::default(), } } } @@ -66,6 +68,7 @@ impl EnvVariablesProvider { dotenv_path, env_fetcher: Box::new(env_fetcher), dotenv_cache: Default::default(), + kind: ProviderVariableKind::Static, } } @@ -132,6 +135,10 @@ impl Provider for EnvVariablesProvider { async fn get(&self, key: &Key) -> anyhow::Result> { tokio::task::block_in_place(|| self.get_sync(key)) } + + fn kind(&self) -> &ProviderVariableKind { + &self.kind + } } #[cfg(test)] diff --git a/crates/variables-static/src/lib.rs b/crates/variables-static/src/lib.rs index 4de067fc7..f53696564 100644 --- a/crates/variables-static/src/lib.rs +++ b/crates/variables-static/src/lib.rs @@ -1,7 +1,7 @@ use std::{collections::HashMap, hash::Hash, sync::Arc}; use serde::Deserialize; -use spin_expressions::{async_trait::async_trait, Key, Provider}; +use spin_expressions::{async_trait::async_trait, provider::ProviderVariableKind, Key, Provider}; use spin_factors::anyhow; pub use source::*; @@ -11,6 +11,7 @@ mod source; #[derive(Debug, Deserialize, Clone)] pub struct StaticVariablesProvider { values: Arc>, + kind: ProviderVariableKind, } #[async_trait] @@ -18,6 +19,10 @@ impl Provider for StaticVariablesProvider { async fn get(&self, key: &Key) -> anyhow::Result> { Ok(self.values.get(key.as_str()).cloned()) } + + fn kind(&self) -> &ProviderVariableKind { + &self.kind + } } impl StaticVariablesProvider { @@ -33,6 +38,7 @@ impl StaticVariablesProvider { .collect(); Self { values: Arc::new(values), + kind: ProviderVariableKind::Static, } } } diff --git a/crates/variables-vault/src/lib.rs b/crates/variables-vault/src/lib.rs index 0bd7e8ed6..c8c48e32f 100644 --- a/crates/variables-vault/src/lib.rs +++ b/crates/variables-vault/src/lib.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use spin_expressions::async_trait::async_trait; +use spin_expressions::{async_trait::async_trait, provider::ProviderVariableKind}; use spin_factors::anyhow::{self, Context as _}; use tracing::{instrument, Level}; use vaultrs::{ @@ -23,6 +23,7 @@ pub struct VaultVariablesProvider { /// The optional prefix to use for all keys. #[serde(default)] prefix: Option, + kind: ProviderVariableKind, } #[async_trait] @@ -52,4 +53,8 @@ impl Provider for VaultVariablesProvider { Err(e) => Err(e).context("Failed to check Vault for config"), } } + + fn kind(&self) -> &ProviderVariableKind { + &self.kind + } } diff --git a/docs/content/release-process.md b/docs/content/release-process.md index faf41d9b0..39e5651ba 100644 --- a/docs/content/release-process.md +++ b/docs/content/release-process.md @@ -107,4 +107,3 @@ There are a handful of projects that use Spin and would appreciate notification - [spin-trigger-command](https://github.com/spinframework/spin-trigger-command) - [spin-trigger-sqs](https://github.com/spinframework/spin-trigger-sqs) - [spin-trigger-mqtt](https://github.com/spinframework/spin-trigger-mqtt) - - [spin-trigger-cron](https://github.com/spinframework/spin-trigger-cron) diff --git a/examples/spin-timer/Cargo.lock b/examples/spin-timer/Cargo.lock index fd0ca88a1..a24a8e558 100644 --- a/examples/spin-timer/Cargo.lock +++ b/examples/spin-timer/Cargo.lock @@ -8,16 +8,7 @@ version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ - "gimli 0.31.1", -] - -[[package]] -name = "addr2line" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9acbfca36652500c911ddb767ed433e3ed99b032b5d935be73c6923662db1d43" -dependencies = [ - "gimli 0.32.0", + "gimli", ] [[package]] @@ -26,17 +17,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom 0.2.15", - "once_cell", - "version_check", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -91,12 +71,6 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - [[package]] name = "async-channel" version = "1.9.0" @@ -793,11 +767,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.2", + "addr2line", "cfg-if", "libc", "miniz_oxide", - "object 0.36.7", + "object", "rustc-demangle", "windows-targets 0.52.6", ] @@ -842,18 +816,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -876,29 +838,6 @@ dependencies = [ "piper", ] -[[package]] -name = "borsh" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" -dependencies = [ - "borsh-derive", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "btoi" version = "0.4.3" @@ -917,28 +856,6 @@ dependencies = [ "allocator-api2", ] -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "byteorder" version = "1.5.0" @@ -1199,36 +1116,32 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3870e823d79cafc9c868fbea77e83fc12ec9c0e87f17ad392c71a55ec01f12a9" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a9fe971fab18724cbfc9a0579dd9cb6e370891991ccc8f85f3390d81392a3c0" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac391df81890fc9f820461e76fb344bcebcbf72614ef99bdd03d9fb1a8cdcc5e" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712de3ed567438f3ca42d12547dbf30d92aef37d63ae45eabe32dd53c4ee5d00" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "serde", "serde_derive", @@ -1236,9 +1149,8 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68e6fc48d06ef89c1ad3675fe093f2642d260eea8ceb96a9ee9ae94e51698277" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -1249,7 +1161,7 @@ dependencies = [ "cranelift-control", "cranelift-entity", "cranelift-isle", - "gimli 0.32.0", + "gimli", "hashbrown 0.15.2", "log", "pulley-interpreter", @@ -1263,37 +1175,32 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a45a98cfcd528bd06c6ef2fd1846cda3695d41bd4b2823ce965a82f4abec362f" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", "cranelift-srcgen", - "heck 0.5.0", "pulley-interpreter", ] [[package]] name = "cranelift-codegen-shared" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b12b2fef743dffdb51a5cdb95f5f92ab263ed518a7ec73aa272a4a86ea17bf" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" [[package]] name = "cranelift-control" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc203df5ac23968c8ded672b6c4b6dbc0639521e50b8d27ac67c2e221f3c98b" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d01c5dca220ed9c664a4c0cf2085aa0bebaddc306be365bdd2691d4a55dd2ae" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cranelift-bitset", "serde", @@ -1302,9 +1209,8 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd02bd4641b10658668bf195ef92af0ecffa49a8a563de8e98f0c2d843a229d" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cranelift-codegen", "log", @@ -1314,15 +1220,13 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51da2281ea3db0b1f6029b4321acf541ef856baafdf16e990d64953c9737bc3f" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" [[package]] name = "cranelift-native" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff037ce35e9d513dcf64e9f613ec4816cb7b0b1b0b4e23788745f2200d278fec" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cranelift-codegen", "libc", @@ -1331,9 +1235,8 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.123.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d13dc01a8588b7f7733de0c31b766d85cac04aec078897cde706cebd891f8212" +version = "0.122.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" [[package]] name = "crc32fast" @@ -1455,40 +1358,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "deadpool" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed5957ff93768adf7a65ab167a17835c3d2c3c50d084fe305174c112f468e2f" -dependencies = [ - "deadpool-runtime", - "num_cpus", - "tokio", -] - -[[package]] -name = "deadpool-postgres" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d697d376cbfa018c23eb4caab1fd1883dd9c906a8c034e8d9a3cb06a7e0bef9" -dependencies = [ - "async-trait", - "deadpool", - "getrandom 0.2.15", - "tokio", - "tokio-postgres", - "tracing", -] - -[[package]] -name = "deadpool-runtime" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" -dependencies = [ - "tokio", -] - [[package]] name = "debugid" version = "0.8.0" @@ -1578,7 +1447,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.0", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -1803,12 +1672,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - [[package]] name = "futures" version = "0.3.31" @@ -1948,20 +1811,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "generator" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" -dependencies = [ - "cc", - "cfg-if", - "libc", - "log", - "rustversion", - "windows", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -2015,12 +1864,6 @@ name = "gimli" version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "gimli" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93563d740bc9ef04104f9ed6f86f1e3275c2cdafb95664e26584b9ca807a8ffe" dependencies = [ "fallible-iterator 0.3.0", "indexmap 2.9.0", @@ -2076,9 +1919,6 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash", -] [[package]] name = "hashbrown" @@ -2128,12 +1968,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - [[package]] name = "hex" version = "0.4.3" @@ -2853,19 +2687,6 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -[[package]] -name = "loom" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber", -] - [[package]] name = "lru" version = "0.12.5" @@ -2956,25 +2777,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "moka" -version = "0.12.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" -dependencies = [ - "crossbeam-channel", - "crossbeam-epoch", - "crossbeam-utils", - "loom", - "parking_lot", - "portable-atomic", - "rustc_version", - "smallvec", - "tagptr", - "thiserror 1.0.69", - "uuid", -] - [[package]] name = "mysql_async" version = "0.35.1" @@ -3110,16 +2912,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi 0.5.2", - "libc", -] - [[package]] name = "num_threads" version = "0.1.7" @@ -3153,15 +2945,6 @@ name = "object" version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "crc32fast", "hashbrown 0.15.2", @@ -3501,12 +3284,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "portable-atomic" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" - [[package]] name = "postcard" version = "1.1.1" @@ -3560,19 +3337,6 @@ dependencies = [ "chrono", "fallible-iterator 0.2.0", "postgres-protocol", - "serde", - "serde_json", - "uuid", -] - -[[package]] -name = "postgres_range" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6dce28dc5ba143d8eb157b62aac01ae5a1c585c40792158b720e86a87642101" -dependencies = [ - "postgres-protocol", - "postgres-types", ] [[package]] @@ -3590,15 +3354,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "proc-macro-crate" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" -dependencies = [ - "toml_edit", -] - [[package]] name = "proc-macro-error" version = "1.0.4" @@ -3678,31 +3433,10 @@ dependencies = [ "syn 2.0.100", ] -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "pulley-interpreter" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c53c41637e4052ec0010b923a3ffc99a124f2b6f19062147eae6458904d3e46" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cranelift-bitset", "log", @@ -3712,9 +3446,8 @@ dependencies = [ [[package]] name = "pulley-macros" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aed513b785fd6b142c6708c29990d92475971df8370b018c2c236dfd1c47b77d" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "proc-macro2", "quote", @@ -3790,12 +3523,6 @@ version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - [[package]] name = "rand" version = "0.7.3" @@ -4070,15 +3797,6 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] - [[package]] name = "reqwest" version = "0.12.15" @@ -4146,35 +3864,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rkyv" -version = "0.7.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" -dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "rumqttc" version = "0.24.0" @@ -4208,23 +3897,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "rust_decimal" -version = "1.37.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b203a6425500a03e0919c42d3c47caca51e79f1132046626d2c8871c5092035d" -dependencies = [ - "arrayvec", - "borsh", - "bytes", - "num-traits", - "postgres-types", - "rand 0.8.5", - "rkyv", - "serde", - "serde_json", -] - [[package]] name = "rustc-demangle" version = "0.1.24" @@ -4505,12 +4177,6 @@ dependencies = [ "syn 2.0.100", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -4527,12 +4193,6 @@ dependencies = [ "untrusted", ] -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - [[package]] name = "security-framework" version = "2.11.1" @@ -4702,12 +4362,6 @@ dependencies = [ "libc", ] -[[package]] -name = "simdutf8" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" - [[package]] name = "siphasher" version = "1.0.1" @@ -4762,7 +4416,7 @@ dependencies = [ [[package]] name = "spin-app" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "serde", @@ -4772,7 +4426,7 @@ dependencies = [ [[package]] name = "spin-common" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "dirs", @@ -4784,20 +4438,20 @@ dependencies = [ [[package]] name = "spin-componentize" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "tracing", - "wasm-encoder 0.236.1", - "wasm-metadata 0.236.1", - "wasmparser 0.236.1", + "wasm-encoder 0.235.0", + "wasm-metadata 0.235.0", + "wasmparser 0.235.0", "wit-component", "wit-parser", ] [[package]] name = "spin-compose" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -4814,7 +4468,7 @@ dependencies = [ [[package]] name = "spin-core" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -4824,7 +4478,7 @@ dependencies = [ [[package]] name = "spin-expressions" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -4835,7 +4489,7 @@ dependencies = [ [[package]] name = "spin-factor-key-value" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "serde", @@ -4853,7 +4507,7 @@ dependencies = [ [[package]] name = "spin-factor-llm" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -4871,7 +4525,7 @@ dependencies = [ [[package]] name = "spin-factor-outbound-http" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "bytes", @@ -4881,14 +4535,12 @@ dependencies = [ "hyper-util", "reqwest", "rustls 0.23.25", - "serde", "spin-factor-outbound-networking", "spin-factors", "spin-telemetry", "spin-world", "tokio", "tokio-rustls 0.26.2", - "tower-service", "tracing", "wasmtime", "wasmtime-wasi", @@ -4897,7 +4549,7 @@ dependencies = [ [[package]] name = "spin-factor-outbound-mqtt" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "rumqttc", @@ -4912,7 +4564,7 @@ dependencies = [ [[package]] name = "spin-factor-outbound-mysql" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "mysql_async", @@ -4928,7 +4580,7 @@ dependencies = [ [[package]] name = "spin-factor-outbound-networking" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "futures-util", @@ -4951,18 +4603,12 @@ dependencies = [ [[package]] name = "spin-factor-outbound-pg" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", - "bytes", "chrono", - "deadpool-postgres", - "moka", "native-tls", "postgres-native-tls", - "postgres_range", - "rust_decimal", - "serde_json", "spin-core", "spin-factor-outbound-networking", "spin-factors", @@ -4971,12 +4617,11 @@ dependencies = [ "tokio", "tokio-postgres", "tracing", - "uuid", ] [[package]] name = "spin-factor-outbound-redis" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "redis 0.25.4", @@ -4990,7 +4635,7 @@ dependencies = [ [[package]] name = "spin-factor-sqlite" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "async-trait", "spin-factors", @@ -5003,7 +4648,7 @@ dependencies = [ [[package]] name = "spin-factor-variables" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "spin-expressions", "spin-factors", @@ -5014,7 +4659,7 @@ dependencies = [ [[package]] name = "spin-factor-wasi" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "async-trait", "bytes", @@ -5027,7 +4672,7 @@ dependencies = [ [[package]] name = "spin-factors" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "serde", @@ -5040,7 +4685,7 @@ dependencies = [ [[package]] name = "spin-factors-derive" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -5049,7 +4694,7 @@ dependencies = [ [[package]] name = "spin-factors-executor" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "spin-app", @@ -5059,7 +4704,7 @@ dependencies = [ [[package]] name = "spin-key-value-aws" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-once-cell", @@ -5073,7 +4718,7 @@ dependencies = [ [[package]] name = "spin-key-value-azure" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -5088,7 +4733,7 @@ dependencies = [ [[package]] name = "spin-key-value-redis" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "redis 0.29.5", @@ -5101,7 +4746,7 @@ dependencies = [ [[package]] name = "spin-key-value-spin" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "rusqlite", @@ -5114,7 +4759,7 @@ dependencies = [ [[package]] name = "spin-llm-remote-http" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "reqwest", @@ -5127,7 +4772,7 @@ dependencies = [ [[package]] name = "spin-locked-app" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -5140,7 +4785,7 @@ dependencies = [ [[package]] name = "spin-manifest" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "indexmap 2.9.0", @@ -5157,7 +4802,7 @@ dependencies = [ [[package]] name = "spin-outbound-networking-config" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "futures-util", @@ -5172,16 +4817,14 @@ dependencies = [ [[package]] name = "spin-resource-table" -version = "3.5.0-pre0" +version = "3.4.0-pre0" [[package]] name = "spin-runtime-config" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", - "serde", "spin-common", - "spin-expressions", "spin-factor-key-value", "spin-factor-llm", "spin-factor-outbound-http", @@ -5200,16 +4843,13 @@ dependencies = [ "spin-key-value-spin", "spin-sqlite", "spin-trigger", - "spin-variables-azure", - "spin-variables-env", - "spin-variables-static", - "spin-variables-vault", + "spin-variables", "toml", ] [[package]] name = "spin-runtime-factors" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "clap", @@ -5229,14 +4869,13 @@ dependencies = [ "spin-factors-executor", "spin-runtime-config", "spin-trigger", - "spin-variables-static", "terminal", "tracing", ] [[package]] name = "spin-serde" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "base64 0.22.1", @@ -5248,7 +4887,7 @@ dependencies = [ [[package]] name = "spin-sqlite" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "serde", "spin-factor-sqlite", @@ -5260,7 +4899,7 @@ dependencies = [ [[package]] name = "spin-sqlite-inproc" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -5272,7 +4911,7 @@ dependencies = [ [[package]] name = "spin-sqlite-libsql" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -5284,7 +4923,7 @@ dependencies = [ [[package]] name = "spin-telemetry" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "http 0.2.12", @@ -5301,7 +4940,7 @@ dependencies = [ [[package]] name = "spin-trigger" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "anyhow", "clap", @@ -5325,58 +4964,26 @@ dependencies = [ ] [[package]] -name = "spin-variables-azure" -version = "3.5.0-pre0" +name = "spin-variables" +version = "3.4.0-pre0" dependencies = [ "azure_core 0.20.0", "azure_identity 0.20.0", "azure_security_keyvault", - "serde", - "spin-expressions", - "spin-factors", - "spin-world", - "tracing", -] - -[[package]] -name = "spin-variables-env" -version = "3.5.0-pre0" -dependencies = [ "dotenvy", "serde", "spin-expressions", + "spin-factor-variables", "spin-factors", "spin-world", "tokio", "tracing", -] - -[[package]] -name = "spin-variables-static" -version = "3.5.0-pre0" -dependencies = [ - "serde", - "serde_json", - "spin-common", - "spin-expressions", - "spin-factors", - "toml", -] - -[[package]] -name = "spin-variables-vault" -version = "3.5.0-pre0" -dependencies = [ - "serde", - "spin-expressions", - "spin-factors", - "tracing", "vaultrs", ] [[package]] name = "spin-world" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "async-trait", "wasmtime", @@ -5512,18 +5119,6 @@ dependencies = [ "winx", ] -[[package]] -name = "tagptr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "target-lexicon" version = "0.13.2" @@ -5554,7 +5149,7 @@ dependencies = [ [[package]] name = "terminal" -version = "3.5.0-pre0" +version = "3.4.0-pre0" dependencies = [ "termcolor", ] @@ -5955,17 +5550,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-opentelemetry" version = "0.29.0" @@ -6010,10 +5594,20 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", "tracing-serde", ] +[[package]] +name = "trait-variant" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "trigger-timer" version = "0.1.0" @@ -6195,9 +5789,9 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "wac-graph" -version = "0.8.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d94f428d894714ffba71621dd5fde3b5a52feb6a0ec96aded6207f85057dffc" +checksum = "d94268a683b67ae20210565b5f91e106fe05034c36b931e739fe90377ed80b98" dependencies = [ "anyhow", "id-arena", @@ -6207,23 +5801,23 @@ dependencies = [ "semver", "thiserror 1.0.69", "wac-types", - "wasm-encoder 0.235.0", - "wasm-metadata 0.235.0", - "wasmparser 0.235.0", + "wasm-encoder 0.202.0", + "wasm-metadata 0.202.0", + "wasmparser 0.202.0", ] [[package]] name = "wac-types" -version = "0.8.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6690e903d48e7258ea5e623c3269452c81ce1c9bfa8ffcb9c8909d77861fff6a" +checksum = "f5028a15e266f4c8fed48beb95aebb76af5232dcd554fd849a305a4e5cce1563" dependencies = [ "anyhow", "id-arena", "indexmap 2.9.0", "semver", - "wasm-encoder 0.235.0", - "wasmparser 0.235.0", + "wasm-encoder 0.202.0", + "wasmparser 0.202.0", ] [[package]] @@ -6341,48 +5935,44 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.235.0" +version = "0.202.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3bc393c395cb621367ff02d854179882b9a351b4e0c93d1397e6090b53a5c2a" +checksum = "bfd106365a7f5f7aa3c1916a98cbb3ad477f5ff96ddb130285a91c6e7429e67a" dependencies = [ - "leb128fmt", - "wasmparser 0.235.0", + "leb128", ] [[package]] name = "wasm-encoder" -version = "0.236.1" +version = "0.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "724fccfd4f3c24b7e589d333fc0429c68042897a7e8a5f8694f31792471841e7" +checksum = "b3bc393c395cb621367ff02d854179882b9a351b4e0c93d1397e6090b53a5c2a" dependencies = [ "leb128fmt", - "wasmparser 0.236.1", + "wasmparser 0.235.0", ] [[package]] name = "wasm-metadata" -version = "0.235.0" +version = "0.202.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b055604ba04189d54b8c0ab2c2fc98848f208e103882d5c0b984f045d5ea4d20" +checksum = "094aea3cb90e09f16ee25a4c0e324b3e8c934e7fd838bfa039aef5352f44a917" dependencies = [ "anyhow", - "auditable-serde", - "flate2", "indexmap 2.9.0", "serde", "serde_derive", "serde_json", "spdx", - "url", - "wasm-encoder 0.235.0", - "wasmparser 0.235.0", + "wasm-encoder 0.202.0", + "wasmparser 0.202.0", ] [[package]] name = "wasm-metadata" -version = "0.236.1" +version = "0.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c909f94a49a8de3365f3c0344f064818f1e369ff1740c5b04f455f85d454768e" +checksum = "b055604ba04189d54b8c0ab2c2fc98848f208e103882d5c0b984f045d5ea4d20" dependencies = [ "anyhow", "auditable-serde", @@ -6393,8 +5983,8 @@ dependencies = [ "serde_json", "spdx", "url", - "wasm-encoder 0.236.1", - "wasmparser 0.236.1", + "wasm-encoder 0.235.0", + "wasmparser 0.235.0", ] [[package]] @@ -6429,22 +6019,20 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.235.0" +version = "0.202.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917" +checksum = "d6998515d3cf3f8b980ef7c11b29a9b1017d4cf86b99ae93b546992df9931413" dependencies = [ "bitflags 2.9.0", - "hashbrown 0.15.2", "indexmap 2.9.0", "semver", - "serde", ] [[package]] name = "wasmparser" -version = "0.236.1" +version = "0.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b1e81f3eb254cf7404a82cee6926a4a3ccc5aad80cc3d43608a070c67aa1d7" +checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917" dependencies = [ "bitflags 2.9.0", "hashbrown 0.15.2", @@ -6455,22 +6043,21 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.236.1" +version = "0.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2df225df06a6df15b46e3f73ca066ff92c2e023670969f7d50ce7d5e695abbb1" +checksum = "75aa8e9076de6b9544e6dab4badada518cca0bf4966d35b131bbd057aed8fa0a" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.236.1", + "wasmparser 0.235.0", ] [[package]] name = "wasmtime" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72eb410993c268be048b7745a49649e3390348b0fe9ee050253a74a79192574f" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ - "addr2line 0.25.0", + "addr2line", "anyhow", "async-trait", "bitflags 2.9.0", @@ -6479,7 +6066,7 @@ dependencies = [ "cfg-if", "encoding_rs", "fxprof-processed-profile", - "gimli 0.32.0", + "gimli", "hashbrown 0.15.2", "indexmap 2.9.0", "ittapi", @@ -6487,7 +6074,7 @@ dependencies = [ "log", "mach2", "memfd", - "object 0.37.3", + "object", "once_cell", "postcard", "pulley-interpreter", @@ -6499,8 +6086,9 @@ dependencies = [ "serde_json", "smallvec", "target-lexicon", - "wasm-encoder 0.236.1", - "wasmparser 0.236.1", + "trait-variant", + "wasm-encoder 0.235.0", + "wasmparser 0.235.0", "wasmtime-environ", "wasmtime-internal-asm-macros", "wasmtime-internal-cache", @@ -6516,23 +6104,22 @@ dependencies = [ "wasmtime-internal-versioned-export-macros", "wasmtime-internal-winch", "wat", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-environ" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d3047dfcd4c0eeb2dbd9d639dd4eef65cbe53f17211c549543f208466246ed" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "cpp_demangle", "cranelift-bitset", "cranelift-entity", - "gimli 0.32.0", + "gimli", "indexmap 2.9.0", "log", - "object 0.37.3", + "object", "postcard", "rustc-demangle", "semver", @@ -6540,26 +6127,24 @@ dependencies = [ "serde_derive", "smallvec", "target-lexicon", - "wasm-encoder 0.236.1", - "wasmparser 0.236.1", + "wasm-encoder 0.235.0", + "wasmparser 0.235.0", "wasmprinter", "wasmtime-internal-component-util", ] [[package]] name = "wasmtime-internal-asm-macros" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c3ac22f7209c35a913b4423a9f83fc12b74239af3cb5ac6c39a5df34e1970b" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-internal-cache" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbd49572a149c84a28079a0fb06f2c67c6290e75405f71855e943e4bb4703ae0" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "base64 0.22.1", @@ -6571,15 +6156,14 @@ dependencies = [ "serde_derive", "sha2", "toml", - "windows-sys 0.60.2", + "windows-sys 0.59.0", "zstd", ] [[package]] name = "wasmtime-internal-component-macro" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0badcd2acaa2901910a2ec0815abd24b80ffeecb5683029082e26220be2b44c5" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "proc-macro2", @@ -6592,15 +6176,13 @@ dependencies = [ [[package]] name = "wasmtime-internal-component-util" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399a9f4d25c0dcf4829751cbb63de438f3b715abc49277c15c86460539f4a7e7" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" [[package]] name = "wasmtime-internal-cranelift" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41370ede67231853b2f96a7f03b8e3db61802ad3ee0d7497b366f815e616f4fc" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "cfg-if", @@ -6609,15 +6191,15 @@ dependencies = [ "cranelift-entity", "cranelift-frontend", "cranelift-native", - "gimli 0.32.0", + "gimli", "itertools 0.14.0", "log", - "object 0.37.3", + "object", "pulley-interpreter", "smallvec", "target-lexicon", "thiserror 2.0.12", - "wasmparser 0.236.1", + "wasmparser 0.235.0", "wasmtime-environ", "wasmtime-internal-math", "wasmtime-internal-versioned-export-macros", @@ -6625,9 +6207,8 @@ dependencies = [ [[package]] name = "wasmtime-internal-fiber" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6baf30fe62eb18fdc83395011ebd32dd74af3e86cecffb74dec05d8af2243515" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "cc", @@ -6636,66 +6217,60 @@ dependencies = [ "rustix 1.0.5", "wasmtime-internal-asm-macros", "wasmtime-internal-versioned-export-macros", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-internal-jit-debug" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416e2d2193073fe65355315bd144a9a26cbdf1f0c27faa7fdd3266a09b2689d3" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "cc", - "object 0.37.3", + "object", "rustix 1.0.5", "wasmtime-internal-versioned-export-macros", ] [[package]] name = "wasmtime-internal-jit-icache-coherence" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b787315e8acb988ce5da8439ce827f84a01b912d3b157aafe0ddd8779fef219e" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "cfg-if", "libc", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-internal-math" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d8b81a4083aa76d3cd3ebf24f0564b6d17d4faffd47c42dd218798aa5894d4" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "libm", ] [[package]] name = "wasmtime-internal-slab" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e701cdea321a3c288990dcc1ed7b4c89d120e10bf50052e942243251e710c42" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" [[package]] name = "wasmtime-internal-unwinder" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60ddcc1b024ae8e16f043b0dbea676048f3b710efbaa63f2647bc287315b8704" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "cfg-if", "cranelift-codegen", "log", - "object 0.37.3", + "object", ] [[package]] name = "wasmtime-internal-versioned-export-macros" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4bd56c30d60d617935d1a68272223341b67c27fb3776fee025e481f3ac53cd0" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "proc-macro2", "quote", @@ -6704,16 +6279,15 @@ dependencies = [ [[package]] name = "wasmtime-internal-winch" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9a56b31bc1c5b6a62cb400e996947944a3a0545dc8e11790964074269876137" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "cranelift-codegen", - "gimli 0.32.0", - "object 0.37.3", + "gimli", + "object", "target-lexicon", - "wasmparser 0.236.1", + "wasmparser 0.235.0", "wasmtime-environ", "wasmtime-internal-cranelift", "winch-codegen", @@ -6721,12 +6295,10 @@ dependencies = [ [[package]] name = "wasmtime-internal-wit-bindgen" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9816c753aaa5591c45f3ccfb9f2ecf9ea9bbffabc1ad628818803bd12e34ba" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", - "bitflags 2.9.0", "heck 0.5.0", "indexmap 2.9.0", "wit-parser", @@ -6734,9 +6306,8 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43f4163d631ecb72245b34aae03f5a0b07e58c2004692b4258caf8bf7aacca5" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "async-trait", @@ -6760,14 +6331,13 @@ dependencies = [ "wasmtime", "wasmtime-wasi-io", "wiggle", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-wasi-http" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9730c0a3f24c25a8fa40fecbd4a1a3e77dff5bb730d98e16861c9dfcc2ca33" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "async-trait", @@ -6789,9 +6359,8 @@ dependencies = [ [[package]] name = "wasmtime-wasi-io" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a1700b7b7a2b9b704ed9501745798e3791f575ee6973d7d821e2386a94adbf" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "async-trait", @@ -6811,24 +6380,24 @@ dependencies = [ [[package]] name = "wast" -version = "236.0.1" +version = "235.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3bec4b4db9c6808d394632fd4b0cd4654c32c540bd3237f55ee6a40fff6e51f" +checksum = "1eda4293f626c99021bb3a6fbe4fbbe90c0e31a5ace89b5f620af8925de72e13" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width", - "wasm-encoder 0.236.1", + "wasm-encoder 0.235.0", ] [[package]] name = "wat" -version = "1.236.1" +version = "1.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64475e2f77d6071ce90624098fc236285ddafa8c3ea1fb386f2c4154b6c2bbdb" +checksum = "e777e0327115793cb96ab220b98f85327ec3d11f34ec9e8d723264522ef206aa" dependencies = [ - "wast 236.0.1", + "wast 235.0.0", ] [[package]] @@ -6873,9 +6442,8 @@ dependencies = [ [[package]] name = "wiggle" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0047009d1851c65dfeb197ff53a1d1bf94358d56604ac5e9419397ba381bfa17" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "async-trait", @@ -6888,9 +6456,8 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af67f0f2a0e2e7841e9a561aff21cec8f6125b5b8d2c43adecc974e36e9cbbd9" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "heck 0.5.0", @@ -6902,9 +6469,8 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f1ed189ba5962988a017f86bc73b03cc69e1b8d3040922beab307855ce594d" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "proc-macro2", "quote", @@ -6945,46 +6511,23 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "36.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ac81262abfb835f3f46f64715863fa2737c2928fab58db74ec98710e3e261a" +version = "35.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" dependencies = [ "anyhow", "cranelift-assembler-x64", "cranelift-codegen", - "gimli 0.32.0", + "gimli", "regalloc2", "smallvec", "target-lexicon", "thiserror 2.0.12", - "wasmparser 0.236.1", + "wasmparser 0.235.0", "wasmtime-environ", "wasmtime-internal-cranelift", "wasmtime-internal-math", ] -[[package]] -name = "windows" -version = "0.61.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" -dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-link", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core", -] - [[package]] name = "windows-core" version = "0.61.0" @@ -6998,16 +6541,6 @@ dependencies = [ "windows-strings 0.4.0", ] -[[package]] -name = "windows-future" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" -dependencies = [ - "windows-core", - "windows-link", -] - [[package]] name = "windows-implement" version = "0.60.0" @@ -7032,19 +6565,9 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - -[[package]] -name = "windows-numerics" -version = "0.2.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core", - "windows-link", -] +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" [[package]] name = "windows-registry" @@ -7054,7 +6577,7 @@ checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ "windows-result", "windows-strings 0.3.1", - "windows-targets 0.53.3", + "windows-targets 0.53.0", ] [[package]] @@ -7102,15 +6625,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.3", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -7129,11 +6643,10 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" dependencies = [ - "windows-link", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -7270,9 +6783,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.236.1" +version = "0.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3622959ed7ed6341c38e5aa35af243632534b0a36226852faa802939ce11e00f" +checksum = "64a57a11109cc553396f89f3a38a158a97d0b1adaec113bd73e0f64d30fb601f" dependencies = [ "anyhow", "bitflags 2.9.0", @@ -7281,17 +6794,17 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.236.1", - "wasm-metadata 0.236.1", - "wasmparser 0.236.1", + "wasm-encoder 0.235.0", + "wasm-metadata 0.235.0", + "wasmparser 0.235.0", "wit-parser", ] [[package]] name = "wit-parser" -version = "0.236.1" +version = "0.235.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e4833a20cd6e85d6abfea0e63a399472d6f88c6262957c17f546879a80ba15" +checksum = "0a1f95a87d03a33e259af286b857a95911eb46236a0f726cbaec1227b3dfc67a" dependencies = [ "anyhow", "id-arena", @@ -7302,7 +6815,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.236.1", + "wasmparser 0.235.0", ] [[package]] @@ -7329,15 +6842,6 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - [[package]] name = "xmlparser" version = "0.13.6" diff --git a/my_changes.patch b/my_changes.patch new file mode 100644 index 000000000..5cf32fd21 --- /dev/null +++ b/my_changes.patch @@ -0,0 +1,2919 @@ +diff --git a/Cargo.lock b/Cargo.lock +index 07c1e431..f63d7e28 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -4079,7 +4079,7 @@ dependencies = [ + "httpdate", + "itoa", + "pin-project-lite", +- "socket2 0.5.7", ++ "socket2", + "tokio", + "tower-service", + "tracing", +@@ -4214,7 +4214,7 @@ dependencies = [ + "http-body 1.0.1", + "hyper 1.5.0", + "pin-project-lite", +- "socket2 0.5.7", ++ "socket2", + "tokio", + "tower-service", + "tracing", +@@ -5401,7 +5401,7 @@ dependencies = [ + "rand 0.8.5", + "serde", + "serde_json", +- "socket2 0.5.7", ++ "socket2", + "thiserror 2.0.12", + "tokio", + "tokio-native-tls", +@@ -6771,7 +6771,7 @@ dependencies = [ + "quinn-udp", + "rustc-hash", + "rustls 0.23.18", +- "socket2 0.5.7", ++ "socket2", + "thiserror 1.0.69", + "tokio", + "tracing", +@@ -6803,7 +6803,7 @@ dependencies = [ + "cfg_aliases", + "libc", + "once_cell", +- "socket2 0.5.7", ++ "socket2", + "tracing", + "windows-sys 0.59.0", + ] +@@ -7005,14 +7005,36 @@ checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" + + [[package]] + name = "redis" +-version = "0.32.5" ++version = "0.25.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7cd3650deebc68526b304898b192fa4102a4ef0b9ada24da096559cb60e0eef8" ++checksum = "e0d7a6955c7511f60f3ba9e86c6d02b3c3f144f8c24b288d1f4e18074ab8bbec" ++dependencies = [ ++ "async-trait", ++ "bytes", ++ "combine", ++ "futures-util", ++ "itoa", ++ "native-tls", ++ "percent-encoding", ++ "pin-project-lite", ++ "ryu", ++ "sha1_smol", ++ "socket2", ++ "tokio", ++ "tokio-native-tls", ++ "tokio-util", ++ "url", ++] ++ ++[[package]] ++name = "redis" ++version = "0.29.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1bc42f3a12fd4408ce64d8efef67048a924e543bd35c6591c0447fda9054695f" + dependencies = [ + "arc-swap", + "backon", + "bytes", +- "cfg-if", + "combine", + "futures-channel", + "futures-util", +@@ -7023,7 +7045,7 @@ dependencies = [ + "pin-project-lite", + "ryu", + "sha1_smol", +- "socket2 0.6.0", ++ "socket2", + "tokio", + "tokio-native-tls", + "tokio-util", +@@ -8178,16 +8200,6 @@ dependencies = [ + "windows-sys 0.52.0", + ] + +-[[package]] +-name = "socket2" +-version = "0.6.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +-dependencies = [ +- "libc", +- "windows-sys 0.59.0", +-] +- + [[package]] + name = "spdx" + version = "0.10.6" +@@ -8264,7 +8276,7 @@ dependencies = [ + "openssl", + "path-absolutize", + "pretty_assertions", +- "redis", ++ "redis 0.29.5", + "regex", + "reqwest 0.12.9", + "rpassword", +@@ -8444,6 +8456,7 @@ dependencies = [ + "anyhow", + "async-trait", + "futures", ++ "serde", + "spin-locked-app", + "thiserror 2.0.12", + "tokio", +@@ -8505,7 +8518,6 @@ dependencies = [ + "reqwest 0.12.9", + "rustls 0.23.18", + "serde", +- "spin-common", + "spin-factor-outbound-networking", + "spin-factor-variables", + "spin-factors", +@@ -8616,7 +8628,7 @@ name = "spin-factor-outbound-redis" + version = "3.5.0-pre0" + dependencies = [ + "anyhow", +- "redis", ++ "redis 0.25.4", + "spin-core", + "spin-factor-outbound-networking", + "spin-factor-variables", +@@ -8785,7 +8797,7 @@ name = "spin-key-value-redis" + version = "3.5.0-pre0" + dependencies = [ + "anyhow", +- "redis", ++ "redis 0.29.5", + "serde", + "spin-core", + "spin-factor-key-value", +@@ -9158,6 +9170,7 @@ dependencies = [ + "spin-core", + "spin-factor-key-value", + "spin-factor-sqlite", ++ "spin-factor-variables", + "spin-factor-wasi", + "spin-factors", + "spin-factors-executor", +@@ -9207,7 +9220,7 @@ version = "3.5.0-pre0" + dependencies = [ + "anyhow", + "futures", +- "redis", ++ "redis 0.29.5", + "serde", + "spin-factor-variables", + "spin-factors", +@@ -9860,7 +9873,7 @@ dependencies = [ + "parking_lot", + "pin-project-lite", + "signal-hook-registry", +- "socket2 0.5.7", ++ "socket2", + "tokio-macros", + "windows-sys 0.52.0", + ] +@@ -9906,7 +9919,7 @@ dependencies = [ + "postgres-protocol", + "postgres-types", + "rand 0.8.5", +- "socket2 0.5.7", ++ "socket2", + "tokio", + "tokio-util", + "whoami", +@@ -10037,7 +10050,7 @@ dependencies = [ + "percent-encoding", + "pin-project", + "prost 0.13.3", +- "socket2 0.5.7", ++ "socket2", + "tokio", + "tokio-stream", + "tower 0.4.13", +diff --git a/Cargo.toml b/Cargo.toml +index 0b43d597..01fddbe8 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -145,7 +145,7 @@ lazy_static = "1.5" + path-absolutize = "3" + quote = "1" + rand = "0.9" +-redis = "0.32.5" ++redis = "0.29" + regex = "1" + reqwest = { version = "0.12", features = ["stream", "blocking"] } + rusqlite = "0.34" +diff --git a/crates/common/src/assert.rs b/crates/common/src/assert.rs +deleted file mode 100644 +index ad41eed6..00000000 +--- a/crates/common/src/assert.rs ++++ /dev/null +@@ -1,33 +0,0 @@ +-//! Assertion macros. +- +-/// Asserts that the expression matches the pattern. +-/// +-/// This is equivalent to `assert!(matches!(...))` except that it produces nicer +-/// errors. +-#[macro_export] +-macro_rules! assert_matches { +- ($expr:expr, $pat:pat $(,)?) => {{ +- let val = $expr; +- assert!( +- matches!(val, $pat), +- "expected {val:?} to match {}", +- stringify!($pat), +- ) +- }}; +-} +- +-/// Asserts that the expression does not match the pattern. +-/// +-/// This is equivalent to `assert!(!matches!(...))` except that it produces +-/// nicer errors. +-#[macro_export] +-macro_rules! assert_not_matches { +- ($expr:expr, $pat:pat $(,)?) => {{ +- let val = $expr; +- assert!( +- !matches!(val, $pat), +- "expected {val:?} to NOT match {}", +- stringify!($pat), +- ) +- }}; +-} +diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs +index 778852d3..f747d154 100644 +--- a/crates/common/src/lib.rs ++++ b/crates/common/src/lib.rs +@@ -9,7 +9,6 @@ + // - Code should have at least 2 dependents + + pub mod arg_parser; +-pub mod assert; + pub mod data_dir; + pub mod paths; + pub mod sha256; +diff --git a/crates/expressions/Cargo.toml b/crates/expressions/Cargo.toml +index 6c9749fb..8b624518 100644 +--- a/crates/expressions/Cargo.toml ++++ b/crates/expressions/Cargo.toml +@@ -8,6 +8,7 @@ edition = { workspace = true } + anyhow = { workspace = true } + async-trait = { workspace = true } + futures = { workspace = true } ++serde = { workspace = true } + spin-locked-app = { path = "../locked-app" } + thiserror = { workspace = true } + +diff --git a/crates/expressions/src/lib.rs b/crates/expressions/src/lib.rs +index 22190443..70181a9d 100644 +--- a/crates/expressions/src/lib.rs ++++ b/crates/expressions/src/lib.rs +@@ -11,6 +11,8 @@ pub use provider::Provider; + use template::Part; + pub use template::Template; + ++use crate::provider::ProviderVariableKind; ++ + /// A [`ProviderResolver`] that can be shared. + pub type SharedPreparedResolver = + std::sync::Arc>>; +@@ -90,6 +92,30 @@ impl ProviderResolver { + Ok(PreparedResolver { variables }) + } + ++ /// Prepares the resolver by attempting to resolve all variables, printing warnings for any ++ /// that cannot be resolved. ++ pub async fn pre_runtime_prepare(&self) -> Result<()> { ++ for name in self.internal.variables.keys() { ++ self.check_variable_existence(name).await?; ++ } ++ Ok(()) ++ } ++ ++ async fn check_variable_existence(&self, key: &str) -> Result<()> { ++ for provider in &self.providers { ++ if provider.kind() == &ProviderVariableKind::Dynamic { ++ continue; ++ } ++ ++ match provider.get(&Key(key)).await { ++ Ok(Some(_)) => return Ok(()), ++ Err(_) | Ok(None) => return self.internal.resolve_variable(key).map(|_| ()), ++ } ++ } ++ ++ Ok(()) ++ } ++ + async fn resolve_variable(&self, key: &str) -> Result { + for provider in &self.providers { + if let Some(value) = provider.get(&Key(key)).await.map_err(Error::Provider)? { +@@ -309,6 +335,8 @@ pub enum Error { + mod tests { + use async_trait::async_trait; + ++ use crate::provider::ProviderVariableKind; ++ + use super::*; + + #[derive(Debug)] +@@ -323,6 +351,10 @@ mod tests { + _ => Ok(None), + } + } ++ ++ fn kind(&self) -> &ProviderVariableKind { ++ &ProviderVariableKind::Static ++ } + } + + async fn test_resolve(template: &str) -> Result { +diff --git a/crates/expressions/src/provider.rs b/crates/expressions/src/provider.rs +index f0eec76a..f4cfeea1 100644 +--- a/crates/expressions/src/provider.rs ++++ b/crates/expressions/src/provider.rs +@@ -1,6 +1,7 @@ + use std::fmt::Debug; + + use async_trait::async_trait; ++use serde::Deserialize; + + use crate::Key; + +@@ -9,4 +10,15 @@ use crate::Key; + pub trait Provider: Debug + Send + Sync { + /// Returns the value at the given config path, if it exists. + async fn get(&self, key: &Key) -> anyhow::Result>; ++ fn kind(&self) -> &ProviderVariableKind; ++} ++ ++/// The dynamism of a Provider. ++#[derive(Clone, Debug, Default, Deserialize, PartialEq)] ++pub enum ProviderVariableKind { ++ /// Variable must be declared on start ++ #[default] ++ Static, ++ /// Variable can be made available at runtime ++ Dynamic, + } +diff --git a/crates/factor-outbound-http/Cargo.toml b/crates/factor-outbound-http/Cargo.toml +index 03f51362..2dba3e9f 100644 +--- a/crates/factor-outbound-http/Cargo.toml ++++ b/crates/factor-outbound-http/Cargo.toml +@@ -27,7 +27,6 @@ wasmtime-wasi = { workspace = true } + wasmtime-wasi-http = { workspace = true } + + [dev-dependencies] +-spin-common = { path = "../common" } + spin-factor-variables = { path = "../factor-variables" } + spin-factors-test = { path = "../factors-test" } + +diff --git a/crates/factor-outbound-http/tests/factor_test.rs b/crates/factor-outbound-http/tests/factor_test.rs +index 95816712..7074605f 100644 +--- a/crates/factor-outbound-http/tests/factor_test.rs ++++ b/crates/factor-outbound-http/tests/factor_test.rs +@@ -2,7 +2,6 @@ use std::time::Duration; + + use anyhow::bail; + use http::{Request, Uri}; +-use spin_common::{assert_matches, assert_not_matches}; + use spin_factor_outbound_http::{OutboundHttpFactor, SelfRequestOrigin}; + use spin_factor_outbound_networking::OutboundNetworkingFactor; + use spin_factor_variables::VariablesFactor; +@@ -32,10 +31,10 @@ async fn allowed_host_is_allowed() -> anyhow::Result<()> { + + // Different systems handle the discard prefix differently; some will + // immediately reject it while others will silently let it time out +- assert_matches!( +- future_resp.unwrap_ready().unwrap(), +- Err(ErrorCode::ConnectionRefused | ErrorCode::ConnectionTimeout), +- ); ++ match future_resp.unwrap_ready().unwrap() { ++ Err(ErrorCode::ConnectionRefused | ErrorCode::ConnectionTimeout) => (), ++ other => bail!("expected Err(ConnectionRefused | ConnectionTimeout), got {other:?}"), ++ }; + Ok(()) + } + +@@ -53,10 +52,10 @@ async fn self_request_smoke_test() -> anyhow::Result<()> { + + // Different systems handle the discard prefix differently; some will + // immediately reject it while others will silently let it time out +- assert_matches!( +- future_resp.unwrap_ready().unwrap(), +- Err(ErrorCode::ConnectionRefused | ErrorCode::ConnectionTimeout), +- ); ++ match future_resp.unwrap_ready().unwrap() { ++ Err(ErrorCode::ConnectionRefused | ErrorCode::ConnectionTimeout) => (), ++ other => bail!("expected Err(ConnectionRefused | ConnectionTimeout), got {other:?}"), ++ }; + Ok(()) + } + +@@ -68,10 +67,10 @@ async fn disallowed_host_fails() -> anyhow::Result<()> { + let req = Request::get("https://denied.test").body(Default::default())?; + let mut future_resp = wasi_http.send_request(req, test_request_config())?; + future_resp.ready().await; +- assert_matches!( +- future_resp.unwrap_ready().unwrap(), +- Err(ErrorCode::HttpRequestDenied), +- ); ++ match future_resp.unwrap_ready().unwrap() { ++ Ok(_) => bail!("expected Err, got Ok"), ++ Err(err) => assert!(matches!(err, ErrorCode::HttpRequestDenied)), ++ }; + Ok(()) + } + +@@ -90,11 +89,11 @@ async fn disallowed_private_ips_fails() -> anyhow::Result<()> { + Ok(_) => {} + // If private IPs are disallowed, we should get an error saying the destination is prohibited + Err(err) if !allow_private_ips => { +- assert_matches!(err, ErrorCode::DestinationIpProhibited); ++ assert!(matches!(err, ErrorCode::DestinationIpProhibited)) + } + // Otherwise, we should get some non-DestinationIpProhibited error + Err(err) => { +- assert_not_matches!(err, ErrorCode::DestinationIpProhibited); ++ assert!(!matches!(err, ErrorCode::DestinationIpProhibited)) + } + }; + Ok(()) +diff --git a/crates/factor-outbound-redis/Cargo.toml b/crates/factor-outbound-redis/Cargo.toml +index e8970bff..09236306 100644 +--- a/crates/factor-outbound-redis/Cargo.toml ++++ b/crates/factor-outbound-redis/Cargo.toml +@@ -6,7 +6,7 @@ edition = { workspace = true } + + [dependencies] + anyhow = { workspace = true } +-redis = { workspace = true , features = ["tokio-comp", "tokio-native-tls-comp", "aio"] } ++redis = { version = "0.25", features = ["tokio-comp", "tokio-native-tls-comp", "aio"] } + spin-core = { path = "../core" } + spin-factor-outbound-networking = { path = "../factor-outbound-networking" } + spin-factors = { path = "../factors" } +diff --git a/crates/factor-outbound-redis/src/host.rs b/crates/factor-outbound-redis/src/host.rs +index 1e0d01ec..d938cf9c 100644 +--- a/crates/factor-outbound-redis/src/host.rs ++++ b/crates/factor-outbound-redis/src/host.rs +@@ -191,7 +191,7 @@ impl v2::HostConnection for crate::InstanceState { + } + }); + +- cmd.query_async::(conn) ++ cmd.query_async::<_, RedisResults>(conn) + .await + .map(|values| values.0) + .map_err(other_error) +@@ -296,72 +296,18 @@ struct RedisResults(Vec); + + impl FromRedisValue for RedisResults { + fn from_redis_value(value: &Value) -> redis::RedisResult { +- fn append(values: &mut Vec, value: &Value) -> redis::RedisResult<()> { ++ fn append(values: &mut Vec, value: &Value) { + match value { +- Value::Nil => { +- values.push(RedisResult::Nil); +- Ok(()) +- } +- Value::Int(v) => { +- values.push(RedisResult::Int64(*v)); +- Ok(()) +- } +- Value::BulkString(bytes) => { +- values.push(RedisResult::Binary(bytes.to_owned())); +- Ok(()) +- } +- Value::SimpleString(s) => { +- values.push(RedisResult::Status(s.to_owned())); +- Ok(()) +- } +- Value::Okay => { +- values.push(RedisResult::Status("OK".to_string())); +- Ok(()) +- } +- Value::Map(_) => Err(redis::RedisError::from(( +- redis::ErrorKind::TypeError, +- "Could not convert Redis response", +- "Redis Map type is not supported".to_string(), +- ))), +- Value::Attribute { .. } => Err(redis::RedisError::from(( +- redis::ErrorKind::TypeError, +- "Could not convert Redis response", +- "Redis Attribute type is not supported".to_string(), +- ))), +- Value::Array(arr) | Value::Set(arr) => { +- arr.iter().try_for_each(|value| append(values, value)) +- } +- Value::Double(v) => { +- values.push(RedisResult::Binary(v.to_string().into_bytes())); +- Ok(()) +- } +- Value::VerbatimString { .. } => Err(redis::RedisError::from(( +- redis::ErrorKind::TypeError, +- "Could not convert Redis response", +- "Redis string with format attribute is not supported".to_string(), +- ))), +- Value::Boolean(v) => { +- values.push(RedisResult::Int64(if *v { 1 } else { 0 })); +- Ok(()) +- } +- Value::BigNumber(v) => { +- values.push(RedisResult::Binary(v.to_string().as_bytes().to_owned())); +- Ok(()) +- } +- Value::Push { .. } => Err(redis::RedisError::from(( +- redis::ErrorKind::TypeError, +- "Could not convert Redis response", +- "Redis Pub/Sub types are not supported".to_string(), +- ))), +- Value::ServerError(err) => Err(redis::RedisError::from(( +- redis::ErrorKind::ResponseError, +- "Server error", +- format!("{err:?}"), +- ))), ++ Value::Nil | Value::Okay => (), ++ Value::Int(v) => values.push(RedisResult::Int64(*v)), ++ Value::Data(bytes) => values.push(RedisResult::Binary(bytes.to_owned())), ++ Value::Bulk(bulk) => bulk.iter().for_each(|value| append(values, value)), ++ Value::Status(message) => values.push(RedisResult::Status(message.to_owned())), + } + } ++ + let mut values = Vec::new(); +- append(&mut values, value)?; ++ append(&mut values, value); + Ok(RedisResults(values)) + } + } +diff --git a/crates/factor-variables/src/lib.rs b/crates/factor-variables/src/lib.rs +index fc60dfed..b75824b9 100644 +--- a/crates/factor-variables/src/lib.rs ++++ b/crates/factor-variables/src/lib.rs +@@ -85,6 +85,10 @@ impl AppState { + let template = Template::new(expr)?; + self.expression_resolver.resolve_template(&template).await + } ++ ++ pub fn expression_resolver(&self) -> &Arc { ++ &self.expression_resolver ++ } + } + + pub struct InstanceState { +diff --git a/crates/factor-variables/tests/factor_test.rs b/crates/factor-variables/tests/factor_test.rs +index 40e8be77..fc4baa2e 100644 +--- a/crates/factor-variables/tests/factor_test.rs ++++ b/crates/factor-variables/tests/factor_test.rs +@@ -1,4 +1,4 @@ +-use spin_expressions::{Key, Provider}; ++use spin_expressions::{provider::ProviderVariableKind, Key, Provider}; + use spin_factor_variables::{runtime_config::RuntimeConfig, VariablesFactor}; + use spin_factors::{anyhow, RuntimeFactors}; + use spin_factors_test::{toml, TestEnvironment}; +@@ -46,4 +46,8 @@ impl Provider for MockProvider { + _ => Ok(None), + } + } ++ ++ fn kind(&self) -> &ProviderVariableKind { ++ &ProviderVariableKind::Static ++ } + } +diff --git a/crates/manifest/src/compat.rs b/crates/manifest/src/compat.rs +index eb885241..4cca17cd 100644 +--- a/crates/manifest/src/compat.rs ++++ b/crates/manifest/src/compat.rs +@@ -42,6 +42,11 @@ pub fn v1_to_v2_app(manifest: v1::AppManifestV1) -> Result>()?; + ++ let ai_models = component ++ .ai_models ++ .into_iter() ++ .map(id_from_string) ++ .collect::>()?; + let allowed_http = convert_allowed_http_to_allowed_hosts( + &component.allowed_http_hosts, + component.allowed_outbound_hosts.is_none(), +@@ -66,7 +71,7 @@ pub fn v1_to_v2_app(manifest: v1::AppManifestV1) -> Result, ++ pub ai_models: Vec, + /// The component build configuration. + /// + /// Learn more: https://spinframework.dev/build +diff --git a/crates/runtime-config/src/variables.rs b/crates/runtime-config/src/variables.rs +index 4bed2670..f5fd8833 100644 +--- a/crates/runtime-config/src/variables.rs ++++ b/crates/runtime-config/src/variables.rs +@@ -1,3 +1,5 @@ ++//! The runtime configuration for the variables factor used in the Spin CLI. ++ + use serde::Deserialize; + use spin_expressions::Provider; + use spin_factor_variables::runtime_config::RuntimeConfig; +diff --git a/crates/runtime-factors/src/build.rs b/crates/runtime-factors/src/build.rs +index 11eb1084..96459ff7 100644 +--- a/crates/runtime-factors/src/build.rs ++++ b/crates/runtime-factors/src/build.rs +@@ -8,7 +8,7 @@ use spin_runtime_config::ResolvedRuntimeConfig; + use spin_trigger::cli::{ + FactorsConfig, InitialKvSetterHook, KeyValueDefaultStoreSummaryHook, MaxInstanceMemoryHook, + RuntimeFactorsBuilder, SqlStatementExecutorHook, SqliteDefaultStoreSummaryHook, +- StdioLoggingExecutorHooks, ++ StdioLoggingExecutorHooks, VariablesPreparationExecutorHook, + }; + use spin_variables_static::StaticVariablesProvider; + +@@ -72,6 +72,7 @@ impl RuntimeFactorsBuilder for FactorsBuilder { + executor.add_hooks(InitialKvSetterHook::new(args.key_values.clone())); + executor.add_hooks(SqliteDefaultStoreSummaryHook); + executor.add_hooks(KeyValueDefaultStoreSummaryHook); ++ executor.add_hooks(VariablesPreparationExecutorHook); + + let max_instance_memory = args + .max_instance_memory +diff --git a/crates/trigger-http/src/wasi.rs b/crates/trigger-http/src/wasi.rs +index 0afbbf3f..2a38d6d6 100644 +--- a/crates/trigger-http/src/wasi.rs ++++ b/crates/trigger-http/src/wasi.rs +@@ -93,6 +93,7 @@ impl HttpExecutor for WasiHttpExecutor<'_> { + HandlerType::Wagi(_) => unreachable!("should have used WagiExecutor instead"), + }; + ++ let span = tracing::debug_span!("execute_wasi"); + let handle = task::spawn( + async move { + let result = match handler { +@@ -100,21 +101,21 @@ impl HttpExecutor for WasiHttpExecutor<'_> { + handler + .wasi_http_incoming_handler() + .call_handle(&mut store, request, response) +- .in_current_span() ++ .instrument(span) + .await + } + Handler::Handler2023_10_18(handler) => { + handler + .wasi_http0_2_0_rc_2023_10_18_incoming_handler() + .call_handle(&mut store, request, response) +- .in_current_span() ++ .instrument(span) + .await + } + Handler::Handler2023_11_10(handler) => { + handler + .wasi_http0_2_0_rc_2023_11_10_incoming_handler() + .call_handle(&mut store, request, response) +- .in_current_span() ++ .instrument(span) + .await + } + }; +diff --git a/crates/trigger/Cargo.toml b/crates/trigger/Cargo.toml +index 44db6ff9..7cffd25f 100644 +--- a/crates/trigger/Cargo.toml ++++ b/crates/trigger/Cargo.toml +@@ -28,6 +28,7 @@ spin-compose = { path = "../compose" } + spin-core = { path = "../core" } + spin-factor-key-value = { path = "../factor-key-value" } + spin-factor-sqlite = { path = "../factor-sqlite" } ++spin-factor-variables = { path = "../factor-variables" } + spin-factor-wasi = { path = "../factor-wasi" } + spin-factors = { path = "../factors" } + spin-factors-executor = { path = "../factors-executor" } +diff --git a/crates/trigger/src/cli.rs b/crates/trigger/src/cli.rs +index 2f41ba1b..9af2b0a4 100644 +--- a/crates/trigger/src/cli.rs ++++ b/crates/trigger/src/cli.rs +@@ -4,6 +4,7 @@ mod max_instance_memory; + mod sqlite_statements; + mod stdio; + mod summary; ++mod variable; + + use std::path::PathBuf; + use std::{future::Future, sync::Arc}; +@@ -25,6 +26,7 @@ pub use sqlite_statements::SqlStatementExecutorHook; + use stdio::FollowComponents; + pub use stdio::StdioLoggingExecutorHooks; + pub use summary::{KeyValueDefaultStoreSummaryHook, SqliteDefaultStoreSummaryHook}; ++pub use variable::VariablesPreparationExecutorHook; + + pub const APP_LOG_DIR: &str = "APP_LOG_DIR"; + pub const SPIN_TRUNCATE_LOGS: &str = "SPIN_TRUNCATE_LOGS"; +diff --git a/crates/trigger/src/cli/variable.rs b/crates/trigger/src/cli/variable.rs +new file mode 100644 +index 00000000..fe61e88c +--- /dev/null ++++ b/crates/trigger/src/cli/variable.rs +@@ -0,0 +1,21 @@ ++use spin_factor_variables::VariablesFactor; ++use spin_factors::RuntimeFactors; ++use spin_factors_executor::ExecutorHooks; ++ ++/// An executor hook that prepares the variables factor before runtime execution. ++pub struct VariablesPreparationExecutorHook; ++ ++#[spin_core::async_trait] ++impl ExecutorHooks for VariablesPreparationExecutorHook { ++ async fn configure_app( ++ &self, ++ configured_app: &spin_factors::ConfiguredApp, ++ ) -> anyhow::Result<()> { ++ let variables_factor = configured_app.app_state::()?; ++ ++ let expression_resolver = variables_factor.expression_resolver(); ++ expression_resolver.pre_runtime_prepare().await?; ++ ++ Ok(()) ++ } ++} +diff --git a/crates/variables-azure/src/lib.rs b/crates/variables-azure/src/lib.rs +index 691c980a..5b2fb211 100644 +--- a/crates/variables-azure/src/lib.rs ++++ b/crates/variables-azure/src/lib.rs +@@ -4,7 +4,7 @@ use anyhow::Context as _; + use azure_core::{auth::TokenCredential, Url}; + use azure_security_keyvault::SecretClient; + use serde::Deserialize; +-use spin_expressions::{Key, Provider}; ++use spin_expressions::{provider::ProviderVariableKind, Key, Provider}; + use spin_factors::anyhow; + use spin_world::async_trait; + use tracing::{instrument, Level}; +@@ -107,6 +107,7 @@ pub enum AzureKeyVaultAuthOptions { + #[derive(Debug)] + pub struct AzureKeyVaultProvider { + secret_client: SecretClient, ++ kind: ProviderVariableKind, + } + + impl AzureKeyVaultProvider { +@@ -136,6 +137,7 @@ impl AzureKeyVaultProvider { + + Ok(Self { + secret_client: SecretClient::new(&vault_url.into(), token_credential)?, ++ kind: ProviderVariableKind::Dynamic, + }) + } + } +@@ -151,6 +153,10 @@ impl Provider for AzureKeyVaultProvider { + .context("Failed to read variable from Azure Key Vault")?; + Ok(Some(secret.value)) + } ++ ++ fn kind(&self) -> &ProviderVariableKind { ++ &self.kind ++ } + } + + impl From for Url { +diff --git a/crates/variables-env/src/lib.rs b/crates/variables-env/src/lib.rs +index 6976b00c..82cfbbe9 100644 +--- a/crates/variables-env/src/lib.rs ++++ b/crates/variables-env/src/lib.rs +@@ -6,7 +6,7 @@ use std::{ + }; + + use serde::Deserialize; +-use spin_expressions::{Key, Provider}; ++use spin_expressions::{provider::ProviderVariableKind, Key, Provider}; + use spin_factors::anyhow::{self, Context as _}; + use spin_world::async_trait; + use tracing::{instrument, Level}; +@@ -35,6 +35,7 @@ pub struct EnvVariablesProvider { + env_fetcher: EnvFetcherFn, + dotenv_path: Option, + dotenv_cache: OnceLock>, ++ kind: ProviderVariableKind, + } + + impl Default for EnvVariablesProvider { +@@ -44,6 +45,7 @@ impl Default for EnvVariablesProvider { + env_fetcher: Box::new(|s| std::env::var(s)), + dotenv_path: Some(".env".into()), + dotenv_cache: Default::default(), ++ kind: Default::default(), + } + } + } +@@ -66,6 +68,7 @@ impl EnvVariablesProvider { + dotenv_path, + env_fetcher: Box::new(env_fetcher), + dotenv_cache: Default::default(), ++ kind: ProviderVariableKind::Static, + } + } + +@@ -132,6 +135,10 @@ impl Provider for EnvVariablesProvider { + async fn get(&self, key: &Key) -> anyhow::Result> { + tokio::task::block_in_place(|| self.get_sync(key)) + } ++ ++ fn kind(&self) -> &ProviderVariableKind { ++ &self.kind ++ } + } + + #[cfg(test)] +diff --git a/crates/variables-static/src/lib.rs b/crates/variables-static/src/lib.rs +index 4de067fc..f5369656 100644 +--- a/crates/variables-static/src/lib.rs ++++ b/crates/variables-static/src/lib.rs +@@ -1,7 +1,7 @@ + use std::{collections::HashMap, hash::Hash, sync::Arc}; + + use serde::Deserialize; +-use spin_expressions::{async_trait::async_trait, Key, Provider}; ++use spin_expressions::{async_trait::async_trait, provider::ProviderVariableKind, Key, Provider}; + use spin_factors::anyhow; + + pub use source::*; +@@ -11,6 +11,7 @@ mod source; + #[derive(Debug, Deserialize, Clone)] + pub struct StaticVariablesProvider { + values: Arc>, ++ kind: ProviderVariableKind, + } + + #[async_trait] +@@ -18,6 +19,10 @@ impl Provider for StaticVariablesProvider { + async fn get(&self, key: &Key) -> anyhow::Result> { + Ok(self.values.get(key.as_str()).cloned()) + } ++ ++ fn kind(&self) -> &ProviderVariableKind { ++ &self.kind ++ } + } + + impl StaticVariablesProvider { +@@ -33,6 +38,7 @@ impl StaticVariablesProvider { + .collect(); + Self { + values: Arc::new(values), ++ kind: ProviderVariableKind::Static, + } + } + } +diff --git a/crates/variables-vault/src/lib.rs b/crates/variables-vault/src/lib.rs +index 0bd7e8ed..c8c48e32 100644 +--- a/crates/variables-vault/src/lib.rs ++++ b/crates/variables-vault/src/lib.rs +@@ -1,5 +1,5 @@ + use serde::{Deserialize, Serialize}; +-use spin_expressions::async_trait::async_trait; ++use spin_expressions::{async_trait::async_trait, provider::ProviderVariableKind}; + use spin_factors::anyhow::{self, Context as _}; + use tracing::{instrument, Level}; + use vaultrs::{ +@@ -23,6 +23,7 @@ pub struct VaultVariablesProvider { + /// The optional prefix to use for all keys. + #[serde(default)] + prefix: Option, ++ kind: ProviderVariableKind, + } + + #[async_trait] +@@ -52,4 +53,8 @@ impl Provider for VaultVariablesProvider { + Err(e) => Err(e).context("Failed to check Vault for config"), + } + } ++ ++ fn kind(&self) -> &ProviderVariableKind { ++ &self.kind ++ } + } +diff --git a/docs/content/release-process.md b/docs/content/release-process.md +index faf41d9b..39e5651b 100644 +--- a/docs/content/release-process.md ++++ b/docs/content/release-process.md +@@ -107,4 +107,3 @@ There are a handful of projects that use Spin and would appreciate notification + - [spin-trigger-command](https://github.com/spinframework/spin-trigger-command) + - [spin-trigger-sqs](https://github.com/spinframework/spin-trigger-sqs) + - [spin-trigger-mqtt](https://github.com/spinframework/spin-trigger-mqtt) +- - [spin-trigger-cron](https://github.com/spinframework/spin-trigger-cron) +diff --git a/examples/spin-timer/Cargo.lock b/examples/spin-timer/Cargo.lock +index fd0ca88a..a24a8e55 100644 +--- a/examples/spin-timer/Cargo.lock ++++ b/examples/spin-timer/Cargo.lock +@@ -8,16 +8,7 @@ version = "0.24.2" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" + dependencies = [ +- "gimli 0.31.1", +-] +- +-[[package]] +-name = "addr2line" +-version = "0.25.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9acbfca36652500c911ddb767ed433e3ed99b032b5d935be73c6923662db1d43" +-dependencies = [ +- "gimli 0.32.0", ++ "gimli", + ] + + [[package]] +@@ -26,17 +17,6 @@ version = "2.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +-[[package]] +-name = "ahash" +-version = "0.7.8" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +-dependencies = [ +- "getrandom 0.2.15", +- "once_cell", +- "version_check", +-] +- + [[package]] + name = "aho-corasick" + version = "1.1.3" +@@ -91,12 +71,6 @@ version = "1.7.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +-[[package]] +-name = "arrayvec" +-version = "0.7.6" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +- + [[package]] + name = "async-channel" + version = "1.9.0" +@@ -793,11 +767,11 @@ version = "0.3.74" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" + dependencies = [ +- "addr2line 0.24.2", ++ "addr2line", + "cfg-if", + "libc", + "miniz_oxide", +- "object 0.36.7", ++ "object", + "rustc-demangle", + "windows-targets 0.52.6", + ] +@@ -842,18 +816,6 @@ version = "2.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" + +-[[package]] +-name = "bitvec" +-version = "1.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +-dependencies = [ +- "funty", +- "radium", +- "tap", +- "wyz", +-] +- + [[package]] + name = "block-buffer" + version = "0.10.4" +@@ -876,29 +838,6 @@ dependencies = [ + "piper", + ] + +-[[package]] +-name = "borsh" +-version = "1.5.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +-dependencies = [ +- "borsh-derive", +- "cfg_aliases", +-] +- +-[[package]] +-name = "borsh-derive" +-version = "1.5.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +-dependencies = [ +- "once_cell", +- "proc-macro-crate", +- "proc-macro2", +- "quote", +- "syn 2.0.100", +-] +- + [[package]] + name = "btoi" + version = "0.4.3" +@@ -917,28 +856,6 @@ dependencies = [ + "allocator-api2", + ] + +-[[package]] +-name = "bytecheck" +-version = "0.6.12" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +-dependencies = [ +- "bytecheck_derive", +- "ptr_meta", +- "simdutf8", +-] +- +-[[package]] +-name = "bytecheck_derive" +-version = "0.6.12" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn 1.0.109", +-] +- + [[package]] + name = "byteorder" + version = "1.5.0" +@@ -1199,36 +1116,32 @@ dependencies = [ + + [[package]] + name = "cranelift-assembler-x64" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3870e823d79cafc9c868fbea77e83fc12ec9c0e87f17ad392c71a55ec01f12a9" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cranelift-assembler-x64-meta", + ] + + [[package]] + name = "cranelift-assembler-x64-meta" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0a9fe971fab18724cbfc9a0579dd9cb6e370891991ccc8f85f3390d81392a3c0" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cranelift-srcgen", + ] + + [[package]] + name = "cranelift-bforest" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ac391df81890fc9f820461e76fb344bcebcbf72614ef99bdd03d9fb1a8cdcc5e" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cranelift-entity", + ] + + [[package]] + name = "cranelift-bitset" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "712de3ed567438f3ca42d12547dbf30d92aef37d63ae45eabe32dd53c4ee5d00" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "serde", + "serde_derive", +@@ -1236,9 +1149,8 @@ dependencies = [ + + [[package]] + name = "cranelift-codegen" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "68e6fc48d06ef89c1ad3675fe093f2642d260eea8ceb96a9ee9ae94e51698277" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "bumpalo", + "cranelift-assembler-x64", +@@ -1249,7 +1161,7 @@ dependencies = [ + "cranelift-control", + "cranelift-entity", + "cranelift-isle", +- "gimli 0.32.0", ++ "gimli", + "hashbrown 0.15.2", + "log", + "pulley-interpreter", +@@ -1263,37 +1175,32 @@ dependencies = [ + + [[package]] + name = "cranelift-codegen-meta" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a45a98cfcd528bd06c6ef2fd1846cda3695d41bd4b2823ce965a82f4abec362f" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cranelift-assembler-x64-meta", + "cranelift-codegen-shared", + "cranelift-srcgen", +- "heck 0.5.0", + "pulley-interpreter", + ] + + [[package]] + name = "cranelift-codegen-shared" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "66b12b2fef743dffdb51a5cdb95f5f92ab263ed518a7ec73aa272a4a86ea17bf" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + + [[package]] + name = "cranelift-control" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5dc203df5ac23968c8ded672b6c4b6dbc0639521e50b8d27ac67c2e221f3c98b" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "arbitrary", + ] + + [[package]] + name = "cranelift-entity" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2d01c5dca220ed9c664a4c0cf2085aa0bebaddc306be365bdd2691d4a55dd2ae" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cranelift-bitset", + "serde", +@@ -1302,9 +1209,8 @@ dependencies = [ + + [[package]] + name = "cranelift-frontend" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ecd02bd4641b10658668bf195ef92af0ecffa49a8a563de8e98f0c2d843a229d" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cranelift-codegen", + "log", +@@ -1314,15 +1220,13 @@ dependencies = [ + + [[package]] + name = "cranelift-isle" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "51da2281ea3db0b1f6029b4321acf541ef856baafdf16e990d64953c9737bc3f" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + + [[package]] + name = "cranelift-native" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ff037ce35e9d513dcf64e9f613ec4816cb7b0b1b0b4e23788745f2200d278fec" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cranelift-codegen", + "libc", +@@ -1331,9 +1235,8 @@ dependencies = [ + + [[package]] + name = "cranelift-srcgen" +-version = "0.123.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d13dc01a8588b7f7733de0c31b766d85cac04aec078897cde706cebd891f8212" ++version = "0.122.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + + [[package]] + name = "crc32fast" +@@ -1455,40 +1358,6 @@ dependencies = [ + "syn 1.0.109", + ] + +-[[package]] +-name = "deadpool" +-version = "0.12.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5ed5957ff93768adf7a65ab167a17835c3d2c3c50d084fe305174c112f468e2f" +-dependencies = [ +- "deadpool-runtime", +- "num_cpus", +- "tokio", +-] +- +-[[package]] +-name = "deadpool-postgres" +-version = "0.14.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3d697d376cbfa018c23eb4caab1fd1883dd9c906a8c034e8d9a3cb06a7e0bef9" +-dependencies = [ +- "async-trait", +- "deadpool", +- "getrandom 0.2.15", +- "tokio", +- "tokio-postgres", +- "tracing", +-] +- +-[[package]] +-name = "deadpool-runtime" +-version = "0.1.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" +-dependencies = [ +- "tokio", +-] +- + [[package]] + name = "debugid" + version = "0.8.0" +@@ -1578,7 +1447,7 @@ dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.0", +- "windows-sys 0.60.2", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -1803,12 +1672,6 @@ dependencies = [ + "windows-sys 0.59.0", + ] + +-[[package]] +-name = "funty" +-version = "2.0.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +- + [[package]] + name = "futures" + version = "0.3.31" +@@ -1948,20 +1811,6 @@ dependencies = [ + "serde_json", + ] + +-[[package]] +-name = "generator" +-version = "0.8.5" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" +-dependencies = [ +- "cc", +- "cfg-if", +- "libc", +- "log", +- "rustversion", +- "windows", +-] +- + [[package]] + name = "generic-array" + version = "0.14.7" +@@ -2015,12 +1864,6 @@ name = "gimli" + version = "0.31.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +- +-[[package]] +-name = "gimli" +-version = "0.32.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "93563d740bc9ef04104f9ed6f86f1e3275c2cdafb95664e26584b9ca807a8ffe" + dependencies = [ + "fallible-iterator 0.3.0", + "indexmap 2.9.0", +@@ -2076,9 +1919,6 @@ name = "hashbrown" + version = "0.12.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +-dependencies = [ +- "ahash", +-] + + [[package]] + name = "hashbrown" +@@ -2128,12 +1968,6 @@ version = "0.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +-[[package]] +-name = "hermit-abi" +-version = "0.5.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +- + [[package]] + name = "hex" + version = "0.4.3" +@@ -2853,19 +2687,6 @@ version = "0.4.27" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +-[[package]] +-name = "loom" +-version = "0.7.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +-dependencies = [ +- "cfg-if", +- "generator", +- "scoped-tls", +- "tracing", +- "tracing-subscriber", +-] +- + [[package]] + name = "lru" + version = "0.12.5" +@@ -2956,25 +2777,6 @@ dependencies = [ + "windows-sys 0.52.0", + ] + +-[[package]] +-name = "moka" +-version = "0.12.10" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +-dependencies = [ +- "crossbeam-channel", +- "crossbeam-epoch", +- "crossbeam-utils", +- "loom", +- "parking_lot", +- "portable-atomic", +- "rustc_version", +- "smallvec", +- "tagptr", +- "thiserror 1.0.69", +- "uuid", +-] +- + [[package]] + name = "mysql_async" + version = "0.35.1" +@@ -3110,16 +2912,6 @@ dependencies = [ + "autocfg", + ] + +-[[package]] +-name = "num_cpus" +-version = "1.17.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +-dependencies = [ +- "hermit-abi 0.5.2", +- "libc", +-] +- + [[package]] + name = "num_threads" + version = "0.1.7" +@@ -3153,15 +2945,6 @@ name = "object" + version = "0.36.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +-dependencies = [ +- "memchr", +-] +- +-[[package]] +-name = "object" +-version = "0.37.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" + dependencies = [ + "crc32fast", + "hashbrown 0.15.2", +@@ -3501,12 +3284,6 @@ dependencies = [ + "windows-sys 0.59.0", + ] + +-[[package]] +-name = "portable-atomic" +-version = "1.11.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +- + [[package]] + name = "postcard" + version = "1.1.1" +@@ -3560,19 +3337,6 @@ dependencies = [ + "chrono", + "fallible-iterator 0.2.0", + "postgres-protocol", +- "serde", +- "serde_json", +- "uuid", +-] +- +-[[package]] +-name = "postgres_range" +-version = "0.11.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f6dce28dc5ba143d8eb157b62aac01ae5a1c585c40792158b720e86a87642101" +-dependencies = [ +- "postgres-protocol", +- "postgres-types", + ] + + [[package]] +@@ -3590,15 +3354,6 @@ dependencies = [ + "zerocopy", + ] + +-[[package]] +-name = "proc-macro-crate" +-version = "3.3.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +-dependencies = [ +- "toml_edit", +-] +- + [[package]] + name = "proc-macro-error" + version = "1.0.4" +@@ -3678,31 +3433,10 @@ dependencies = [ + "syn 2.0.100", + ] + +-[[package]] +-name = "ptr_meta" +-version = "0.1.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +-dependencies = [ +- "ptr_meta_derive", +-] +- +-[[package]] +-name = "ptr_meta_derive" +-version = "0.1.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn 1.0.109", +-] +- + [[package]] + name = "pulley-interpreter" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9c53c41637e4052ec0010b923a3ffc99a124f2b6f19062147eae6458904d3e46" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cranelift-bitset", + "log", +@@ -3712,9 +3446,8 @@ dependencies = [ + + [[package]] + name = "pulley-macros" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "aed513b785fd6b142c6708c29990d92475971df8370b018c2c236dfd1c47b77d" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "proc-macro2", + "quote", +@@ -3790,12 +3523,6 @@ version = "5.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +-[[package]] +-name = "radium" +-version = "0.7.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +- + [[package]] + name = "rand" + version = "0.7.3" +@@ -4070,15 +3797,6 @@ version = "0.8.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +-[[package]] +-name = "rend" +-version = "0.4.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +-dependencies = [ +- "bytecheck", +-] +- + [[package]] + name = "reqwest" + version = "0.12.15" +@@ -4146,35 +3864,6 @@ dependencies = [ + "windows-sys 0.52.0", + ] + +-[[package]] +-name = "rkyv" +-version = "0.7.45" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +-dependencies = [ +- "bitvec", +- "bytecheck", +- "bytes", +- "hashbrown 0.12.3", +- "ptr_meta", +- "rend", +- "rkyv_derive", +- "seahash", +- "tinyvec", +- "uuid", +-] +- +-[[package]] +-name = "rkyv_derive" +-version = "0.7.45" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn 1.0.109", +-] +- + [[package]] + name = "rumqttc" + version = "0.24.0" +@@ -4208,23 +3897,6 @@ dependencies = [ + "smallvec", + ] + +-[[package]] +-name = "rust_decimal" +-version = "1.37.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b203a6425500a03e0919c42d3c47caca51e79f1132046626d2c8871c5092035d" +-dependencies = [ +- "arrayvec", +- "borsh", +- "bytes", +- "num-traits", +- "postgres-types", +- "rand 0.8.5", +- "rkyv", +- "serde", +- "serde_json", +-] +- + [[package]] + name = "rustc-demangle" + version = "0.1.24" +@@ -4505,12 +4177,6 @@ dependencies = [ + "syn 2.0.100", + ] + +-[[package]] +-name = "scoped-tls" +-version = "1.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +- + [[package]] + name = "scopeguard" + version = "1.2.0" +@@ -4527,12 +4193,6 @@ dependencies = [ + "untrusted", + ] + +-[[package]] +-name = "seahash" +-version = "4.1.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +- + [[package]] + name = "security-framework" + version = "2.11.1" +@@ -4702,12 +4362,6 @@ dependencies = [ + "libc", + ] + +-[[package]] +-name = "simdutf8" +-version = "0.1.5" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +- + [[package]] + name = "siphasher" + version = "1.0.1" +@@ -4762,7 +4416,7 @@ dependencies = [ + + [[package]] + name = "spin-app" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "serde", +@@ -4772,7 +4426,7 @@ dependencies = [ + + [[package]] + name = "spin-common" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "dirs", +@@ -4784,20 +4438,20 @@ dependencies = [ + + [[package]] + name = "spin-componentize" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "tracing", +- "wasm-encoder 0.236.1", +- "wasm-metadata 0.236.1", +- "wasmparser 0.236.1", ++ "wasm-encoder 0.235.0", ++ "wasm-metadata 0.235.0", ++ "wasmparser 0.235.0", + "wit-component", + "wit-parser", + ] + + [[package]] + name = "spin-compose" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-trait", +@@ -4814,7 +4468,7 @@ dependencies = [ + + [[package]] + name = "spin-core" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-trait", +@@ -4824,7 +4478,7 @@ dependencies = [ + + [[package]] + name = "spin-expressions" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-trait", +@@ -4835,7 +4489,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-key-value" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "serde", +@@ -4853,7 +4507,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-llm" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-trait", +@@ -4871,7 +4525,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-outbound-http" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "bytes", +@@ -4881,14 +4535,12 @@ dependencies = [ + "hyper-util", + "reqwest", + "rustls 0.23.25", +- "serde", + "spin-factor-outbound-networking", + "spin-factors", + "spin-telemetry", + "spin-world", + "tokio", + "tokio-rustls 0.26.2", +- "tower-service", + "tracing", + "wasmtime", + "wasmtime-wasi", +@@ -4897,7 +4549,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-outbound-mqtt" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "rumqttc", +@@ -4912,7 +4564,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-outbound-mysql" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "mysql_async", +@@ -4928,7 +4580,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-outbound-networking" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "futures-util", +@@ -4951,18 +4603,12 @@ dependencies = [ + + [[package]] + name = "spin-factor-outbound-pg" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", +- "bytes", + "chrono", +- "deadpool-postgres", +- "moka", + "native-tls", + "postgres-native-tls", +- "postgres_range", +- "rust_decimal", +- "serde_json", + "spin-core", + "spin-factor-outbound-networking", + "spin-factors", +@@ -4971,12 +4617,11 @@ dependencies = [ + "tokio", + "tokio-postgres", + "tracing", +- "uuid", + ] + + [[package]] + name = "spin-factor-outbound-redis" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "redis 0.25.4", +@@ -4990,7 +4635,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-sqlite" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "async-trait", + "spin-factors", +@@ -5003,7 +4648,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-variables" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "spin-expressions", + "spin-factors", +@@ -5014,7 +4659,7 @@ dependencies = [ + + [[package]] + name = "spin-factor-wasi" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "async-trait", + "bytes", +@@ -5027,7 +4672,7 @@ dependencies = [ + + [[package]] + name = "spin-factors" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "serde", +@@ -5040,7 +4685,7 @@ dependencies = [ + + [[package]] + name = "spin-factors-derive" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "proc-macro2", + "quote", +@@ -5049,7 +4694,7 @@ dependencies = [ + + [[package]] + name = "spin-factors-executor" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "spin-app", +@@ -5059,7 +4704,7 @@ dependencies = [ + + [[package]] + name = "spin-key-value-aws" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-once-cell", +@@ -5073,7 +4718,7 @@ dependencies = [ + + [[package]] + name = "spin-key-value-azure" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-trait", +@@ -5088,7 +4733,7 @@ dependencies = [ + + [[package]] + name = "spin-key-value-redis" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "redis 0.29.5", +@@ -5101,7 +4746,7 @@ dependencies = [ + + [[package]] + name = "spin-key-value-spin" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "rusqlite", +@@ -5114,7 +4759,7 @@ dependencies = [ + + [[package]] + name = "spin-llm-remote-http" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "reqwest", +@@ -5127,7 +4772,7 @@ dependencies = [ + + [[package]] + name = "spin-locked-app" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-trait", +@@ -5140,7 +4785,7 @@ dependencies = [ + + [[package]] + name = "spin-manifest" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "indexmap 2.9.0", +@@ -5157,7 +4802,7 @@ dependencies = [ + + [[package]] + name = "spin-outbound-networking-config" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "futures-util", +@@ -5172,16 +4817,14 @@ dependencies = [ + + [[package]] + name = "spin-resource-table" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + + [[package]] + name = "spin-runtime-config" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", +- "serde", + "spin-common", +- "spin-expressions", + "spin-factor-key-value", + "spin-factor-llm", + "spin-factor-outbound-http", +@@ -5200,16 +4843,13 @@ dependencies = [ + "spin-key-value-spin", + "spin-sqlite", + "spin-trigger", +- "spin-variables-azure", +- "spin-variables-env", +- "spin-variables-static", +- "spin-variables-vault", ++ "spin-variables", + "toml", + ] + + [[package]] + name = "spin-runtime-factors" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "clap", +@@ -5229,14 +4869,13 @@ dependencies = [ + "spin-factors-executor", + "spin-runtime-config", + "spin-trigger", +- "spin-variables-static", + "terminal", + "tracing", + ] + + [[package]] + name = "spin-serde" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "base64 0.22.1", +@@ -5248,7 +4887,7 @@ dependencies = [ + + [[package]] + name = "spin-sqlite" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "serde", + "spin-factor-sqlite", +@@ -5260,7 +4899,7 @@ dependencies = [ + + [[package]] + name = "spin-sqlite-inproc" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-trait", +@@ -5272,7 +4911,7 @@ dependencies = [ + + [[package]] + name = "spin-sqlite-libsql" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "async-trait", +@@ -5284,7 +4923,7 @@ dependencies = [ + + [[package]] + name = "spin-telemetry" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "http 0.2.12", +@@ -5301,7 +4940,7 @@ dependencies = [ + + [[package]] + name = "spin-trigger" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "anyhow", + "clap", +@@ -5325,58 +4964,26 @@ dependencies = [ + ] + + [[package]] +-name = "spin-variables-azure" +-version = "3.5.0-pre0" ++name = "spin-variables" ++version = "3.4.0-pre0" + dependencies = [ + "azure_core 0.20.0", + "azure_identity 0.20.0", + "azure_security_keyvault", +- "serde", +- "spin-expressions", +- "spin-factors", +- "spin-world", +- "tracing", +-] +- +-[[package]] +-name = "spin-variables-env" +-version = "3.5.0-pre0" +-dependencies = [ + "dotenvy", + "serde", + "spin-expressions", ++ "spin-factor-variables", + "spin-factors", + "spin-world", + "tokio", + "tracing", +-] +- +-[[package]] +-name = "spin-variables-static" +-version = "3.5.0-pre0" +-dependencies = [ +- "serde", +- "serde_json", +- "spin-common", +- "spin-expressions", +- "spin-factors", +- "toml", +-] +- +-[[package]] +-name = "spin-variables-vault" +-version = "3.5.0-pre0" +-dependencies = [ +- "serde", +- "spin-expressions", +- "spin-factors", +- "tracing", + "vaultrs", + ] + + [[package]] + name = "spin-world" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "async-trait", + "wasmtime", +@@ -5512,18 +5119,6 @@ dependencies = [ + "winx", + ] + +-[[package]] +-name = "tagptr" +-version = "0.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" +- +-[[package]] +-name = "tap" +-version = "1.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +- + [[package]] + name = "target-lexicon" + version = "0.13.2" +@@ -5554,7 +5149,7 @@ dependencies = [ + + [[package]] + name = "terminal" +-version = "3.5.0-pre0" ++version = "3.4.0-pre0" + dependencies = [ + "termcolor", + ] +@@ -5955,17 +5550,6 @@ dependencies = [ + "valuable", + ] + +-[[package]] +-name = "tracing-log" +-version = "0.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +-dependencies = [ +- "log", +- "once_cell", +- "tracing-core", +-] +- + [[package]] + name = "tracing-opentelemetry" + version = "0.29.0" +@@ -6010,10 +5594,20 @@ dependencies = [ + "thread_local", + "tracing", + "tracing-core", +- "tracing-log", + "tracing-serde", + ] + ++[[package]] ++name = "trait-variant" ++version = "0.1.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.100", ++] ++ + [[package]] + name = "trigger-timer" + version = "0.1.0" +@@ -6195,9 +5789,9 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + + [[package]] + name = "wac-graph" +-version = "0.8.0" ++version = "0.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0d94f428d894714ffba71621dd5fde3b5a52feb6a0ec96aded6207f85057dffc" ++checksum = "d94268a683b67ae20210565b5f91e106fe05034c36b931e739fe90377ed80b98" + dependencies = [ + "anyhow", + "id-arena", +@@ -6207,23 +5801,23 @@ dependencies = [ + "semver", + "thiserror 1.0.69", + "wac-types", +- "wasm-encoder 0.235.0", +- "wasm-metadata 0.235.0", +- "wasmparser 0.235.0", ++ "wasm-encoder 0.202.0", ++ "wasm-metadata 0.202.0", ++ "wasmparser 0.202.0", + ] + + [[package]] + name = "wac-types" +-version = "0.8.0" ++version = "0.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6690e903d48e7258ea5e623c3269452c81ce1c9bfa8ffcb9c8909d77861fff6a" ++checksum = "f5028a15e266f4c8fed48beb95aebb76af5232dcd554fd849a305a4e5cce1563" + dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.9.0", + "semver", +- "wasm-encoder 0.235.0", +- "wasmparser 0.235.0", ++ "wasm-encoder 0.202.0", ++ "wasmparser 0.202.0", + ] + + [[package]] +@@ -6341,48 +5935,44 @@ dependencies = [ + + [[package]] + name = "wasm-encoder" +-version = "0.235.0" ++version = "0.202.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b3bc393c395cb621367ff02d854179882b9a351b4e0c93d1397e6090b53a5c2a" ++checksum = "bfd106365a7f5f7aa3c1916a98cbb3ad477f5ff96ddb130285a91c6e7429e67a" + dependencies = [ +- "leb128fmt", +- "wasmparser 0.235.0", ++ "leb128", + ] + + [[package]] + name = "wasm-encoder" +-version = "0.236.1" ++version = "0.235.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "724fccfd4f3c24b7e589d333fc0429c68042897a7e8a5f8694f31792471841e7" ++checksum = "b3bc393c395cb621367ff02d854179882b9a351b4e0c93d1397e6090b53a5c2a" + dependencies = [ + "leb128fmt", +- "wasmparser 0.236.1", ++ "wasmparser 0.235.0", + ] + + [[package]] + name = "wasm-metadata" +-version = "0.235.0" ++version = "0.202.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b055604ba04189d54b8c0ab2c2fc98848f208e103882d5c0b984f045d5ea4d20" ++checksum = "094aea3cb90e09f16ee25a4c0e324b3e8c934e7fd838bfa039aef5352f44a917" + dependencies = [ + "anyhow", +- "auditable-serde", +- "flate2", + "indexmap 2.9.0", + "serde", + "serde_derive", + "serde_json", + "spdx", +- "url", +- "wasm-encoder 0.235.0", +- "wasmparser 0.235.0", ++ "wasm-encoder 0.202.0", ++ "wasmparser 0.202.0", + ] + + [[package]] + name = "wasm-metadata" +-version = "0.236.1" ++version = "0.235.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c909f94a49a8de3365f3c0344f064818f1e369ff1740c5b04f455f85d454768e" ++checksum = "b055604ba04189d54b8c0ab2c2fc98848f208e103882d5c0b984f045d5ea4d20" + dependencies = [ + "anyhow", + "auditable-serde", +@@ -6393,8 +5983,8 @@ dependencies = [ + "serde_json", + "spdx", + "url", +- "wasm-encoder 0.236.1", +- "wasmparser 0.236.1", ++ "wasm-encoder 0.235.0", ++ "wasmparser 0.235.0", + ] + + [[package]] +@@ -6429,22 +6019,20 @@ dependencies = [ + + [[package]] + name = "wasmparser" +-version = "0.235.0" ++version = "0.202.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917" ++checksum = "d6998515d3cf3f8b980ef7c11b29a9b1017d4cf86b99ae93b546992df9931413" + dependencies = [ + "bitflags 2.9.0", +- "hashbrown 0.15.2", + "indexmap 2.9.0", + "semver", +- "serde", + ] + + [[package]] + name = "wasmparser" +-version = "0.236.1" ++version = "0.235.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a9b1e81f3eb254cf7404a82cee6926a4a3ccc5aad80cc3d43608a070c67aa1d7" ++checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917" + dependencies = [ + "bitflags 2.9.0", + "hashbrown 0.15.2", +@@ -6455,22 +6043,21 @@ dependencies = [ + + [[package]] + name = "wasmprinter" +-version = "0.236.1" ++version = "0.235.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2df225df06a6df15b46e3f73ca066ff92c2e023670969f7d50ce7d5e695abbb1" ++checksum = "75aa8e9076de6b9544e6dab4badada518cca0bf4966d35b131bbd057aed8fa0a" + dependencies = [ + "anyhow", + "termcolor", +- "wasmparser 0.236.1", ++ "wasmparser 0.235.0", + ] + + [[package]] + name = "wasmtime" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "72eb410993c268be048b7745a49649e3390348b0fe9ee050253a74a79192574f" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ +- "addr2line 0.25.0", ++ "addr2line", + "anyhow", + "async-trait", + "bitflags 2.9.0", +@@ -6479,7 +6066,7 @@ dependencies = [ + "cfg-if", + "encoding_rs", + "fxprof-processed-profile", +- "gimli 0.32.0", ++ "gimli", + "hashbrown 0.15.2", + "indexmap 2.9.0", + "ittapi", +@@ -6487,7 +6074,7 @@ dependencies = [ + "log", + "mach2", + "memfd", +- "object 0.37.3", ++ "object", + "once_cell", + "postcard", + "pulley-interpreter", +@@ -6499,8 +6086,9 @@ dependencies = [ + "serde_json", + "smallvec", + "target-lexicon", +- "wasm-encoder 0.236.1", +- "wasmparser 0.236.1", ++ "trait-variant", ++ "wasm-encoder 0.235.0", ++ "wasmparser 0.235.0", + "wasmtime-environ", + "wasmtime-internal-asm-macros", + "wasmtime-internal-cache", +@@ -6516,23 +6104,22 @@ dependencies = [ + "wasmtime-internal-versioned-export-macros", + "wasmtime-internal-winch", + "wat", +- "windows-sys 0.60.2", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "wasmtime-environ" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "88d3047dfcd4c0eeb2dbd9d639dd4eef65cbe53f17211c549543f208466246ed" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "cpp_demangle", + "cranelift-bitset", + "cranelift-entity", +- "gimli 0.32.0", ++ "gimli", + "indexmap 2.9.0", + "log", +- "object 0.37.3", ++ "object", + "postcard", + "rustc-demangle", + "semver", +@@ -6540,26 +6127,24 @@ dependencies = [ + "serde_derive", + "smallvec", + "target-lexicon", +- "wasm-encoder 0.236.1", +- "wasmparser 0.236.1", ++ "wasm-encoder 0.235.0", ++ "wasmparser 0.235.0", + "wasmprinter", + "wasmtime-internal-component-util", + ] + + [[package]] + name = "wasmtime-internal-asm-macros" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "82c3ac22f7209c35a913b4423a9f83fc12b74239af3cb5ac6c39a5df34e1970b" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "wasmtime-internal-cache" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dbd49572a149c84a28079a0fb06f2c67c6290e75405f71855e943e4bb4703ae0" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "base64 0.22.1", +@@ -6571,15 +6156,14 @@ dependencies = [ + "serde_derive", + "sha2", + "toml", +- "windows-sys 0.60.2", ++ "windows-sys 0.59.0", + "zstd", + ] + + [[package]] + name = "wasmtime-internal-component-macro" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0badcd2acaa2901910a2ec0815abd24b80ffeecb5683029082e26220be2b44c5" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "proc-macro2", +@@ -6592,15 +6176,13 @@ dependencies = [ + + [[package]] + name = "wasmtime-internal-component-util" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "399a9f4d25c0dcf4829751cbb63de438f3b715abc49277c15c86460539f4a7e7" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + + [[package]] + name = "wasmtime-internal-cranelift" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "41370ede67231853b2f96a7f03b8e3db61802ad3ee0d7497b366f815e616f4fc" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "cfg-if", +@@ -6609,15 +6191,15 @@ dependencies = [ + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", +- "gimli 0.32.0", ++ "gimli", + "itertools 0.14.0", + "log", +- "object 0.37.3", ++ "object", + "pulley-interpreter", + "smallvec", + "target-lexicon", + "thiserror 2.0.12", +- "wasmparser 0.236.1", ++ "wasmparser 0.235.0", + "wasmtime-environ", + "wasmtime-internal-math", + "wasmtime-internal-versioned-export-macros", +@@ -6625,9 +6207,8 @@ dependencies = [ + + [[package]] + name = "wasmtime-internal-fiber" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6baf30fe62eb18fdc83395011ebd32dd74af3e86cecffb74dec05d8af2243515" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "cc", +@@ -6636,66 +6217,60 @@ dependencies = [ + "rustix 1.0.5", + "wasmtime-internal-asm-macros", + "wasmtime-internal-versioned-export-macros", +- "windows-sys 0.60.2", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "wasmtime-internal-jit-debug" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "416e2d2193073fe65355315bd144a9a26cbdf1f0c27faa7fdd3266a09b2689d3" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "cc", +- "object 0.37.3", ++ "object", + "rustix 1.0.5", + "wasmtime-internal-versioned-export-macros", + ] + + [[package]] + name = "wasmtime-internal-jit-icache-coherence" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b787315e8acb988ce5da8439ce827f84a01b912d3b157aafe0ddd8779fef219e" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "cfg-if", + "libc", +- "windows-sys 0.60.2", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "wasmtime-internal-math" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "08d8b81a4083aa76d3cd3ebf24f0564b6d17d4faffd47c42dd218798aa5894d4" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "libm", + ] + + [[package]] + name = "wasmtime-internal-slab" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8e701cdea321a3c288990dcc1ed7b4c89d120e10bf50052e942243251e710c42" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + + [[package]] + name = "wasmtime-internal-unwinder" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "60ddcc1b024ae8e16f043b0dbea676048f3b710efbaa63f2647bc287315b8704" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "cfg-if", + "cranelift-codegen", + "log", +- "object 0.37.3", ++ "object", + ] + + [[package]] + name = "wasmtime-internal-versioned-export-macros" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e4bd56c30d60d617935d1a68272223341b67c27fb3776fee025e481f3ac53cd0" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "proc-macro2", + "quote", +@@ -6704,16 +6279,15 @@ dependencies = [ + + [[package]] + name = "wasmtime-internal-winch" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e9a56b31bc1c5b6a62cb400e996947944a3a0545dc8e11790964074269876137" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "cranelift-codegen", +- "gimli 0.32.0", +- "object 0.37.3", ++ "gimli", ++ "object", + "target-lexicon", +- "wasmparser 0.236.1", ++ "wasmparser 0.235.0", + "wasmtime-environ", + "wasmtime-internal-cranelift", + "winch-codegen", +@@ -6721,12 +6295,10 @@ dependencies = [ + + [[package]] + name = "wasmtime-internal-wit-bindgen" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8c9816c753aaa5591c45f3ccfb9f2ecf9ea9bbffabc1ad628818803bd12e34ba" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", +- "bitflags 2.9.0", + "heck 0.5.0", + "indexmap 2.9.0", + "wit-parser", +@@ -6734,9 +6306,8 @@ dependencies = [ + + [[package]] + name = "wasmtime-wasi" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c43f4163d631ecb72245b34aae03f5a0b07e58c2004692b4258caf8bf7aacca5" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "async-trait", +@@ -6760,14 +6331,13 @@ dependencies = [ + "wasmtime", + "wasmtime-wasi-io", + "wiggle", +- "windows-sys 0.60.2", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "wasmtime-wasi-http" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9a9730c0a3f24c25a8fa40fecbd4a1a3e77dff5bb730d98e16861c9dfcc2ca33" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "async-trait", +@@ -6789,9 +6359,8 @@ dependencies = [ + + [[package]] + name = "wasmtime-wasi-io" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a6a1700b7b7a2b9b704ed9501745798e3791f575ee6973d7d821e2386a94adbf" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "async-trait", +@@ -6811,24 +6380,24 @@ dependencies = [ + + [[package]] + name = "wast" +-version = "236.0.1" ++version = "235.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d3bec4b4db9c6808d394632fd4b0cd4654c32c540bd3237f55ee6a40fff6e51f" ++checksum = "1eda4293f626c99021bb3a6fbe4fbbe90c0e31a5ace89b5f620af8925de72e13" + dependencies = [ + "bumpalo", + "leb128fmt", + "memchr", + "unicode-width", +- "wasm-encoder 0.236.1", ++ "wasm-encoder 0.235.0", + ] + + [[package]] + name = "wat" +-version = "1.236.1" ++version = "1.235.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "64475e2f77d6071ce90624098fc236285ddafa8c3ea1fb386f2c4154b6c2bbdb" ++checksum = "e777e0327115793cb96ab220b98f85327ec3d11f34ec9e8d723264522ef206aa" + dependencies = [ +- "wast 236.0.1", ++ "wast 235.0.0", + ] + + [[package]] +@@ -6873,9 +6442,8 @@ dependencies = [ + + [[package]] + name = "wiggle" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0047009d1851c65dfeb197ff53a1d1bf94358d56604ac5e9419397ba381bfa17" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "async-trait", +@@ -6888,9 +6456,8 @@ dependencies = [ + + [[package]] + name = "wiggle-generate" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "af67f0f2a0e2e7841e9a561aff21cec8f6125b5b8d2c43adecc974e36e9cbbd9" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "heck 0.5.0", +@@ -6902,9 +6469,8 @@ dependencies = [ + + [[package]] + name = "wiggle-macro" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c6f1ed189ba5962988a017f86bc73b03cc69e1b8d3040922beab307855ce594d" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "proc-macro2", + "quote", +@@ -6945,46 +6511,23 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + + [[package]] + name = "winch-codegen" +-version = "36.0.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "88ac81262abfb835f3f46f64715863fa2737c2928fab58db74ec98710e3e261a" ++version = "35.0.0" ++source = "git+https://github.com/bytecodealliance/wasmtime?branch=release-35.0.0#1112ac1cf26a0fc9dcdb92d438c26d3b30b26e15" + dependencies = [ + "anyhow", + "cranelift-assembler-x64", + "cranelift-codegen", +- "gimli 0.32.0", ++ "gimli", + "regalloc2", + "smallvec", + "target-lexicon", + "thiserror 2.0.12", +- "wasmparser 0.236.1", ++ "wasmparser 0.235.0", + "wasmtime-environ", + "wasmtime-internal-cranelift", + "wasmtime-internal-math", + ] + +-[[package]] +-name = "windows" +-version = "0.61.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +-dependencies = [ +- "windows-collections", +- "windows-core", +- "windows-future", +- "windows-link", +- "windows-numerics", +-] +- +-[[package]] +-name = "windows-collections" +-version = "0.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +-dependencies = [ +- "windows-core", +-] +- + [[package]] + name = "windows-core" + version = "0.61.0" +@@ -6998,16 +6541,6 @@ dependencies = [ + "windows-strings 0.4.0", + ] + +-[[package]] +-name = "windows-future" +-version = "0.2.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" +-dependencies = [ +- "windows-core", +- "windows-link", +-] +- + [[package]] + name = "windows-implement" + version = "0.60.0" +@@ -7032,19 +6565,9 @@ dependencies = [ + + [[package]] + name = "windows-link" +-version = "0.1.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +- +-[[package]] +-name = "windows-numerics" +-version = "0.2.0" ++version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +-dependencies = [ +- "windows-core", +- "windows-link", +-] ++checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + + [[package]] + name = "windows-registry" +@@ -7054,7 +6577,7 @@ checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" + dependencies = [ + "windows-result", + "windows-strings 0.3.1", +- "windows-targets 0.53.3", ++ "windows-targets 0.53.0", + ] + + [[package]] +@@ -7102,15 +6625,6 @@ dependencies = [ + "windows-targets 0.52.6", + ] + +-[[package]] +-name = "windows-sys" +-version = "0.60.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +-dependencies = [ +- "windows-targets 0.53.3", +-] +- + [[package]] + name = "windows-targets" + version = "0.52.6" +@@ -7129,11 +6643,10 @@ dependencies = [ + + [[package]] + name = "windows-targets" +-version = "0.53.3" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" ++checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" + dependencies = [ +- "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", +@@ -7270,9 +6783,9 @@ dependencies = [ + + [[package]] + name = "wit-component" +-version = "0.236.1" ++version = "0.235.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3622959ed7ed6341c38e5aa35af243632534b0a36226852faa802939ce11e00f" ++checksum = "64a57a11109cc553396f89f3a38a158a97d0b1adaec113bd73e0f64d30fb601f" + dependencies = [ + "anyhow", + "bitflags 2.9.0", +@@ -7281,17 +6794,17 @@ dependencies = [ + "serde", + "serde_derive", + "serde_json", +- "wasm-encoder 0.236.1", +- "wasm-metadata 0.236.1", +- "wasmparser 0.236.1", ++ "wasm-encoder 0.235.0", ++ "wasm-metadata 0.235.0", ++ "wasmparser 0.235.0", + "wit-parser", + ] + + [[package]] + name = "wit-parser" +-version = "0.236.1" ++version = "0.235.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "16e4833a20cd6e85d6abfea0e63a399472d6f88c6262957c17f546879a80ba15" ++checksum = "0a1f95a87d03a33e259af286b857a95911eb46236a0f726cbaec1227b3dfc67a" + dependencies = [ + "anyhow", + "id-arena", +@@ -7302,7 +6815,7 @@ dependencies = [ + "serde_derive", + "serde_json", + "unicode-xid", +- "wasmparser 0.236.1", ++ "wasmparser 0.235.0", + ] + + [[package]] +@@ -7329,15 +6842,6 @@ version = "0.5.5" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +-[[package]] +-name = "wyz" +-version = "0.5.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +-dependencies = [ +- "tap", +-] +- + [[package]] + name = "xmlparser" + version = "0.13.6"