#symbolication #demangle #symbolic #objective-c #compiler

symbolic-demangle

A library to demangle symbols from various languages and compilers

93 stable releases (9 major)

Uses new Rust 2021

new 10.2.1 Dec 5, 2022
10.2.0 Nov 29, 2022
10.1.1 Oct 31, 2022
9.2.1 Sep 30, 2022
1.1.5 Dec 2, 2017

#32 in Development tools

Download history 35640/week @ 2022-08-15 33520/week @ 2022-08-22 34006/week @ 2022-08-29 35369/week @ 2022-09-05 38089/week @ 2022-09-12 41470/week @ 2022-09-19 35979/week @ 2022-09-26 37549/week @ 2022-10-03 44586/week @ 2022-10-10 46421/week @ 2022-10-17 40791/week @ 2022-10-24 44713/week @ 2022-10-31 41253/week @ 2022-11-07 38016/week @ 2022-11-14 32998/week @ 2022-11-21 33588/week @ 2022-11-28

148,357 downloads per month
Used in 69 crates (7 directly)

MIT license

595KB
15K SLoC

C++ 13K SLoC // 0.0% comments Rust 1.5K SLoC // 0.0% comments Python 96 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

~305–485KB