Engines-Übersicht
Der Compiler verfügt über eine hochmodulare, mehrfädige Pluggable Engine Architecture. Sie entkoppelt Orchestrierung von Berechnungs-Tasks, um schwere Workloads effizient auszuführen.
Wählen Sie zwischen der Zero-Config-JavaScript-Engine und der beschleunigten Rust-Engine. Wählen Sie die Engine basierend auf Repository-Größe, Plattform und Performance-Anforderungen.
Verfügbare Engines
| Engine | Identifier | Standard | Ziel-Anwendungsfall | Kernstärke |
|---|---|---|---|---|
| JavaScript-Engine | "js" |
✅ Ja | Standard-Websites, schnelles lokales Prototyping, Portabilität. | Läuft universell auf jedem Gerät mit Node.js-Unterstützung. |
| Rust-Engine (Preview) | "rust" |
❌ Nein | Massive Repositories (1.000+ Dateien), Enterprise-CI/CD-Builds. | Maximiert parallelen File-I/O über Tokio. |
Konfigurations-Optionen
Konfigurieren Sie Ihre Build-Engine in der docmd.config.json. Setzen Sie den Parameter engine direkt.
docmd.config.json
{
"title": "Enterprise-Referenz",
"engine": "js",
"src": "docs",
"out": "site"
}
Vollständige Options-Referenz
| Schlüssel | Unterstützte Werte | Standard | Beschreibung |
|---|---|---|---|
engine |
"js", "rust" |
"js" |
Die Ausführungs-Schicht, die File-Discovery und Batch-Reads verarbeitet. |
Übergeordnete Fähigkeiten & Einschränkungen
Beide Engines teilen sich eine rigorose Ausführungs-Grenze. Die Kern-API-Schicht erzwingt einheitliche Sicherheit und deterministische Ausgabe.
Geteilte Fähigkeiten
- Thread-Isolation: Engines führen asynchrone Tasks sicher in isolierten Worker-Threads aus. Das verhindert das Blockieren der primären Server-Schleife.
- Task-Verifikation: Strenge Allowlists verhindern unautorisierten Disk-Zugriff oder unverifizierte Ausführungs-Muster.
- Nahtlose Interoperabilität: Plugins fordern Daten über standardisierte Schnittstellen (
runWorkerTask) an. Sie bleiben sich des zugrundeliegenden Backends nicht bewusst.
Architektonische Einschränkungen
- Serialisierungs-Overhead: Daten überqueren native Runtime-Grenzen (N-API). Hochiterative Tasks, die große JSON-Objekte übergeben, haben einen kleinen Serialisierungs-Overhead.
- Binärkompatibilität: Die JavaScript-Engine läuft nativ überall. Die Rust-Engine ist auf OS-spezifische Plattform-Binaries angewiesen, die über npm verteilt werden.
Wie der Engine-Loader funktioniert
Wenn @docmd/core startet, prüft der interne Loader Ihre aktive Konfiguration:
- Auflösung: Wenn
"rust"konfiguriert ist, lädt die Engine das architektur-spezifische native Paket lazy nach (z. B.@docmd/engine-rust-darwin-arm64). - Graceful Fallback: Falls die Binärdatei fehlt oder nicht unterstützt wird, loggt die Engine einen Hinweis. Dann fällt sie transparent auf die JavaScript-Engine zurück. Ihr Build gelingt immer.
Erkunden Sie die Deep-Dive-Dokumentation für jede Engine: