Would Lcl be better if it was in D?

weaselcat via Digitalmars-d digitalmars-d at puremagic.com
Sun Mar 1 18:46:27 PST 2015


On Monday, 2 March 2015 at 01:22:58 UTC, ketmar wrote:
> On Sun, 01 Mar 2015 22:40:28 +0000, Taylor Hillegeist wrote:
>
>> But still the question was about smaller executable when 
>> compiling d
>> code. The linker needs to know which .o files to include, the 
>> pascal
>> notation is basically:
>> 
>> uses
>>   thisBigoleThing, ThisOtherBigOleThing, AndMeToo;
>> 
>> I assume the linker just auto-magically includes the entire 
>> thing even
>> if your only using a single function or value from each. Then 
>> again
>> perhaps I am wrong.
>
> FreePascal learnt the "smart linking" trick years ago, so only 
> actually
> used functions ends in linked binary. but LCL is very big 
> library, and FPC
> can't drop out unused virtual methods, so resulting binaries 
> are big.
>
> with D we have the same situation, maybe even worse due to 
> template
> instantiation. compiler is able to merge identical template 
> instanses,
> but... empty `void main () {}` is ~200 KB in D (GNU/Linux, 
> x86). adding
> simple `import std.stdio : writeln;` increases binary size to 
> ~300 KB.
> and adding `writeln("hello!");` increases binary size to ~350 
> KB.
>
> D binaries are big. ;-)

LDC + dynamic linking gets pretty tiny binaries, C binaries 
aren't all that small if you static link in glibc ;)


More information about the Digitalmars-d mailing list