Skip to content

Migrate to ghc-lib-parser to build on GHC 9.10#41

Open
kqr wants to merge 1 commit into
rubik:masterfrom
kqr:migrate-to-ghc-lib-parser-to-build-on-ghc-9
Open

Migrate to ghc-lib-parser to build on GHC 9.10#41
kqr wants to merge 1 commit into
rubik:masterfrom
kqr:migrate-to-ghc-lib-parser-to-build-on-ghc-9

Conversation

@kqr

@kqr kqr commented Jun 15, 2026

Copy link
Copy Markdown

The main potential objection to this change is that it cannot use GHC for parsing CPP, but uses cpphs instead. The cpphs library is apparently somewhat more lenient and will skip past minor syntax errors such as skipping missing includes and unterminated ifs. This means complexity will be calculated slightly differently in files where that is the case. A test definition has been changed to mirror this difference.

The upgrade to GHC 9 also forces smaller rewrites to get rid of old dependencies (dirstream, lens-simple) that likewise don't build on modern GHC versions – these are small and self-contained in Walker.hs and Results.hs.

The build system has switched from Stack to Cabal, mostly because that's what I have and know. I wouldn't know how to upgrade the Stack bits so I dropped them instead. Unfortunately, the CI tooling implied by .travis.yml also depends on Stack, so someone may want to reinstate it.

@kqr

kqr commented Jun 15, 2026

Copy link
Copy Markdown
Author

I suppose the main difference between this and #40 is that in this PR I deliberately tried to keep changes minimal. I think other improvements (cleanup, nixifying, etc.) can be done separately.

The main potential objection to this change is that it cannot use GHC for
parsing CPP, but uses cpphs instead. The cpphs library is apparently somewhat
more lenient and will skip past minor syntax errors such as skipping missing
includes and unterminated ifs. This means complexity will be calculated slightly
differently in files where that is the case. A test definition has been changed
to mirror this difference.

The upgrade to GHC 9 also forces smaller rewrites to get rid of old
dependencies (dirstream, lens-simple) that likewise don't build on modern GHC
versions – these are small and self-contained in Walker.hs and Results.hs.

The build system has switched from Stack to Cabal, mostly because that's what I
have and know. I wouldn't know how to upgrade the Stack bits so I dropped them
instead. Unfortunately, the CI tooling implied by .travis.yml also depends on
Stack, so someone may want to reinstate it.
@kqr kqr force-pushed the migrate-to-ghc-lib-parser-to-build-on-ghc-9 branch from 598ff05 to e1925d6 Compare June 16, 2026 11:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant