BetterC and TypeInfo Question
Mike via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jun 22 19:49:27 PDT 2017
On Friday, 23 June 2017 at 02:14:08 UTC, Adam D. Ruppe wrote:
> Yes, it is necessary, but how much? Can we do it with
> implicitly generated library code?
>
> I'm pretty sure the answer is "not much" and "yes", but I still
> need to ponder the details. I think the typeinfo for a class
> good enough for dynamic cast could be about half the size we
> have now.
>
> Though like I said, a lot of the stuff we have now is cool
> stuff, so I don't want to miss it entirely, it could be behind
> another pointer.
I'm not sure what you have in mind, but TypeInfo in itself is not
bad and has some very useful features even for resource
constrained devices and other niche domains.
The problem is that the current compiler-runtime requires it to
exist just to get a build, even though it's not being used in the
source code (implicitly or otherwise) and has no chance of ever
being executed or referenced in the resulting binary.
Also, TypeInfo has been overused in the compiler-runtime
implementation. For example:
http://forum.dlang.org/post/mrmv61$230i$1@digitalmars.com
The compiler should be able to generate the object code in a way
that allows the linker to discard it, if it can't find anything
that uses it. I think LTO has made such features even more
intelligent.
I'd like to see 3 improvements:
1. The compiler doesn't require TypeInfo to be implemented in
the runtime if the user's code will never make use of it.
2. If TypeInfo is implemented in the runtime, the compiler
generates the object code in a way that permits the linker to
discard it if it can't find a link to it.
3. If only one item is needed out of TypeInfo, pass a reference
to that instead of the entire TypeInfo object in the
compiler-runtime implementation, so implementations can be made
more granular. Or perhaps TypeInfo should be broken up into a
few smaller types.
Mike
More information about the Digitalmars-d-learn
mailing list