Async Build Pipeline
Eigen's build pipeline runs asynchronously on the tokio runtime, enabling concurrent page rendering and overlapping HTTP requests.
How It Works
Pages are rendered concurrently using futures::stream::buffer_unordered with a concurrency limit of available_parallelism * 2. Shared state (data cache, asset cache, template engine) is wrapped in Arc<tokio::sync::Mutex<T>> for safe concurrent access.
Concurrency Model
- HTTP requests overlap across pages — while one page waits for a response, others can render or fetch.
- Template rendering is serialized via a mutex on
minijinja::Environment(it'sSendbut notSync). Each render is fast (microseconds), so this is not a bottleneck. - File writes use
tokio::fsfor non-blocking I/O. - CPU-bound work (minification, CSS parsing, image optimization) runs synchronously within async tasks — tokio handles scheduling.
Dev Server
The dev server runs builds natively on the tokio runtime. No spawn_blocking or thread bridging is needed. Dev rebuilds are sequential (single task) since they're fast enough for interactive use.
Configuration
No new configuration is needed. The concurrency limit is automatic.