Skip to content

Conversation

@sellout
Copy link
Contributor

@sellout sellout commented Dec 4, 2025

Overview

  • Cabal 3.10.3.0 → 3.12.1.0
  • GHC 9.6.5 → 9.10.3
  • HLS 2.8.0.0 → 2.12.0.0
  • hpack 0.36.0 → 0.38.1
  • Ormolu 0.7.2.0 → 0.8.0.2
  • Stack 2.15.7 → 3.7.1
  • Stackage LTS 22.26 → 24.21
  • Weeder 2.8.0 → 2.10.0
  • many changes to Haskell package versions

Implementation approach and notes

The first six commits are older and do a smaller update, but they also make a few general improvements (eliminating a second Nixpkgs input, sorting the weeds). It’s not worth submitting that as a separate PR, because it would be a lot of work to update the cache twice with extra full rebuilds.

The commits after that follow a similar structure, but do a much more significant update.

Loose ends

This is still a WIP:

  1. the documentation isn’t yet complete,
  2. compilation doesn’t yet succeed – currently there’s an odd state where unison-core1 and unison-sqliteboth complain thattext-builder` is an unused dependency, but when it’s removed, it fails on the actual uses of that package;
  3. the new Weeder hasn’t been run (maybe no changes, but we can’t check until after compilation succeeds).

It might also be good to merge #5914 into this PR – again, to avoid doing another set of full rebuilds.

Pin haskell.nix to a tag, 8 months more recent than the previous one,
but some time before the Stack issue reared its head.
This bumps us to Stack 3.1.1, using hpack 0.37.0. And regenerates all of
the Cabal files.
Without upgrading GHC to a new major version.
This uses the `root-modules` field to hold blessed modules. Two
differences from `roots` are 1. the regex is simpler and 2. it doesn’t
whitelist unexported bindings (although that is _usually_ caught by
`-Wunused-top-binds`). The separate key also makes it easier to visually
distinguish modules from bindings.

Weeder 2.9.0 is much better at finding transitively unused bindings,
which are grandfathered in.

This also fixes the whitelisted `Semigroup` instance regex.
The previous list was in the order Weeder outputs them, but then it was
impossible to integrate new weeds in a reasonable way. This sorts the
entire list.
@github-actions
Copy link

github-actions bot commented Dec 4, 2025

Some tests with 'continue-on-error: true' have failed:

  • Cabal / smoke-test

  • Cabal / smoke-test

  • Cabal / smoke-test

  • Cabal / smoke-test

  • Cabal / smoke-test

    Created by continue-on-error-comment

@sellout sellout force-pushed the updating-toolchain branch 2 times, most recently from 105f68c to c4846c5 Compare December 4, 2025 14:33
- Cabal 3.14.1.1 → 3.12.1.0 (this is a downgrade, but it’s done to match
  the Cabal included with the GHC we’re on)
- GHC 9.6.6 → 9.10.3
- HLS 2.9.0.0 → 2.12.0.0
- hpack 0.37.0 → 0.38.1
- Ormolu 0.7.7.0 → 0.8.0.2
- Stack 3.1.1 → 3.7.1
- Stackage LTS 22.43 → 24.21
- Weeder 2.9.0 → 2.10.0
- many changes to Haskell package versions
With GHC 9.10, `head` now triggers a partiality warning. I took the
opportunity to do some minor refactoring.

- grouping operations now return `NonEmpty` instead of `[]`
- `reverse <$> foldl'` has been replaced by `foldr`
- `groupMap` now makes use of its `Foldable`, rather than immediately
  converting to `[]`
- `validate` now preserves the structure it’s given, rather than making
  it a list
@sellout sellout force-pushed the updating-toolchain branch from c4846c5 to 98a4240 Compare December 4, 2025 14:43
The previous version didn’t support Ormolu 0.8.
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