Final bikeshedding call: Fixing Control.Exception.bracket

Merijn Verstraaten merijn at inconsistent.nl
Thu Nov 13 03:45:28 UTC 2014


> On 12 Nov 2014, at 19:25, Gregory Collins <greg at gregorycollins.net> wrote:
> We have traditionally been very cavalier in the Haskell community about gratuitously changing APIs in ways that break user code, and in my opinion this is very bad and creates a perception for users that choosing Haskell is just going to end up creating work for them. In this regard I think it's very good to be conservative -- this function has been documented to behave in a certain way and you can be sure that somebody, somewhere relies on that behavior.

Sure, and I agree this is bad, but at the same time I feel there are for more people currently susceptible to resource leaks and invariant failures due to code that is not properly async exception safe.

I'm off the opinion this change fixes more code than it breaks and the breakage it does cause is easier to track down than the code that is currently broken.

> Normally I argue strongly for this perspective (because it feels like few people do) on less serious things like changing function types or names, because those things break builds and cause people to scramble to restore their libraries to compatibility all at once after the GHC release. The consequences of this particular change, however, have the potential to be a lot worse than just making busywork for people: programs will silently continue to compile and then start deadlocking in mysterious (and likely rare/"race-condition-y") ways.

I don't feel this is likely, but perhaps you're right and we should investigate package and see what the current use is.

Cheers,
Merijn


More information about the Libraries mailing list