amnh / PCG

𝙋𝙝𝙮𝙡𝙤𝙜𝙚𝙣𝙚𝙩𝙞𝙘 𝘾𝙤𝙢𝙥𝙤𝙣𝙚𝙣𝙩 𝙂𝙧𝙖𝙥𝙝 ⸺ Haskell program and libraries for general phylogenetic graph search
28 stars 1 forks source link

Upgrade to GHC-8.10.1 #160

Closed recursion-ninja closed 4 years ago

recursion-ninja commented 4 years ago

The alpha version of ghc-8.10.x is out.

We should test our project's compatibility as early as possible.

We can (currently) build our project with the new compiler on the ghc-8.10 branch.

The only trouble during upgrading was the lens dependency breaking due to changes in the Template Haskell API with ghc-8.10.1. @RyanGIScott was kind enough to help guide us through the issue.

There's a lingering issue with cassava if we want to build the benchmarking suites, but this is a known issue that we're waiting for support on resolving.

recursion-ninja commented 4 years ago

There seems to be a release candidate ghc-8.10.1 coming in the next few weeks.

The issue with the lens dependency has been fixed, but it won't be actionable until after ghc-8.10.1 is released.

The cassava author seems to be doubling down on the convoluted CPP flags as a completely usable and stable and that we were in the wrong for using the --allow-newer flag. I disagree. This is unlikely to be resolved before ghc-8.10.1 is released, so we might have to invest some time in fiddling around with version bounds on various packages.

recursion-ninja commented 4 years ago

master now builds with ghc-8.10.1 by default. It also still builds with ghc-8.8.*. See this merge: feb80755e17e89f1cdbde9a4f98b66cd59db28c4

Previous issues with cassava seem to have been resolved with parsimonious use of the allow-newer field in the cabal.project file.

I had to remedy Travis CI to handle ghc-8.10.1 builds, as there were issues compiling the C++ code with an "old" version of gcc/g++. Since there were no incompatible changes in base between ghc-8.10.1 and ghc-8.8.3, I have set up Travis CI to build our project with both versions of GHC. See this commit: 291b3f09ac1132a214fcdd7b580353033856567b

I also used the new -Wunused-packages flag to prune out extraneous dependencies from our project. See this commit: f8d9f44791c374df61a9d77345861850b506939e