Skip to content

Add support for ghc-9.6 #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions external-stg-interpreter/lib/Stg/Interpreter.hs
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ import Foreign.Ptr
import Control.Concurrent
import Control.Concurrent.MVar
import qualified Control.Concurrent.Chan.Unagi.Bounded as Unagi
import Control.Monad (forM_, forM, unless, when)
import Control.Monad.State.Strict
import Control.Exception
import qualified Data.Primitive.ByteArray as BA
1 change: 1 addition & 0 deletions external-stg-interpreter/lib/Stg/Interpreter/Base.hs
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@ module Stg.Interpreter.Base where
import Data.Word
import Foreign.Ptr
import Foreign.C.Types
import Control.Monad (unless, forM, forM_)
import Control.Monad.State.Strict
import Data.List (foldl')
import Data.Set (Set)
1 change: 1 addition & 0 deletions external-stg-interpreter/lib/Stg/Interpreter/Debug.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings #-}
module Stg.Interpreter.Debug where

import Control.Monad (forM_, unless)
import qualified GHC.Exts as Exts
import qualified Data.Set as Set
import qualified Data.IntMap as IntMap
1 change: 1 addition & 0 deletions external-stg-interpreter/lib/Stg/Interpreter/Debugger.hs
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
module Stg.Interpreter.Debugger where

import GHC.Stack
import Control.Monad (unless)
import Control.Monad.State
import qualified Data.Set as Set
import qualified Data.Map as Map
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@ module Stg.Interpreter.Debugger.Internal where

import Text.Printf
import qualified Text.Read as Text
import Control.Monad (forM_, unless)
import Control.Monad.State
import qualified Data.List as List
import qualified Data.Set as Set
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
module Stg.Interpreter.Debugger.Region where

import Text.Printf
import Control.Monad (forM_, unless, when)
import Control.Monad.State
import qualified Data.List as List
import qualified Data.Set as Set
3 changes: 2 additions & 1 deletion external-stg-interpreter/lib/Stg/Interpreter/FFI.hs
Original file line number Diff line number Diff line change
@@ -41,6 +41,7 @@ import Data.IntMap (IntMap)
import qualified Data.IntMap as IntMap

import GHC.Stack
import Control.Monad (zipWithM)
import Control.Monad.State.Strict
import Control.Concurrent.MVar

@@ -503,4 +504,4 @@ buildCWrapperHsTypeMap mods = do
liftIO $ do
putStrLn $ "CWrappers:"
forM_ (Map.toList m) $ \(k, v) -> print k >> print v
-}
-}
1 change: 1 addition & 0 deletions external-stg-interpreter/lib/Stg/Interpreter/GC.hs
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
module Stg.Interpreter.GC where

import Text.Printf
import Control.Monad (unless, forM_, when)
import Control.Monad.State
import qualified Data.Map as Map
import Data.IntMap (IntMap)
1 change: 1 addition & 0 deletions external-stg-interpreter/lib/Stg/Interpreter/GC/GCRef.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, FlexibleInstances #-}
module Stg.Interpreter.GC.GCRef where

import Control.Monad (forM_)
import Control.Monad.State
import Foreign.Ptr

Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
module Stg.Interpreter.GC.LiveDataAnalysis where

import GHC.Generics
import Control.Monad (foldM, forM_, unless)
import Control.Monad.State
import qualified Data.IntSet as IntSet
import qualified Data.Map as Map
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings #-}
module Stg.Interpreter.GC.RetainerAnalysis where

import Control.Monad (unless)
import Control.Monad.State
import Data.Set (Set)
import qualified Data.Set as Set
1 change: 1 addition & 0 deletions external-stg-interpreter/lib/Stg/Interpreter/IOManager.hs
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
{-# LANGUAGE QuasiQuotes, TemplateHaskell #-}
module Stg.Interpreter.IOManager where

import Control.Monad (forM_, unless, when)
import Control.Monad.State
import Data.IntMap (IntMap)
import qualified Data.IntMap as IntMap
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms, Strict #-}
module Stg.Interpreter.PrimOp.Addr where

import Control.Monad
import Control.Monad.State
import Data.Char
import Data.Word
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-}
module Stg.Interpreter.PrimOp.ByteArray where

import Control.Monad (when)
import Data.Bits
import Data.Int
import Data.Word
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-}
module Stg.Interpreter.PrimOp.Concurrency where

import Control.Monad
import Control.Monad.State
import qualified Data.ByteString.Char8 as BS8
import qualified Data.IntMap as IntMap
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-}
module Stg.Interpreter.PrimOp.DelayWait where

import Control.Monad
import Control.Monad.State
import Data.Time.Clock
import Data.Fixed
9 changes: 7 additions & 2 deletions external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Double.hs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms, MagicHash, UnboxedTuples, BangPatterns, Strict #-}
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms, MagicHash, UnboxedTuples, BangPatterns, Strict, CPP #-}
module Stg.Interpreter.PrimOp.Double where

import GHC.Word
@@ -123,6 +123,11 @@ evalPrimOp fallback op args t tc = case (op, args) of
( "decodeDouble_Int64#", [DoubleV (D# x)]) -> do
-- NOTE: map back to GHC primop
let !(# a, b #) = decodeDouble_Int64# x
pure [Int64V (I# a), IntV (I# b)]
#if MIN_VERSION_base(4,18,0)
let a' = int64ToInt# a
#else
let a' = a
#endif
pure [Int64V (I# a'), IntV (I# b)]

_ -> fallback op args t tc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-}
module Stg.Interpreter.PrimOp.Exceptions where

import Control.Monad (unless, when)
import Control.Monad.State

import Stg.Syntax
5 changes: 3 additions & 2 deletions external-stg-interpreter/lib/Stg/Interpreter/PrimOp/STM.hs
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
module Stg.Interpreter.PrimOp.STM where

import GHC.Stack
import Control.Monad (forM_, when)
import Control.Monad.State
import Data.IntMap (IntMap)
import qualified Data.IntMap as IntMap
@@ -44,7 +45,7 @@ TODO:
- read paper from 6.1 transaction logs

Q: is there a new tlog entry for each tvar operation or is it one entry per tvar?
A:
A:

Q: what is the difference between STM and SQL transactions?
is it the value sampling?
@@ -500,4 +501,4 @@ primop WriteTVarOp "writeTVar#" GenPrimOp

primop SameTVarOp "sameTVar#" GenPrimOp
TVar# s a -> TVar# s a -> Int#
-}
-}
1 change: 1 addition & 0 deletions external-stg-interpreter/lib/Stg/Interpreter/Rts.hs
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
module Stg.Interpreter.Rts (initRtsSupport, extStgRtsSupportModule, globalStoreSymbols) where

import GHC.Stack
import Control.Monad (forM_)
import Control.Monad.State
import Control.Concurrent.MVar

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-}
module Stg.Interpreter.ThreadScheduler where

import Control.Monad (forM_, when)
import Control.Monad.State
import Data.IntMap (IntMap)
import qualified Data.IntMap as IntMap
18 changes: 18 additions & 0 deletions stack-ghc-9.6.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
resolver: nightly-2023-07-17

packages:
- 'external-stg-syntax'
- 'external-stg'
- 'external-stg-interpreter'
# - 'lambda'
# - 'external-stg-compiler'

extra-deps:
- github: luc-tielen/souffle-haskell
commit: bcd7e3c058c9036d8495cf114520663917b7ac81
- github: david-christiansen/final-pretty-printer
commit: 048e8fa2d8b2b7a6f9e4e209db4f67361321eec8
- inline-c-0.9.1.8@sha256:88ad57e7e08ecdfd18c2468019650aeb0a87da189ecb5891d6873e28162bc46f,3303
- ansi-wl-pprint-0.6.9 # See: https://github.com/fpco/inline-c/issues/144

allow-newer: true