Skip to content

testsuite: use concurrent.futures.ThreadPoolExecutor in the driver

Cheng Shao requested to merge type-dance/ghc:testsuite-driver-threadpool into master

The testsuite driver used to create one thread per test case, and explicitly use semaphore and locks for rate limiting and synchronization. This is a bad practice in any language, and occasionally may result in livelock conditions (e.g. #22889 (closed)). This patch uses concurrent.futures.ThreadPoolExecutor for scheduling test case runs, which is simpler and more robust.

Merge request reports