Some build systems have ways to express constraints on parallelism besides the number of threads -- e.g. Ninja's pools or Shake's resources. It would be trivial to implement this with semaphores, but I want to do better: add a way to annotate tasks with the resources they require so the scheduler can take it into account before they are run.
It might also be useful to annotate tests with some idea of (relative) length so we can do makespan minimization even without timing information from previous builds. Even if it's just a :slow flag.
Some build systems have ways to express constraints on parallelism besides the number of threads -- e.g. Ninja's pools or Shake's resources. It would be trivial to implement this with semaphores, but I want to do better: add a way to annotate tasks with the resources they require so the scheduler can take it into account before they are run.