Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

When -N doesn't equal -j, TH continually calls setNumCapabilities
While investigating #22960, I attempted to call GHC with -j > -N. `-j` controls how many modules may be compiled concurrently, while `-N` controls the amount of capabilities. Normally these are the same number, since if you don't explicitly set `-N`, the make driver code will set it to be the same as `-j`. Strangely, the eventlog showed that capabilities would occasionally be created and destroyed. I found that the only other call to `setNumCapabilities` is in `compiler/GHC/Runtime/Interpreter.hs`. It looks like `createBCO` has a slightly different copy of the capability logic found in the driver. Unlike the driver code it also changes the capability count even if `-N` has been manually set. `createBCO` is called while evaluating TH, so that explains the behaviour I was seeing. A fix would be to harmonise the logic with what we have in the driver, but I'm confused why this code is calling `setNumCapabilities` at all. `setNumCapabilities` seems a bit heavy-weight to call in a function like this. I think the `setNumCapabilities` logic should be removed from `createBCO` altogether. According to `git blame` it was introduced to speed up remote TH. So, maybe it needs to be moved somewhere else on the remote TH side. I'd be happy to make an MR
issue