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.


Written in the D programming language. Module initialization routines.
Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)
Walter Bright, Sean Kelly

Source rt/minfo.d

struct ModuleGroup;
A ModuleGroup is an unordered collection of modules. There is exactly one for:
  1. all statically linked in D modules, either directely or as shared libraries
  2. each call to rt_loadLibrary()
nothrow void sortCtors(string cycleHandling);

void sortCtors();
Allocate and fill in ctors[] and tlsctors[]. Modules are inserted into the arrays in the order in which the constructors need to be run.
Exception if it fails.
int moduleinfos_apply(scope int delegate(immutable(ModuleInfo*)) dg);
Iterate over all module infos.
void rt_moduleCtor();
Module constructor and destructor routines.
void rt_moduleTlsCtor();
Module constructor and destructor routines.
void rt_moduleTlsDtor();
Module constructor and destructor routines.
void rt_moduleDtor();
Module constructor and destructor routines.
void runModuleFuncs(alias getfp)(const(immutable(ModuleInfo)*)[] modules);