diff --git a/Cargo.lock b/Cargo.lock index d419227..0d70b9d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,7 +43,7 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chain-module-sdk" -version = "0.3.0" +version = "0.2.1" dependencies = [ "chain-module-sdk-macros", "serde", @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "chain-module-sdk-macros" -version = "0.3.0" +version = "0.2.1" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 2101c8c..bb0f709 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ members = [ ] [workspace.package] -version = "0.3.0" +version = "0.2.1" edition = "2024" authors = ["Dr. Stefan Flemming "] license = "Apache-2.0" diff --git a/crates/chain-module-sdk-macros/src/lib.rs b/crates/chain-module-sdk-macros/src/lib.rs index e64e49b..3d0cfb5 100644 --- a/crates/chain-module-sdk-macros/src/lib.rs +++ b/crates/chain-module-sdk-macros/src/lib.rs @@ -1,6 +1,7 @@ //! Procedural macros powering `chain-module-sdk`. //! -//! This crate exists only to host the `#[chain_module]` attribute. +//! This crate exists only to host the `#[chain_module]` attribute +//! (and its legacy alias `#[fai_module]`). //! Module authors should depend on `chain-module-sdk` (which //! re-exports the macro), not on this crate directly. @@ -27,6 +28,18 @@ const WIT_INLINE: &str = include_str!("../../../wit/world.wit"); /// anything — only its signature matters. #[proc_macro_attribute] pub fn chain_module(_attrs: TokenStream, input: TokenStream) -> TokenStream { + expand_module(input) +} + +/// Legacy alias for [`chain_module`], kept so modules written +/// before the product rename keep compiling. New code uses +/// `#[chain_module]`. +#[proc_macro_attribute] +pub fn fai_module(_attrs: TokenStream, input: TokenStream) -> TokenStream { + expand_module(input) +} + +fn expand_module(input: TokenStream) -> TokenStream { let user_fn = parse_macro_input!(input as ItemFn); let user_fn_name = user_fn.sig.ident.clone(); let wit_literal = WIT_INLINE; diff --git a/crates/chain-module-sdk/src/context.rs b/crates/chain-module-sdk/src/context.rs index f16a3f5..32080d0 100644 --- a/crates/chain-module-sdk/src/context.rs +++ b/crates/chain-module-sdk/src/context.rs @@ -1,7 +1,7 @@ //! Invocation context passed to a module on every call. //! //! Mirrors the WIT `invocation-context` record. The -//! `#[chain_module]` macro builds this from the WIT-generated value +//! `#[fai_module]` macro builds this from the WIT-generated value //! before handing it to user code. #[derive(Debug, Clone, PartialEq, Eq)] diff --git a/crates/chain-module-sdk/src/host.rs b/crates/chain-module-sdk/src/host.rs index e73579d..de9572d 100644 --- a/crates/chain-module-sdk/src/host.rs +++ b/crates/chain-module-sdk/src/host.rs @@ -1,7 +1,7 @@ //! Host-callback plumbing for `Context::emit` (WIT 1.1 `emit-event`). //! //! The WIT host imports (`emit-event`) are only reachable from the -//! `wit_bindgen`-generated glue inside the `#[chain_module]` expansion, +//! `wit_bindgen`-generated glue inside the `#[fai_module]` expansion, //! which lives in the module crate — not here. So the macro installs a //! function pointer that reaches the real host import, and //! [`Context::emit`](crate::Context::emit) calls it through this hook. @@ -18,7 +18,7 @@ thread_local! { static EMIT_HOOK: Cell> = const { Cell::new(None) }; } -/// Install the emit hook. Called by the `#[chain_module]` expansion at +/// Install the emit hook. Called by the `#[fai_module]` expansion at /// the start of each invocation. Not part of the stable public API. #[doc(hidden)] pub fn __set_emit_hook(f: fn(&str, Payload)) { diff --git a/crates/chain-module-sdk/src/inputs.rs b/crates/chain-module-sdk/src/inputs.rs index ea1cc54..9f8b46e 100644 --- a/crates/chain-module-sdk/src/inputs.rs +++ b/crates/chain-module-sdk/src/inputs.rs @@ -19,7 +19,7 @@ pub struct Inputs { impl Inputs { /// Build directly from a list of `(name, payload)` pairs. - /// Used by the `#[chain_module]` macro after WIT conversion. + /// Used by the `#[fai_module]` macro after WIT conversion. #[doc(hidden)] pub fn __from_pairs(items: Vec<(String, Payload)>) -> Self { Self { items } diff --git a/crates/chain-module-sdk/src/lib.rs b/crates/chain-module-sdk/src/lib.rs index d059f63..c103536 100644 --- a/crates/chain-module-sdk/src/lib.rs +++ b/crates/chain-module-sdk/src/lib.rs @@ -36,7 +36,7 @@ pub use inputs::Inputs; pub use outputs::Outputs; pub use payload::{BytesValue, FileRef, Payload}; -pub use chain_module_sdk_macros::chain_module; +pub use chain_module_sdk_macros::{chain_module, fai_module}; // Emit-hook plumbing used by the `#[chain_module]` expansion (wasm32) // so `Context::emit` reaches the WIT `emit-event` host import. @@ -49,6 +49,7 @@ pub(crate) use host::emit; pub mod prelude { pub use super::{ BytesValue, Context, FileRef, Inputs, ModuleError, Outputs, Payload, chain_module, + fai_module, }; } diff --git a/crates/chain-module-sdk/src/outputs.rs b/crates/chain-module-sdk/src/outputs.rs index 037f350..3ac21d8 100644 --- a/crates/chain-module-sdk/src/outputs.rs +++ b/crates/chain-module-sdk/src/outputs.rs @@ -71,7 +71,7 @@ impl Outputs { } /// Consume the builder into the underlying `(name, payload)` list. - /// Used by the `#[chain_module]` macro after WIT conversion. + /// Used by the `#[fai_module]` macro after WIT conversion. #[doc(hidden)] pub fn __into_pairs(self) -> Vec<(String, Payload)> { self.items diff --git a/crates/chain-module-sdk/src/payload.rs b/crates/chain-module-sdk/src/payload.rs index 8016bf0..4a87c2e 100644 --- a/crates/chain-module-sdk/src/payload.rs +++ b/crates/chain-module-sdk/src/payload.rs @@ -2,7 +2,7 @@ //! //! The shape is fixed by the v1.0 WIT freeze. Field-by-field //! conversion to and from the WIT-generated type happens inside -//! the `#[chain_module]` macro expansion in the user crate. +//! the `#[fai_module]` macro expansion in the user crate. use serde::{Deserialize, Serialize}; diff --git a/examples/echo/Cargo.lock b/examples/echo/Cargo.lock index a7b3f0a..8b91627 100644 --- a/examples/echo/Cargo.lock +++ b/examples/echo/Cargo.lock @@ -34,7 +34,7 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chain-module-sdk" -version = "0.2.1" +version = "0.2.0" dependencies = [ "chain-module-sdk-macros", "serde", @@ -45,7 +45,7 @@ dependencies = [ [[package]] name = "chain-module-sdk-macros" -version = "0.2.1" +version = "0.2.0" dependencies = [ "proc-macro2", "quote", diff --git a/examples/echo/Cargo.toml b/examples/echo/Cargo.toml index 7ec5300..da76171 100644 --- a/examples/echo/Cargo.toml +++ b/examples/echo/Cargo.toml @@ -10,7 +10,7 @@ version = "0.1.0" edition = "2024" license = "Apache-2.0" publish = false -description = "Reference module showing the minimum needed to write a Ch∆In module with chain-module-sdk." +description = "Reference module showing the minimum needed to write an F∆I module with chain-module-sdk." [lib] crate-type = ["cdylib"] diff --git a/examples/echo/src/lib.rs b/examples/echo/src/lib.rs index e538232..4d2a55b 100644 --- a/examples/echo/src/lib.rs +++ b/examples/echo/src/lib.rs @@ -1,4 +1,4 @@ -//! Minimum-viable Ch∆In module — echoes the first text input. +//! Minimum-viable F∆I module — echoes the first text input. //! //! Demonstrates the entire authoring surface: a single function //! decorated with `#[chain_module]`. No `wit_bindgen`, no diff --git a/examples/progress/Cargo.lock b/examples/progress/Cargo.lock index 19c18a7..ff92268 100644 --- a/examples/progress/Cargo.lock +++ b/examples/progress/Cargo.lock @@ -34,7 +34,7 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chain-module-sdk" -version = "0.3.0" +version = "0.2.0" dependencies = [ "chain-module-sdk-macros", "serde", @@ -45,7 +45,7 @@ dependencies = [ [[package]] name = "chain-module-sdk-macros" -version = "0.3.0" +version = "0.2.0" dependencies = [ "proc-macro2", "quote",