Fast, portable and reliable dependency analysis for any codebase. Supports license & vulnerability scanning for large monoliths. Language-agnostic; integrates with 20+ build systems.
This PR is to upgrade us to be on GHC 9.8. There are a few reasons I think this is good:
9.8 is still being developed and is considered stable. 9.4 is considered stable and is recommended by ghcup, but will not have any future releases.
Bindists for aarch that are built against musl are officially available starting with GHC 9.8.2. This makes a release for Linux ARM much more doable on GHC 9.8.2 and above than GHC 9.4.
Very few of the changes to GHC or boot libraries seem to affect us day to day. Things that will:
The removal of Alternative instances for Either (docs) which was easily handled because the Semigroup instance for Either behaves the right way.
There is a new compiler warning for partial functions head/tail as proposed here. I've turned these off for our CI builds because we already check for these using hlint to do this in a more refined way. They will be on for developers, but as warnings.
Acceptance criteria
Fossa CLI builds with GHC 9.8 in CI.
All automated tests work.
Testing plan
I used automated testing.
I downloaded the mac intel binary and verified that both embedded binaries not in this repository were callable.
Risks
I don't think there are any that can be addressed further than I have.
[x] I added tests for this PR's change (or explained in the PR description why tests don't make sense).
[x] If this PR introduced a user-visible change, I added documentation into docs/.
[x] If this PR added docs, I added links as appropriate to the user manual's ToC in docs/README.ms and gave consideration to how discoverable or not my documentation is.
[x] If this change is externally visible, I updated Changelog.md. If this PR did not mark a release, I added my changes into an # Unreleased section at the top.
[x] If I made changes to .fossa.yml or fossa-deps.{json.yml}, I updated docs/references/files/*.schema.json AND I have updated example files used by fossa init command. You may also need to update these if you have added/removed new dependency type (e.g. pip) or analysis target type (e.g. poetry).
[x] If I made changes to a subcommand's options, I updated docs/references/subcommands/<subcommand>.md.
Overview
This PR is to upgrade us to be on GHC 9.8. There are a few reasons I think this is good:
Release Notes and 9.4 -> 9.6 migration guide. Release Notes and 9.6 -> 9.8 migration guide.
Very few of the changes to GHC or boot libraries seem to affect us day to day. Things that will:
Alternative
instances forEither
(docs) which was easily handled because theSemigroup
instance forEither
behaves the right way.head
/tail
as proposed here. I've turned these off for our CI builds because we already check for these usinghlint
to do this in a more refined way. They will be on for developers, but as warnings.Acceptance criteria
Testing plan
Risks
I don't think there are any that can be addressed further than I have.
Metrics
References
ANE-1757
Checklist
docs/
.docs/README.ms
and gave consideration to how discoverable or not my documentation is.Changelog.md
. If this PR did not mark a release, I added my changes into an# Unreleased
section at the top..fossa.yml
orfossa-deps.{json.yml}
, I updateddocs/references/files/*.schema.json
AND I have updated example files used byfossa init
command. You may also need to update these if you have added/removed new dependency type (e.g.pip
) or analysis target type (e.g.poetry
).docs/references/subcommands/<subcommand>.md
.