Not much of substance happened between rio-0.1.22.0 and rio-0.1.23.0:
but it seems to have provoked something odd:
- rio-0.1.22.0 to 0.1.23.0: GHC now deadlocks on compiling pantry & kmonad · Issue #264 · commercialhaskell/rio · GitHub (this is with GHC 9.4.8)
- rio-0.1.22.0 to rio-0.1.23.0: problem at runtime for built `stack` executable · Issue #6819 · commercialhaskell/stack · GitHub (this is with GHC 9.10.2/9.10.3)
In the second example, the stack executable built against rio-0.1.23.0 (and literally no other changes anywhere) halts (after a little while) with GHC RTS message <<loop>> at runtime.
I have been looking hard at what code changed between rio-0.1.22.0 and rio-0.1.23.0 and can’t figure out what can be the cause. There are two commits that may be of particular interest:
- Accept HLint v3.10 hints for rio package by mpilgrem · Pull Request #259 · commercialhaskell/rio · GitHub EDIT2: This looks like the culprit (by working backwards) - but I do not know why.
- Fix #255 Re-export type operator `~` by mpilgrem · Pull Request #261 · commercialhaskell/rio · GitHub (this should be straightforward: it is the re-export that was recommended by GHC itself) EDIT1: I have now eliminated it, by working backwards.
The accepting of the few HLint v3.10 hints was not done blindly, at the time. The ones I had to think most about were:
return $! Just x
can be replaced by:
return (Just x)
Any suggestions, gratefully received!