diff --git a/ihaskell.cabal b/ihaskell.cabal index a5cb5769..46035818 100644 --- a/ihaskell.cabal +++ b/ihaskell.cabal @@ -66,8 +66,8 @@ library aeson >=1.0, base >=4.9, base64-bytestring >=1.0, + binary >=0.7, bytestring >=0.10, - cereal >=0.3, cmdargs >=0.10, containers >=0.5, directory -any, diff --git a/ipython-kernel/ipython-kernel.cabal b/ipython-kernel/ipython-kernel.cabal index 2457271a..d5c36a60 100644 --- a/ipython-kernel/ipython-kernel.cabal +++ b/ipython-kernel/ipython-kernel.cabal @@ -37,9 +37,8 @@ library default-language: Haskell2010 build-depends: base >=4.9 && <5, aeson , + binary , bytestring , - cereal , - cereal-text , containers , cryptonite , directory , diff --git a/ipython-kernel/src/IHaskell/IPython/Types.hs b/ipython-kernel/src/IHaskell/IPython/Types.hs index 3d3ada66..3ad6e943 100644 --- a/ipython-kernel/src/IHaskell/IPython/Types.hs +++ b/ipython-kernel/src/IHaskell/IPython/Types.hs @@ -47,8 +47,7 @@ import Data.Map (Map) import qualified Data.Map as Map import Data.Maybe (fromMaybe) import Data.Semigroup (Semigroup) -import Data.Serialize -import Data.Serialize.Text () +import Data.Binary import Data.Text (Text, pack) import qualified Data.Text as Text import qualified Data.Text.Encoding as Text @@ -923,9 +922,9 @@ data DisplayData = DisplayData MimeType Text instance Show DisplayData where show _ = "DisplayData" -instance Serialize DisplayData +instance Binary DisplayData -instance Serialize MimeType +instance Binary MimeType -- | Possible MIME types for the display data. type Width = Int diff --git a/src/IHaskell/Display.hs b/src/IHaskell/Display.hs index b0a7d836..8a45a551 100644 --- a/src/IHaskell/Display.hs +++ b/src/IHaskell/Display.hs @@ -60,8 +60,9 @@ module IHaskell.Display ( import IHaskellPrelude import qualified Data.Text as T import qualified Data.ByteString.Char8 as CBS +import qualified Data.ByteString.Lazy as LBS -import Data.Serialize as Serialize +import Data.Binary as Binary import qualified Data.ByteString.Base64 as Base64 import System.Directory (getTemporaryDirectory, setCurrentDirectory) @@ -164,8 +165,8 @@ base64 :: ByteString -> Base64 base64 = E.decodeUtf8 . Base64.encode -- | For internal use within IHaskell. Serialize displays to a ByteString. -serializeDisplay :: Display -> ByteString -serializeDisplay = Serialize.encode +serializeDisplay :: Display -> LBS.ByteString +serializeDisplay = Binary.encode -- | Items written to this chan will be included in the output sent to the frontend (ultimately the -- browser), the next time IHaskell has an item to display. @@ -175,9 +176,9 @@ displayChan = unsafePerformIO newTChanIO -- | Take everything that was put into the 'displayChan' at that point out, and make a 'Display' out -- of it. -displayFromChanEncoded :: IO ByteString +displayFromChanEncoded :: IO LBS.ByteString displayFromChanEncoded = - Serialize.encode <$> Just . many <$> unfoldM (atomically $ tryReadTChan displayChan) + Binary.encode <$> Just . many <$> unfoldM (atomically $ tryReadTChan displayChan) -- | Write to the display channel. The contents will be displayed in the notebook once the current -- execution call ends. diff --git a/src/IHaskell/Eval/Evaluate.hs b/src/IHaskell/Eval/Evaluate.hs index 1ccdf31a..186526f7 100644 --- a/src/IHaskell/Eval/Evaluate.hs +++ b/src/IHaskell/Eval/Evaluate.hs @@ -27,7 +27,7 @@ import Data.List (nubBy) import qualified Data.Set as Set import Data.Char as Char import Data.Dynamic -import qualified Data.Serialize as Serialize +import qualified Data.Binary as Binary import System.Directory import System.Posix.IO (fdToHandle) import System.IO (hGetChar, hSetEncoding, utf8) @@ -436,9 +436,9 @@ evaluate kernelState code output widgetHandler = do Left err -> error $ "Deserialization error (Evaluate.hs): " ++ err Right displaysIO -> do result <- liftIO displaysIO - case Serialize.decode result of - Left err -> error $ "Deserialization error (Evaluate.hs): " ++ err - Right res -> return res + case Binary.decodeOrFail result of + Left (_, _, err) -> error $ "Deserialization error (Evaluate.hs): " ++ err + Right (_, _, res) -> return res else return Nothing let result = case dispsMay of @@ -1044,9 +1044,9 @@ evalCommand output (Expression expr) state = do Nothing -> error "Expecting lazy Bytestring" Just bytestringIO -> do bytestring <- liftIO bytestringIO - case Serialize.decode bytestring of - Left err -> error err - Right disp -> + case Binary.decodeOrFail bytestring of + Left (_, _, err) -> error err + Right (_, _, disp) -> return $ if useSvg state then disp :: Display diff --git a/src/IHaskell/Types.hs b/src/IHaskell/Types.hs index 0b345675..f9fd9414 100644 --- a/src/IHaskell/Types.hs +++ b/src/IHaskell/Types.hs @@ -47,7 +47,7 @@ import qualified Data.HashMap.Strict as HashMap import Data.Aeson (ToJSON (..), Value, (.=), object, Value(String)) import Data.Function (on) import Data.Text (pack) -import Data.Serialize +import Data.Binary import GHC.Generics import IHaskell.IPython.Kernel @@ -159,7 +159,7 @@ instance ToJSON Display where toJSON (Display d) = object (map displayDataToJson d) toJSON (ManyDisplay d) = toJSON d -instance Serialize Display +instance Binary Display instance Semigroup Display where ManyDisplay a <> ManyDisplay b = ManyDisplay (a ++ b)