In my original design (back when Holmes was still a server) I had multiple processing threads. I think this would be valuable to bring back because:
It may work well as an abstraction (e.g. for #15 by having different threads manage different rules)
It gives an obvious opportunity for a performance gain by running multiple external functions simultaneously
It can be used to provide partial fault tolerance so that if an external function crashes, it doesn't need to bring down the whole Holmes process, just that rule.
It will pave the way for adding server functionality back at the end of the project.
33 removed all the reasons this was a release blocker - it solved #15 with async tasks, and gave the library code the structure it will need to be used as a server. Eventually, we'll want to add true multithreading (partially implemented in maurer/holmes@c899a28e860650f10d0bde0ef73fb1b8f80d1de9 with lifetime errors), but I'm removing it from the release milestone since the release blocking parts are gone.
In my original design (back when Holmes was still a server) I had multiple processing threads. I think this would be valuable to bring back because: