haskell / deepseq

Deep evaluation of data structures
http://hackage.haskell.org/package/deepseq
Other
40 stars 29 forks source link

Updated Hackage release to support GHC `9.10`. #101

Open jonathanknowles opened 3 months ago

jonathanknowles commented 3 months ago

Hi there!

Please would it be possible to make an updated release on Hackage to support GHC 9.10.1 and base-4.20.0.0?

I think this should now be possible, given the merge of https://github.com/haskell/deepseq/pull/100.

Many thanks!

meooow25 commented 3 months ago

Since deepseq is a GHC boot library, I'm surprised that the deepseq and base that come bundled with GHC 9.10 are not compatible with each other. Is this supposed to happen?

Edit: I find no problems building a project with GHC 9.10.1 and build-depends: base == 4.20.0.0, deepseq == 1.5.0.0, though clearly deepseq 1.5.0.0 has bounds base >= 4.12 && < 4.20. This is confusing... am I missing something?

mixphix commented 2 months ago

Very frequently the GHC developers pin a fork of this library for internal use, and there is sometimes a discrepancy despite the best efforts of all parties to communicate. The maintenance burden is small and issues are rare; but the work of moving it into the GHC source tree (or base itself) is nontrivial.

meooow25 commented 2 months ago

Sorry, I don't understand what your comment is a response to, especially about moving deepseq into GHC. I just have two questions.

  1. Was it an accident that GHC 9.10 shipped with deepseq 1.5.0.0: base < 4.20? If so, I hope deepseq maintainers and GHC developers will resolve this in whatever manner is best.
  2. How am I able to build a project successfully with supposedly incompatible deepseq and base? If this question cannot be answered here, which is understandable, I will open a GHC issue.
Bodigrim commented 2 months ago
  1. Yes, it was an accident.
  2. That's an expected: since GHC package.db ships with a package called deepseq-1.5.0.0 with base < 4.21, Cabal will reuse it if possible, even though there is no source code counterpart. If you force a rebuild of deepseq from sources (e. g., by pinning a different version of array), it will fail with bounds mismatch.
meooow25 commented 2 months ago

Ah, so GHC 9.10's deepseq-1.5.0.0 is different from the deepseq-1.5.0.0 on Hackage, and has relaxed bounds.

Very frequently the GHC developers pin a fork of this library for internal use...

This also makes sense now. Thanks, that explains it.