What can be done to reduce executable size?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Dec 16 00:38:09 PST 2011


On 12/16/11 1:12 AM, Jonathan M Davis wrote:
> Simply making it so that std.file is only imported in std.stdio with
> version(unittest) cut off _that_ much?

Yah, but the matter is more complex. The issue is that std.file pulls 
std.datetime, which (a) has static this() code, and (b) pulls core.time, 
which in turn has static this() code.

The issue with that is as follows. Any file that transitively imports a 
module with constructors will have its own module info generated. When 
that happens, all vtables in that module will be instantiated, so all 
methods will be linked in. That in turn causes all functions they call 
to also be linked in.

That's why many programs using std are large.

We can attack this in two ways:

1. Revise and reduce all static this() uses in phobos and druntime;

2. Improve the compiler to do minimal linking when static this() does 
come about.


Andrei


More information about the Digitalmars-d mailing list