On Tuesday, 2 May 2017 at 23:27:28 UTC, Marco Leise wrote:
Am Tue, 02 May 2017 20:53:50 +0000
schrieb Moritz Maxeiner <[email protected]>:
On Tuesday, 2 May 2017 at 19:34:44 UTC, Marco Leise wrote:
>
> I see what you're doing there, but your last point is
> wishful thinking. Dynamically linked binaries can share
> megabytes of code. Even Phobos - although heavily templated
> - has proven to be very amenable to sharing. For example, a
> "Hello world!" program using `writeln()` has these sizes
> when compiled with `dmd -O -release -inline`:
>
> static Phobos2 : 806968 bytes
> dynamic Phobos2 : 18552 bytes
>
> That's about 770 KiB to share or 97.7% of its total size!
> Awesome!
Is all of that active code, or is some of that (statically
knowable) never getting executed (as in could've been removed
at compile/link time)?
I guess David gave you the answer. So it's just 95.4% of its
total size. :p
Under the assumption that ldc2 produces no dead code in the
output; is that a reasonable assumption (I'm not sure)?
By the way, is the fully dynamic linking version possible with
ldc2 now as well ?
I did have a modified ebuild to try that out a while back and it
seemed to work fine in my limited testing scope. Since I quite
often change installed d compilers and don't want my programs
(like tilix) to stop working (or have old d compiler versions
being kept installed *just* because some programs were built with
them), I generally link against phobos statically, anyway, so I
my tests weren't exhaustive. The cmake flag to to use in the
ebuild would be BUILD_SHARED [1].
[1]
https://github.com/ldc-developers/ldc/blob/v1.2.0/CMakeLists.txt#L522