Skip to content

chore(haskell): bump toolchain and dependency bounds - #214

Merged
scarmuega merged 1 commit into
utxorpc:mainfrom
carbolymer:haskell-update-ghc-version
Oct 12, 2026
Merged

scarmuega merged 1 commit into
utxorpc:mainfrom
carbolymer:haskell-update-ghc-version

Conversation

@carbolymer

@carbolymer carbolymer commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Refreshes the Haskell side of the codegen pipeline, which was still pinned to GHC 9.6.4, proto-lens-protoc 0.8.0.0 and Stackage lts-22.7.

Changes

gen/haskell (the utxorpc package)

  • Dependency bounds now match Stackage LTS 24, the only versions that build on GHC 9.10 and newer: base >= 4.18, proto-lens >= 0.7.1.7, proto-lens-protobuf-types >= 0.7.2.3, proto-lens-runtime >= 0.7.0.8, all < 0.8.
    Stack users on lts-22 or lts-23 will need extra-deps for these.
  • stack.yaml moves from lts-22.7 to lts-24.60 (GHC 9.10.3).
    Every previous extra-deps entry is in that snapshot, so the list is gone.
    The lock file was regenerated by stack.

CI

  • setup-protoc-hololens is renamed to setup-proto-lens-protoc.
    It now builds the plugin with GHC 9.12.4 and installs proto-lens-protoc 0.9.0.1; both versions are action inputs.
  • The cabal store cache key includes the GHC and plugin versions instead of being the constant cabal-store, so a bump gets a fresh cache.
  • The stack cache key in publish-haskell hashes gen/haskell/stack.yaml.lock; the previous root-relative path hashed nothing, so the key never changed.

Verification

  • Generated the Haskell code for v1, v1alpha and v1beta with proto-lens-protoc 0.9.0.1: 40 modules (14 + 12 + 14), matching exposed-modules exactly in both directions.
  • cabal build of the package with GHC 9.12.4 and the new bounds passes; cabal check reports nothing.
  • cabal install proto-lens-protoc-0.9.0.1 solves on GHC 9.12.4 but not on GHC 9.14.1: proto-lens-protoc pins lens-family < 2.2, and every such release needs containers < 0.8.
    That is why 9.12.4 is the default rather than the latest GHC.

Notes

  • The first CI run compiles proto-lens-protoc from source under the new cache key (roughly 10 to 15 minutes); later runs hit the cache.
  • Generation runs on GHC 9.12.4 while publish-haskell builds with stack on GHC 9.10.3; the two never meet, and the bounds admit both.

…ackage

gen/haskell:
- Raise build-depends to the versions in Stackage LTS 24 and the only
  ones that build on GHC 9.10+: base >= 4.18, proto-lens >= 0.7.1.7,
  proto-lens-protobuf-types >= 0.7.2.3, proto-lens-runtime >= 0.7.0.8
  (now with an upper bound < 0.8).
- Move stack.yaml from lts-22.7 to lts-24.60 (GHC 9.10.3). All previous
  extra-deps are in the snapshot, so the list is gone; lock regenerated.

CI:
- Rename setup-protoc-hololens to setup-proto-lens-protoc.
- Build the plugin with GHC 9.12.4 and install proto-lens-protoc 0.9.0.1
  (was 9.6.4 / 0.8.0.0). Both are action inputs. GHC 9.14 does not solve
  yet: proto-lens-protoc pins lens-family < 2.2, which needs
  containers < 0.8.
- Key the cabal store cache on the GHC and plugin versions instead of a
  constant, and key the stack cache on gen/haskell/stack.yaml.lock; the
  old path hashed nothing.
@carbolymer carbolymer changed the title chore(haskell): bump toolchain and dependency bounds of the utxorpc p… chore(haskell): bump toolchain and dependency bounds Sep 23, 2026
@scarmuega
scarmuega merged commit 8a7a350 into utxorpc:main Oct 12, 2026
7 checks passed
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.

3 participants