From f5d591994305630487415dfbf22bb819637f4777 Mon Sep 17 00:00:00 2001 From: Steffen Beyer Date: Sat, 4 Apr 2026 13:51:25 +0200 Subject: [PATCH] Parallelize file linting with n-par-map Use Guile's n-par-map from (ice-9 threads) to lint files in parallel, one thread per CPU core. Results are collected per-file then output sequentially to maintain deterministic ordering. Performance on Guix tree (1336 files, 12 cores): Before (sequential) After (parallel) full: 21s full: 14s (1.5x) surface: 15s surface: 8s (1.9x) line: 14s line: 7s (2.0x) --- gulie/engine.scm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/gulie/engine.scm b/gulie/engine.scm index 9b86c2c..ad4ba22 100644 --- a/gulie/engine.scm +++ b/gulie/engine.scm @@ -7,6 +7,7 @@ (define-module (gulie engine) #:use-module (ice-9 ftw) #:use-module (ice-9 textual-ports) + #:use-module (ice-9 threads) #:use-module (srfi srfi-1) #:use-module (gulie diagnostic) #:use-module (gulie rule) @@ -127,14 +128,22 @@ and '%min-severity with value 'error, 'warning, or 'info (default)." (sort diagnostics diagnostic