Programs in D are huge
Dennis
dkorpel at gmail.com
Tue Aug 16 08:49:31 UTC 2022
On Tuesday, 16 August 2022 at 08:25:18 UTC, Diego wrote:
> It seams huge in my opinion for an empty program
>
> What are the best practices to reduce the size?
The problem is that the druntime, the run time library needed to
support many D features, is large and linked in its entirety by
default. The linker could strip unused functions, but even in an
empty program, a lot is done before `main` that pulls in most of
it:
- initializing floating point settings, signal handlers, stdout
and stderr
- parsing --DRT command line options for configuring the Garbage
Collector
- running module constructors / unit tests
There is a goal to make druntime more 'pay as you go' so these
things only happen when they're needed, but progress is slow. In
the mean time, if you can live without a lot of D features that
require the runtime, you can use `-betterC`:
https://dlang.org/spec/betterc.html
With the LDC2 compiler, you can use `--link-defaultlib-shared`,
so your program dynamically links with the run time library. This
doesn't help for a single D program, but multiple D programs can
reuse a single shared library.
Finally, you could look at customized versions of the runtime,
such as Light Weight D Runtime: https://github.com/hmmdyl/LWDR
More information about the Digitalmars-d-learn
mailing list