125 stable releases (11 major)

new 12.13.1 Jan 9, 2025
12.12.4 Dec 18, 2024
12.12.3 Nov 26, 2024
12.10.0 Jul 24, 2024
1.1.5 Dec 2, 2017

#25 in Debugging

Download history 138876/week @ 2024-09-20 134607/week @ 2024-09-27 137509/week @ 2024-10-04 138510/week @ 2024-10-11 150430/week @ 2024-10-18 140754/week @ 2024-10-25 131210/week @ 2024-11-01 145251/week @ 2024-11-08 165166/week @ 2024-11-15 132875/week @ 2024-11-22 147411/week @ 2024-11-29 162229/week @ 2024-12-06 153737/week @ 2024-12-13 60925/week @ 2024-12-20 61505/week @ 2024-12-27 140419/week @ 2025-01-03

449,052 downloads per month
Used in 238 crates (14 directly)

MIT license

585KB
14K SLoC

C++ 12K SLoC // 0.0% comments Rust 2K SLoC // 0.0% comments Python 97 SLoC // 0.0% comments

Build Status

symbolic-demangle

Demangling support for various languages and compilers.

Currently supported languages are:

  • C++ (GCC-style compilers and MSVC)
  • Rust (both legacy and v0)
  • Swift (up to Swift 5.2)
  • ObjC (only symbol detection)

As the demangling schemes for the languages are different, the supported demangling features are inconsistent. For example, argument types were not encoded in legacy Rust mangling and thus not available in demangled names.

This module is part of the symbolic crate and can be enabled via the demangle feature.

Examples

use symbolic::common::{Language, Name};
use symbolic::demangle::{Demangle, DemangleOptions};

let name = Name::new("__ZN3std2io4Read11read_to_end17hb85a0f6802e14499E");
assert_eq!(name.detect_language(), Language::Rust);
assert_eq!(name.try_demangle(DemangleOptions::default()), "std::io::Read::read_to_end");

License: MIT

Dependencies

~355–600KB
~11K SLoC