On Saturday, 15 July 2017 at 15:58:12 UTC, Jonathan M Davis wrote:
On Saturday, July 15, 2017 11:10:32 Enamex via Digitalmars-d
wrote:
[...]
The issue has to do with how each invocation of a range-based
function tends to result in a new template instantiation, and
it's common practice in D to chain a bunch of templated
function calls together. For instance, if you have
[...]
The type is getting progressively longer and more complicated,
because when the function template is instantiated, it's
instantiated with the type from the previous function call, so
it's wrapping the previous type, and you get a new type that
has the name of the type of its argument embedded in it. It's
like if you keep wrapping a container inside another container.
[...]
- Jonathan M Davis
This was quite insightful, thank you.
All that time I'd assumed that 'symbols' as linkers used them
were constant length :T
Just to be clear: 100% of that bloat resides in the symbol table?
So the current proposed remedy is to hash symbols above a length
threshold?
Besides the symbol problem though, does the template
instantiation explosion problem imply as many duplicated function
bodies corresponding to the new type symbols?