# Changelog
All notable changes to this project will be documented in this file.
The project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased]
## 0.3.0 - 2026-07-19
*(All changes are relative compared to [the 0.3.0-beta.1 release](#030-beta1---2024-09-29))*
### Added
- Implement `PartialEq`, `Eq` and `Hash` traits for `Resource`s based on (externref) pointer comparison.
- Implement copyable resources by customizing `Resource` drop logic (via another type param). These resources
do not execute *any* logic on drop.
- **macro:** Allow marking arguments and return types of transformed functions as resources / not resources
via the `#[resource]` attribute. (To signal that an argument or return type is not a resource, one may use
`#[resource = false]` or `#[resource(false)]`.)
- Support stubbing for non-WASM targets via `#[externref(stubs)]` attribute.
### Changed
- Bump minimum supported Rust version to 1.85 and switch to 2024 Rust edition.
### Fixed
- Fix `take_raw` dropping the externref before resolving it.
- Fix compatibility of the generated code with the 2024 Rust edition.
## 0.3.0-beta.1 - 2024-09-29
### Added
- Support `no_std` compilation mode for the library.
- Explain guard detection errors and provide more specific instructions on how to avoid them
(e.g., use `debug = 1` in the profile config).
### Changed
- Bump minimum supported Rust version to 1.82.
## 0.2.0 - 2023-06-03
### Added
- Support upcasting and downcasting of `Resource`s.
- Support expressions in `link_name` / `export_name` attributes, such as
`#[export_name = concat("prefix_", stringify!($name))]` for use in macros (`$name`
is a macro variable). Previously, only string literals were supported.
- Support re-exporting the crate by adding an optional `crate` parameter
to the `#[externref]` attribute, e.g. `#[externref(crate = "other_crate::_externref")]`
where `other_crate` defines `pub use externref as _externref`.
- **CLI:** add a command-line application for transforming WASM modules, and the Docker image
with this application.
### Changed
- **Macro:** update `syn` dependency to 2.0.
- Bump minimum supported Rust version to 1.66.
### Fixed
- Fix an incorrect conditional compilation attribute for a tracing event
in the processor module.
- Fix / document miscompilation resulting from optimization tools inlining
an `externref`-operation function. The processor now returns an error
if it encounters such an inlined function, and the docs mention how to avoid
inlining (do not run WASM optimization tools before the `externref` processor).
## 0.1.0 - 2022-10-29
The initial release of `externref`.