All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add
#[contract(emits = [...])]method-level attribute for manual event registration, covering both trait impls with default implementations and inherent methods that delegate to helpers in other crates. - Add compile error when a public
&mut selfmethod emits no events. Suppress with#[contract(no_event)]. - Add detection of variable identifiers used as
abi::emit()topics (warning pendingproc_macro_diagnosticstabilisation). - Add the
dusk-forgeCLI withnew,build,test, andcheckcommands for contract project scaffolding and workflows. - Add
expand,clean, andcompletionscommands to thedusk-forgeCLI. - Add
schema,call, andverifycommands to thedusk-forgeCLI.
- Replace the four hand-rolled
#[contract(...)]directive parsers with a single typed pass returning aContractDirectivesstruct. Malformed inputs (typo'd keyword, wrong shape, unparseable feeds type,expose = (...)with parens, extra tokens after a(topic, EventType)tuple) now produce acompile_error!instead of being silently dropped. Duplicate directives (within one attribute or across multiple#[contract(...)]attributes on the same item) also error #24. - Move workspace to Rust edition 2024 on the stable toolchain (MSRV 1.85). Generated contract wrappers now use
#[unsafe(no_mangle)]. - Remove
-Z build-std=core,allocfrom contract builds (no longer needed on stable). - Replace EVM-flavored test-bridge with a general-purpose test contract that exercises every
#[contract]macro code path without domain-specific types. - Make local forge path overrides opt-in for release builds and harden CLI template/path handling across platforms.
- Make
dusk-forge build data-driverselect the supported project feature (data-driver-jsordata-driver) instead of hardcoding the JS variant.
- Drop the custom data-driver handler escape hatch (
#[contract(custom)]and theencode_input/decode_input/decode_outputattributes). The feature had no production consumers and was the source of recurring macro bugs caused by user code being moved out of its original module and losing its resolution context. Defaultrkyv/ JSON codegen is now the only path.
0.2.2 - 2026-02-02
- Remove external path dependencies from test-bridge (evm-core, tests-setup)
- Add local
typescrate with bridge types for self-contained testing
- Add feature-gate compile_error to the contract macro #3
- Add compile_error for mutually exclusive contract/data-driver features
- Allow associated functions as contract methods #6
- Remove
Cargo.lockfrom version control - Remove outdated design documents (
docs/future-type-introspection.md,docs/poc.rs)
0.2.1 - 2026-01-29
- Add changelog
- Fix hero image path
0.2.0 - 2026-01-29
- Add contract test to macro
- Add support for data-driver generation
- Add support for traits
- Update repository structure
0.1.0 - 2025-01-18
- Add contract macro for #[no_mangle] scaffolding