{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiahntltgi26boe6j7dsfgq3qydhygc4j33pl5lp3p5b4xhmua74dy",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mffx3nmyudm2"
  },
  "path": "/t/well-typed-blog-reducing-haskell-parallel-build-times-using-semaphores/7211#post_4",
  "publishedAt": "2026-02-21T22:24:56.000Z",
  "site": "https://discourse.haskell.org",
  "tags": [
    "https://github.com/ghc-proposals/ghc-proposals/pull/673"
  ],
  "textContent": "mpilgrem:\n\n> Is there any reason not to use semaphore by default, when it is supported (GHC 9.8.1 or later with Cabal-3.12.0.0 or later)?\n\nOne remaining issue for `cabal-install` is https://github.com/ghc-proposals/ghc-proposals/pull/673. If GHC is built against `libc` (say, it’s a Debian bindist) and Cabal is build against `musl` (say, it’s an Alpine bindist), the underlying implementations of semaphores will be incompatible. In such scenario Cabal fails hard.\n\nThat said, I think that it’s wrong to fail hard and instead a graceful degradation to non-semaphore mode should be implemented. If Stack implements such graceful degradation, there should be no reason not to enable semaphores by default.",
  "title": "[Well-Typed Blog] Reducing Haskell parallel build times using semaphores"
}