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, der beschleunigten Rust-Engine und der multithreaded Python-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. |
| Python-Engine | "python" |
❌ Nein | Große Repositories, KI/semantische Vektorberechnung, plattformübergreifende Workflows. | Multithreaded File-I/O, Vektor-Quantisierung und Kosinus-Tasks ohne native Binärdateien. |
Konfigurations-Optionen
Konfigurieren Sie Ihre Build-Engine in der docmd.config.json. Setzen Sie den Parameter engine direkt.
{
"title": "Enterprise-Referenz",
"engine": "js",
"src": "docs",
"out": "site"
}
Vollständige Options-Referenz
| Schlüssel | Unterstützte Werte | Standard | Beschreibung |
|---|---|---|---|
engine |
"js", "rust", "python" |
"js" |
Die Ausführungs-Schicht, die File-Discovery, Batch-Reads und Vektor-Tasks verarbeitet. |
Übergeordnete Fähigkeiten & Einschränkungen
Alle 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 oder stdio). 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, während die Python-Engine eine Python-3.8±Installation des Hosts voraussetzt.
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 architekturspezifische native Paket lazy nach (z. B.@docmd/engine-rust-darwin-arm64). Wenn"python"konfiguriert ist, initialisiert sie den persistenten Worker über die Python-3-Laufzeitumgebung des Hosts. - Graceful Fallback: Falls die Binärdatei oder Laufzeitumgebung 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: