* This has nothing to do with name mangling. Yes and no, these things are coupled. We can improve the situation by forcing the size of mangled and demangled symbols to be < threshold, eg `ldc -hash-threshold` would be 1 option.
example: current mangled: _D8analysis3run__T9shouldRunVAyaa20_666c6f61745f6f70657261746f725f636865636bZQChFQCaKxSQDh6config20StaticAnalysisConfigZ__T9__lambda4TQEbZQpFNaNbNiNfQEqZQEu current demangled: pure nothrow @nogc @safe immutable(char)[] analysis.run.shouldRun!("float_operator_check").shouldRun(immutable(char)[], ref const(analysis.config.StaticAnalysisConfig)).__lambda4!(immutable(char)[]).__lambda4(immutable(char)[]) with a small threshold: mangled: _D8analysis3run__T9shouldRunℂ0abf2284dd3 demangled: pure nothrow @nogc @safe immutable(char)[] analysis.run.shouldRun.ℂ0abf2284dd3 The `ℂ` symbol indicating hashing was applied because symbol size exceed threshold. The demangled version also would have that. A separate file (dmd -mangle_map=file) could be produced in the rare case a user wants to see the full 17KB mangled and demangled symbols mapped by ℂ0abf2284dd3 On Sat, Jan 27, 2018 at 3:12 PM, H. S. Teoh via Digitalmars-d <digitalmars-d@puremagic.com> wrote: > On Sat, Jan 27, 2018 at 09:22:07PM +0000, timotheecour via Digitalmars-d > wrote: > [...] >> ``` >> 28 dscanner 0x000000010d59f428 @safe void >> std.getopt.getoptImpl!(std.getopt.config, immutable(char)[], bool*, >> immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], >> bool*, immutable(char)[], bool*, immutable(char)[], bool*, >> immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], >> bool*, immutable(char)[], bool*, immutable(char)[], bool*, >> immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], >> bool*, immutable(char)[], bool*, immutable(char)[], immutable(char)[]*, >> immutable(char)[], immutable(char)[]*, immutable(char)[], bool*, >> immutable(char)[], immutable(char)[][]*, immutable(char)[], bool*, >> immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], >> bool*).getoptImpl(ref immutable(char)[][], ref std.getopt.configuration, ref >> std.getopt.GetoptResult, ref std.getopt.GetOptException, >> void[][immutable(char)[]], void[][immutable(char)[]], std.getopt.config, >> immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], >> bool*, immutable(char)[], bool*, immutable(char)[], bool*, >> immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], >> bool*, immutable(char)[], bool*, immutable(char)[], bool*, >> immutable(char)[], bool*, immutable(char)[], bool*, immutable(char)[], >> bool*, immutable(char)[], bool*, immutable(char)[], bool*, >> immutable(char)[], immutable(char)[]*, immutable(char)[], >> immutable(char)[]*, immutable(char)[], bool*, immutable(char)[], >> immutable(char)[][]*, immutable(char)[], bool*, immutable(char)[], bool*, >> immutable(char)[], bool*, immutable(char)[], bool*) + 460 >> ``` >> >> https://dlang.org/blog/2017/12/20/ds-newfangled-name-mangling/ doesn't >> seem to help in cases like that > > This has nothing to do with name mangling. The mangling itself may be > relatively small (and probably is, judging from the amount of repetition > in the signature above), but what you're looking at is the *demangled* > identifier. That's going to be big no matter what, unless we > fundamentally change the way getopt() is implemented. > > I proposed a compile-time introspected getopt() replacement before, only > to get laughed at by Andrei. So I guess that means, don't expect to see > that in Phobos anytime soon. But I might post the code on github > sometime for those who would benefit from it. Basically, instead of > taking a ridiculously long argument list, you create a struct whose > members (together with some UDAs) define what the options are, any > associated help text, etc., and just call it with the struct type as > argument. It does its thing, and returns the struct populated with the > values retrieved from the command-line. There are a few more features, > but that's the gist of it. > > > T > > -- > There is no gravity. The earth sucks.