Seeking feedback on language editions proposal

Thank you for working on this! I contribute to a large-ish haskell codebase, and upgrading GHC seems to always take a signficant chunk of time, regardless of how I approach it. My perspective is that I want older libraries that used to compile to continue to compile, as long as their dependencies remain compatible.

Here is an example of a silly thing I have to fix - head and tail are deprecated in 9.8 as they are partial (or they give a new warning, at least). One of my dependent libraries (which I don’t control) now fails to compile because it has -Werrors and -Wall enabled. Fortunately I can override cabal options and turn off -Werrors, but that isn’t the point. Code that used to compile now fails to compile.

The value I see from this proposal is to reduce the maintenance burden when I update my code to use new GHC, independent of choices made by library authors.

My pain updating to a new GHC isn’t updating my own code - its getting the 100s of dependencies to compile. In 99% of the cases, that is just relaxing cabal version restrictions (which is pretty fast). In 99% of the other cases, its adding or removing an import. In the remaining cases, its very dependent - sometimes finding where a function moved to (in the case of Control.Monad with 9.8), or even rewriting functionality that no longer exists (mtl stopped exporting some strict writer stuff I had to shim in).

Someone posted here from the perspective of a library author. I am posting from the perspective of a library consumer.

Thank you for your hard work!

5 Likes