typed-protocols 1.2.0.0 → 1.2.1.0
raw patch · 8 files changed
+46/−17 lines, 8 filesdep ~io-classes
Dependency ranges changed: io-classes
Files
- CHANGELOG.md +4/−0
- examples/Network/TypedProtocol/Driver/Simple.hs +12/−8
- examples/Network/TypedProtocol/PingPong/Codec.hs +2/−0
- examples/Network/TypedProtocol/ReqResp/Codec.hs +6/−2
- examples/Network/TypedProtocol/Stateful/ReqResp/Codec.hs +1/−2
- src/Network/TypedProtocol/Driver.hs +5/−0
- stateful/Network/TypedProtocol/Stateful/Driver.hs +6/−0
- typed-protocols.cabal +10/−5
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for typed-protocols +## 1.2.1.0 -- 2026-04-16++* Support GHC-9.14, io-classes >=1.8 && < 1.11+ ## 1.2.0.0 -- 2025-02-05 * Make `runPeerWithDriver` strict, it evaluates the result and `dstate` to
examples/Network/TypedProtocol/Driver/Simple.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TypeFamilies #-} -- @UndecidableInstances@ extensions is required for defining @Show@ instance -- of @'TraceSendRecv'@.@@ -175,14 +176,17 @@ -- | Run a codec incremental decoder 'DecodeStep' against a channel. It also -- takes any extra input data and returns any unused trailing data. ---runDecoderWithChannel :: ( Monad m- , MonadEvaluate m- , NFData failure- )- => Channel m bytes- -> Maybe bytes- -> DecodeStep bytes failure m a- -> m (Either failure (a, Maybe bytes))+runDecoderWithChannel+ :: ( MonadEvaluate m+#if !MIN_VERSION_io_classes(1,10,0)+ , Monad m+#endif+ , NFData failure+ )+ => Channel m bytes+ -> Maybe bytes+ -> DecodeStep bytes failure m a+ -> m (Either failure (a, Maybe bytes)) runDecoderWithChannel Channel{recv} = go where
examples/Network/TypedProtocol/PingPong/Codec.hs view
@@ -31,6 +31,8 @@ DecodeDone (SomeMessage MsgPing) trailing (SingIdle, "done") -> DecodeDone (SomeMessage MsgDone) trailing+ (SingDone, _) ->+ notActiveState stok (_ , _ ) -> DecodeFail failure where failure = CodecFailure ("unexpected server message: " ++ str)
examples/Network/TypedProtocol/ReqResp/Codec.hs view
@@ -40,6 +40,8 @@ (SingBusy, ("MsgResp", str')) | Just resp <- readMaybe str' -> DecodeDone (SomeMessage (MsgResp resp)) trailing+ (SingDone, _) ->+ notActiveState stok (_ , _ ) -> DecodeFail failure where failure = CodecFailure ("unexpected server message: " ++ str)@@ -101,6 +103,8 @@ -> DecodeDone (Annotator \str'' -> let used = init $ drop 8 str'' in SomeMessage (MsgResp (WithBytes used resp))) trailing+ (SingDone, _) ->+ notActiveState stok (_ , _ ) -> DecodeFail failure where failure = CodecFailure ("unexpected server message: " ++ str)@@ -145,5 +149,5 @@ (SingBusy, _) -> DecodeFail failure where failure = CodecFailure ("unexpected server message: " ++ show msg)-- (a@SingDone, _) -> notActiveState a+ (SingDone, _) ->+ notActiveState stok
examples/Network/TypedProtocol/Stateful/ReqResp/Codec.hs view
@@ -36,8 +36,7 @@ encode (StateBusy req) (MsgResp resp) = "MsgResp " ++ encodeResp req resp ++ "\n" decode :: forall (st :: ReqResp req).- ActiveState st- => StateToken st+ StateToken st -> State st -> m (DecodeStep String CodecFailure m (SomeMessage st)) decode stok state =
src/Network/TypedProtocol/Driver.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TypeFamilies #-} -- | Actions for running 'Peer's with a 'Driver'@@ -124,8 +125,12 @@ -- runPeerWithDriver :: forall ps (st :: ps) pr dstate m a.+#if MIN_VERSION_io_classes(1,10,0)+ ( MonadEvaluate m+#else ( Monad m , MonadEvaluate m+#endif , NFData a ) => Driver ps pr dstate m
stateful/Network/TypedProtocol/Stateful/Driver.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ -- | Actions for running 'Peer's with a 'Driver'. This module should be -- imported qualified. --@@ -12,7 +14,9 @@ ) where import Control.DeepSeq (NFData, force)+#if !MIN_VERSION_io_classes(1,10,0) import Control.Monad.Class.MonadSTM+#endif import Control.Monad.Class.MonadThrow import Data.Kind (Type)@@ -85,7 +89,9 @@ runPeerWithDriver :: forall ps (st :: ps) pr bytes failure dstate (f :: ps -> Type) m a. ( MonadEvaluate m+#if !MIN_VERSION_io_classes(1,10,0) , MonadSTM m+#endif , NFData a ) => Driver ps pr bytes failure dstate f m
typed-protocols.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: typed-protocols-version: 1.2.0.0+version: 1.2.1.0 synopsis: A framework for strongly typed protocols description: A robust session type framework which supports protocol pipelining. Haddocks are published [here](https://input-output-hk.github.io/typed-protocols/)@@ -11,7 +11,7 @@ maintainer: alex@well-typed.com, duncan@well-typed.com, marcin.szamotulski@iohk.io category: Control build-type: Simple-tested-with: GHC == {9.6, 9.8, 9.10, 9.12}+tested-with: GHC == {9.6, 9.8, 9.10, 9.12, 9.14} extra-doc-files: CHANGELOG.md README.md @@ -31,6 +31,11 @@ -Wredundant-constraints -Wunused-packages + -- In ghc-9.14 the `pattern` namespace specifier is deprecated.+ if impl(ghc >=9.14)+ ghc-options:+ -Wno-pattern-namespace-specifier+ library import: GHC exposed-modules: Network.TypedProtocol@@ -42,9 +47,9 @@ , Network.TypedProtocol.Driver , Network.TypedProtocol.Proofs other-modules: Network.TypedProtocol.Lemmas- build-depends: base >=4.12 && <4.22,+ build-depends: base >=4.12 && <4.23, deepseq,- io-classes:io-classes ^>= 1.8,+ io-classes:io-classes ^>= 1.8 || ^>= 1.9 || ^>= 1.10, singletons ^>= 3.0 hs-source-dirs: src default-extensions: DataKinds@@ -56,7 +61,7 @@ exposed-modules: Network.TypedProtocol.Codec.Properties Network.TypedProtocol.Stateful.Codec.Properties other-modules: Test.QuickCheck.Monoids.Compat- build-depends: base >=4.12 && <4.22,+ build-depends: base >=4.12 && <4.23, typed-protocols:{stateful, typed-protocols}, QuickCheck hs-source-dirs: properties