hbf 0.1.0.2 → 0.2.0.0
raw patch · 9 files changed
+23/−18 lines, 9 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- HBF.Compiler: instance Data.Semigroup.Semigroup HBF.Compiler.FusedProgram
- HBF.Types: instance Data.Semigroup.Semigroup (HBF.Types.Program o)
- HBF.Types: instance GHC.Base.Monad m => HBF.Types.MachineIO (Control.Monad.Trans.State.Lazy.StateT HBF.Types.MockIO m)
+ HBF.Compiler: instance GHC.Base.Semigroup HBF.Compiler.FusedProgram
+ HBF.Types: instance GHC.Base.Monad m => HBF.Types.MachineIO (Control.Monad.Trans.State.Strict.StateT HBF.Types.MockIO m)
+ HBF.Types: instance GHC.Base.Semigroup (HBF.Types.Program o)
- HBF.Compiler: data ParseError :: *
+ HBF.Compiler: data ParseError
- HBF.Parser: data ParseError :: *
+ HBF.Parser: data ParseError
Files
- ChangeLog.md +5/−0
- bench/Main.hs +1/−1
- hbf.cabal +3/−3
- src/HBF/Compiler.hs +1/−1
- src/HBF/Types.hs +1/−1
- tests/CompilerTest.hs +1/−3
- tests/EvalTest.hs +3/−3
- tests/Helper.hs +6/−3
- tests/IntegrationTests.hs +2/−3
ChangeLog.md view
@@ -11,3 +11,8 @@ ## 0.1.0.2 -- 2018-06-26 Minor changes to README and travis script++## 0.2.0.0 -- 2018-07-04++ - Use strict StateT for tests.+ - Fix hpack escape for ghc-options
bench/Main.hs view
@@ -1,6 +1,6 @@ module Main where -import Control.Monad.Trans.State (execStateT)+import Control.Monad.Trans.State.Strict (execStateT) import Criterion.Main import qualified Data.Text.Lazy.IO as TIO import System.FilePath (takeBaseName)
hbf.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: d0a2bab316b8254089629b690ac242bffc13bc51cd5d53ff8037f99af9ce20ce+-- hash: 56df657de174d194d56b8c72e4f4d3b87fce264c956fe1ac7899735a657145e7 name: hbf-version: 0.1.0.2+version: 0.2.0.0 cabal-version: >= 1.10 build-type: Simple license: GPL-3@@ -91,7 +91,7 @@ , transformers >=0.5.2.0 , vector >=0.12.0.1 if flag(profile)- ghc-options: -fprof-auto -with-rtsopts='-p -s -h -i0.05'+ ghc-options: -fprof-auto "-with-rtsopts=-p -s -h -i0.05" default-language: Haskell2010 executable hbfc
src/HBF/Compiler.hs view
@@ -19,7 +19,7 @@ ) where import Control.Monad (when)-import Control.Monad.Trans.State (State, execState, get, modify, put)+import Control.Monad.Trans.State.Strict (State, execState, get, modify, put) import qualified Data.Binary as B import Data.ByteString.Lazy (ByteString) import Data.Coerce (coerce)
src/HBF/Types.hs view
@@ -18,7 +18,7 @@ import Control.DeepSeq (NFData) import Control.Exception (catch)-import Control.Monad.Trans.State.Lazy (StateT, get, modify, put)+import Control.Monad.Trans.State.Strict (StateT, get, modify, put) import Data.Binary (Binary) import Data.Char (chr, ord) import Data.Int (Int8)
tests/CompilerTest.hs view
@@ -1,13 +1,11 @@ module CompilerTest where -import Control.Monad.Trans.State (execStateT) import qualified Data.Text.Lazy.IO as TIO import Hedgehog import qualified Hedgehog as H import Test.HUnit import HBF.Compiler-import qualified HBF.Eval as E import HBF.Types import Helper @@ -74,7 +72,7 @@ b <- exec unoptimized a @?= b where- exec program = execStateT (E.eval program) (mkMockIOS "25454\n")+ exec program = execProgram program (mkMockIOS "25454\n") fullyFused :: Program o -> Bool fullyFused p = all (uncurry fused) (zip ops (tail ops))
tests/EvalTest.hs view
@@ -1,6 +1,5 @@ module EvalTest where -import Control.Monad.Trans.State (runStateT) import Data.Char (ord) import Data.Int (Int8) import qualified Data.Text.Lazy.IO as TIO@@ -76,8 +75,9 @@ code <- TIO.readFile "tests/allfeatures.bf" let (Right (program, _)) = C.inMemoryCompile C.defaultCompilerOptions code (finalMachine, finalState) <-- runStateT- (E.evalWith E.defaultVMOptions {E.vmOptsMemoryBytes = bytes} program)+ execProgramWith+ program+ E.defaultVMOptions {E.vmOptsMemoryBytes = bytes} (mkMockIOS "0") mockOutputS finalState @?= expectedOutput memory finalMachine @?= expectedMemory
tests/Helper.hs view
@@ -6,7 +6,7 @@ -- needed for smallcheck module Helper where -import Control.Monad.Trans.State (runStateT)+import Control.Monad.Trans.State.Strict (runStateT) import Data.Coerce (coerce) import Data.Int (Int8) import Data.Semigroup (Semigroup, (<>))@@ -22,7 +22,7 @@ import HBF.Compiler (CompilerOptions (..), defaultCompilerOptions, inMemoryCompile)-import HBF.Eval (MachineType, eval)+import HBF.Eval (MachineType, eval, evalWith, VMOptions, defaultVMOptions) import HBF.Parser import HBF.Types @@ -123,8 +123,11 @@ -> Series m a6 cons5 f = decDepth $ f <$> series <~> series <~> series <~> series <~> series +execProgramWith :: Program Optimized -> VMOptions -> MockIO -> IO (MachineType, MockIO)+execProgramWith p options = runStateT (evalWith options p)+ execProgram :: Program Optimized -> MockIO -> IO (MachineType, MockIO)-execProgram p = runStateT (eval p)+execProgram p = execProgramWith p defaultVMOptions execProgramS :: Program Optimized -> String -> IO (MachineType, MockIO) execProgramS p input = runStateT (eval p) (mkMockIOS input)
tests/IntegrationTests.hs view
@@ -2,14 +2,13 @@ module IntegrationTests where -import Control.Monad.Trans.State (execStateT) import System.IO (hClose) import System.IO.Temp (withSystemTempFile) import Test.HUnit import qualified HBF.Compiler as C-import qualified HBF.Eval as E import HBF.Types+import Helper squaresPath :: FilePath squaresPath = "tests/squares.bf"@@ -31,5 +30,5 @@ unit_compileAndEvalSquares :: Assertion unit_compileAndEvalSquares = do program <- compile squaresPath- mock <- execStateT (E.eval program) (mkMockIO [])+ (_,mock) <- execProgram program (mkMockIO []) mockOutputS mock @?= squaresResult