Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.


Contains druntime startup and shutdown routines.
Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)
Walter Bright, Sean Kelly
shared size_t _initCount;
Keep track of how often rt_init/rt_term were called.
int rt_init();
Initialize druntime. If a C program wishes to call D code, and there's no D main(), then it must call rt_init() and rt_term().
int rt_term();
Terminate use of druntime.
alias TraceHandler = TraceInfo function(void* ptr);
Trace handler
void rt_setTraceHandler(TraceHandler h);
Overrides the default trace hander with a user-supplied version.
TraceHandler h The new trace handler. Set to null to use the default handler.
TraceHandler rt_getTraceHandler();
Return the current trace handler
Throwable.TraceInfo _d_traceContext(void* ptr = null);
This function will be called when an exception is constructed. The user-supplied trace handler will be called if one has been supplied, otherwise no trace will be generated.
void* ptr A pointer to the location from which to generate the trace, or null if the trace should be generated from within the trace handler itself.
An object describing the current calling context or null if no handler is supplied.
struct CArgs;
Provide out-of-band access to the original C argc/argv passed to this program via main(argc,argv).
int _d_run_main(int argc, char** argv, MainFunc mainFunc);
Sets up the D char[][] command-line args, initializes druntime, runs embedded unittests and then runs the given D main() function, optionally catching and printing any unhandled exceptions.