NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1191 most downloaded on crates.io
Global, no_std-compatible destructors for all platforms that run after main (like C/C++ __attribute__((destructor)))
Last release 1 months ago
09 Aug 2026
Release timing varies
gaps range from 1 weeks to 5 months
Some releases are documented
notes for 14 of 29 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
29 releases · first in 2024
Bumped internal proc macro minimum version (should not result in any downstream visible changes)
crate_path and re-exports by @mmastrac in #514Full Changelog: dtor-1.0.5...dtor-1.0.6
linktime-proc-macro dependency to 0.2.3.crate_path override for re-exporting the macro from another
crate.Bump link-section dependency to 0.18.1.
One column per month.
link-section dependency to 0.18.1.atexit to support Rust 1.96.Bump link-section dependency to 0.18.0.
link-section dependency to 0.18.0.### Fixed - #[dtor] requires significantly less macro recursion.
#[dtor] requires significantly less macro recursion.Support for UEFI targets (.fini_array matching gnu-efi)
.fini_array matching gnu-efi).fini_array for unsupported targets (with a warning)target_vendor = "pc" is now target_os = "windows". This should be a
strictly increasing set of support for windows targets.OpenBSD support uses method = at_module_exit rather than method = linker by default due to C library inconsistencies. When using method = linker, the
method = at_module_exit rather than method = linker
by default due to C library inconsistencies. When using method = linker,
the link_section is now .dtors rather than .fini_array.Stabilized (yay!). Functionally identical to 0.14.1. Thanks to all the contributors who helped along the way! Please file any upgrade issues in .
#[dtor(unsafe)] is now required for #[dtor] items. If you are building a
binary, you can use RUSTFLAGS="--cfg linktime_no_fail_on_missing_unsafe"
(or alternatively, specify this in your config.toml file) to bypass the
error.dtor from their own crates: the
dtor::declarative::dtor! macro should be preferred over
#[dtor(crate_path = ...)]. The latter form will continue to work, but
the declarative macro is far more stable for most use cases. See
https://docs.rs/dtor/latest/dtor/declarative/macro.dtor.html for more
details.wasm32-unknown-unknown would run dtor items on each call of an exported function.
wasm32-unknown-unknown would run dtor items on each call of an exported
function.WASM support now uses atexit on all platforms (including wasm32-unknown-unknown).
atexit on all platforms (including
wasm32-unknown-unknown).Documentation polish and typo fixes.
used_linker feature moved to --cfg linktime_used_linker flag.
used_linker feature moved to --cfg linktime_used_linker flag.Removed support code for ctor's deprecated dtor macros.
#[dtor] on impl items. To be valid, the fn must have no
self parameter and must not access any generic parameters from the outer
item.life before main documentation to all crates.ctor's deprecated dtor macros.Added method attribute to dtor macro.
method attribute to dtor macro.link_section and export_name_prefix attributes to dtor macro.ctor/dtor crates.at_library_exit to at_module_exit in dtor crate.cxa_atexit feature from dtor crate. (appropriate method is now used per-platform)export_native feature from dtor crate. (natives always exported)Included licenses in all files.
dtor crate exports native module with at_binary_exit and at_library_exit functions.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →