-
Notifications
You must be signed in to change notification settings - Fork 56
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This PR updates the stackage LTS resolver to `nightly-2024-02-06` which uses GHC 9.8.1 ## Upgrade notes You will need to update your HLS to [2.6.0.0](https://github.com/haskell/haskell-language-server/releases/tag/2.6.0.0), this release contains support for GHC 9.8.1 ## Fixes ### `haskeline` / `repline` We have removed the custom haskeline / repline forks used in the build. This is because we had trouble overriding haskeline as it is bundled with GHC and the stackage resolver uses this bundled version. We were using a custom fork of haskeline to implement [mapInputT_](https://github.com/anoma/juvix/blob/15c0685c911a7ce3d2ee8c1597a1e6dd96e707bf/app/Commands/Repl.hs#L409) in the Juvix REPL, required to implement error handling. This requires private API from the Haskeline library. Instead of using a custom fork we use TemplateHaskell to obtain access to the private API we need. See [DarkArts.hs](https://github.com/anoma/juvix/blob/15c0685c911a7ce3d2ee8c1597a1e6dd96e707bf/src/Juvix/Prelude/DarkArts.hs) and [HaskelineJB.hs](https://github.com/anoma/juvix/blob/15c0685c911a7ce3d2ee8c1597a1e6dd96e707bf/app/HaskelineJH.hs). To obtain access to the private API, we adapted a method from [a Tweag blogpost](https://www.tweag.io/blog/2021-01-07-haskell-dark-arts-part-i/) and [repo](https://github.com/tweag/th-jailbreak) - updating it for GHC 9.8.1. ### `aeson-better-errors` The `aeson-better-errors` library has not been updated to work with `mtl-2.3.0` so it cannot work with the new stackage resolver. We are using a [fork](https://github.com/Vekhir/aeson-better-errors.git) which has been updated. We should consider replacing this library in future, see #2621 ### `path` The `path` library now includes API `splitDrive` and `dropDrive` so we can remove our versions of those functions from the prelude. ### `with-utf8` We no longer need to depend on `with-utf8`. We were using this package for UTF-8 versions of `readFile` and `writeFile` APIs. These APIs are now available in the `text` package. ### Compiler warnings GHC 9.8.1 introduces several new compiler warnings. * We have suppressed `missing-role-annotations` and `missing-poly-kind-signatures` * We added our own versions of `head` and `tail` to work around the new `partial-tx` warning introduced for those functions in `Data.List`. * We fixed up the code to avoid the [term-variable-capture](https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html#ghc-flag--Wterm-variable-capture) warning.
- Loading branch information
1 parent
795212b
commit 13f64af
Showing
24 changed files
with
1,068 additions
and
1,179 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
module HaskelineJB where | ||
|
||
import Control.Monad.Trans.Reader | ||
import GHC.IORef | ||
import Juvix.Prelude.DarkArts | ||
import System.Console.Haskeline | ||
import System.Console.Repline | ||
|
||
type InputTArg m a = | ||
ReaderT | ||
RunTerm | ||
( ReaderT | ||
(IORef History) | ||
( ReaderT | ||
(IORef KillRing) | ||
( ReaderT | ||
Prefs | ||
(ReaderT (Settings m) m) | ||
) | ||
) | ||
) | ||
a | ||
|
||
type KillRing = $(importHiddenConT "haskeline" "System.Console.Haskeline.Command.KillRing" "KillRing") | ||
|
||
type RunTerm = $(importHiddenConT "haskeline" "System.Console.Haskeline.Term" "RunTerm") | ||
|
||
type History = $(importHiddenConT "haskeline" "System.Console.Haskeline.History" "History") | ||
|
||
unInputT :: InputT m a -> InputTArg m a | ||
unInputT = $(importHiddenField "InputT" "haskeline" "System.Console.Haskeline.InputT" "unInputT") | ||
|
||
mkInputT :: InputTArg m a -> InputT m a | ||
mkInputT = $(importHiddenCon "haskeline" "System.Console.Haskeline.InputT" "InputT") | ||
|
||
unHaskelineT :: HaskelineT m a -> InputT m a | ||
unHaskelineT = $(importHiddenField "HaskelineT" "repline" "System.Console.Repline" "unHaskeline") | ||
|
||
mkHaskelineT :: InputT m a -> HaskelineT m a | ||
mkHaskelineT = $(importHiddenCon "repline" "System.Console.Repline" "HaskelineT") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.