Ja, Sie können die Funktionen von DRuntime, die der Compiler erwartet, direkt in Ihrem Hauptmodul (oder wo auch immer) implementieren, ohne Runtime kompilieren und es wird Just Work (tm).
Wenn Sie Ihren Code nur ohne Laufzeitumgebung erstellen, gibt der Compiler Fehler aus, wenn ein Symbol fehlt, von dem erwartet wird, dass es von der Laufzeitumgebung implementiert wird. Sie können dann sehen, wie DRuntime es implementiert, um zu sehen, was es tut, und dann implementieren Sie es in welcher Weise Sie bevorzugen. Dies ist es, was XOmB, der in D geschriebene Kernel (Sprachversion 1, aber gleiches Angebot), tut: Ссылка
Viele DRuntime werden von vielen Anwendungen nicht wirklich benutzt, aber es ist der bequemste Weg, um die Runtime-Komponenten von D in Anwendungen zu integrieren. Aus diesem Grund ist es eine statische Bibliothek (hoffentlich eine gemeinsame Bibliothek in der Zukunft). .
Es ist ziemlich genau dasselbe wie C und C ++, das ich erwarte. Die Sprache selbst kompiliert zu nativem Code und läuft nur. Aber es gibt Code, der immer benötigt wird, um alles einzurichten, um Ihr Programm auszuführen, zum Beispiel die Verarbeitung von Befehlszeilenparametern.
Und einige komplexere Spracheinrichtungen werden besser implementiert, indem man etwas Standardcode aufruft, anstatt den Code überall dort zu erzeugen, wo er benutzt wird. Zum Beispiel muss eine Ausnahme ausgelöst werden, um die relevante Handler-Funktion zu finden. Zweifellos könnte der Compiler den Code dort einfügen, wo er verwendet wurde, aber es ist viel sinnvoller, den Code in eine Bibliothek zu schreiben und diesen aufzurufen. Außerdem gibt es viele vordefinierte Bibliotheksfunktionen in der Standardbibliothek.
Alles zusammengenommen ist die Laufzeit.
Wenn Sie C schreiben, können Sie damit ein Betriebssystem schreiben, weil Sie den Startcode selbst schreiben können, Sie können den gesamten Code für die Speicherzuweisung selbst schreiben, Sie können stattdessen den gesamten Code für Standardfunktionen wie strcat selbst schreiben Verwenden der bereitgestellten in der Laufzeit. Aber Sie möchten das für kein Anwendungsprogramm tun.