7 stable releases

2.1.2 Oct 7, 2024
2.1.0 Aug 23, 2024
1.1.2 Jul 25, 2024
1.1.1 Jun 10, 2024
1.0.0 May 31, 2024

#501 in Debugging

Download history 49/week @ 2025-11-12 38/week @ 2025-11-19 55/week @ 2025-11-26 69/week @ 2025-12-03 114/week @ 2025-12-10 133/week @ 2025-12-17 186/week @ 2025-12-24 66/week @ 2025-12-31 54/week @ 2026-01-07 91/week @ 2026-01-14 83/week @ 2026-01-21 95/week @ 2026-01-28 110/week @ 2026-02-04 82/week @ 2026-02-11 153/week @ 2026-02-18 103/week @ 2026-02-25

473 downloads per month
Used in 6 crates (2 directly)

Apache-2.0 WITH LLVM-exception

385KB
9K SLoC

Overview

undname is a purely Rust-based implementation of a Microsoft symbol demangler. It functions as an alternative to msvc-demangler and Microsoft's own UnDecorateSymbolName. It is closely based off of LLVM's own llvm-undname and boasts competitive performance and better accuracy when compared to existing implementations.

The latest development docs are available at: https://ryan-rsm-mckenzie.github.io/undname-rs/undname/index.html

The stable release docs are available at: https://docs.rs/undname/latest/undname/

Changelogs are available at: https://github.com/Ryan-rsm-McKenzie/undname-rs/releases

Example

use undname::Flags;
let result = undname::demangle("?world@@YA?AUhello@@XZ", Flags::default()).unwrap();
assert_eq!(result, "struct hello __cdecl world(void)");

Dependencies

~0.5–1MB
~20K SLoC