D言語では、モジュール内にstatic this(){}
関数が使えるのですがこれをうまく使うと
リンクするかしないかだけでアプリケーションに機能追加をすることができます。
こんな感じです。

//plugin.d
module plugin;
class Plugin{
  void plugin(){printf("plugin");}
}
Plugin[char[]] plugins;
static this(){
  plugins["Plugin"]=new Plugin();
}
void main(){
  foreach(Plugin p;plugins){
    p.plugin();
  }
}

dmd plugin.d

plugin
//plugin2.d
class Plugin2{
  void plugin(){printf("plugin2");}
}
static this(){
  plugins["Plugin2"]=new Plugin2();
}

dmd plugin.d plugin2.d

plugin
plugin2

ファイル読み込み部を最終リリース版では、スタティックなデータにしたり、いろいろできそうです。