cabal-version: 3.0
Name: network-transport-quic
Version: 0.1.1
build-Type: Simple
License: BSD-3-Clause
License-file: LICENSE
Copyright: Laurent P. René de Cotret
Author: Laurent P. René de Cotret
maintainer: The Distributed Haskell team
Stability: experimental
Homepage: https://haskell-distributed.github.io
Bug-Reports: https://github.com/haskell-distributed/distributed-process/issues
Synopsis: Networking layer for Cloud Haskell based on QUIC
Description:
Networking layer for Cloud Haskell based on QUIC.
The QUIC protocol has several advantages over TCP, including built-in encryption via TLS 1.3,
support for connection migration (e.g. when transitioning from WIFI to 5G), and stream multiplexing which
eliminates head-of-line blocking.
In dense network topologies, using ["Network.Transport.QUIC"] may improve performance by a factor of 2 over
other transport implementations.
tested-with: GHC==8.10.7 GHC==9.0.2 GHC==9.2.8 GHC==9.4.8 GHC==9.6.7 GHC==9.8.4 GHC==9.10.3 GHC==9.12.2
Category: Network
extra-doc-files:
README.md
CHANGELOG.md
extra-source-files:
test/credentials/cert.crt
test/credentials/cert.key
source-repository head
Type: git
Location: https://github.com/haskell-distributed/distributed-process
SubDir: packages/network-transport-quic
common common
ghc-options:
-- warnings
-Wall
-Wcompat
-Widentities
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wredundant-constraints
-fhide-source-paths
-Wpartial-fields
-Wunused-packages
-- The -threaded option is /required/ to use the quic library
-threaded
library
import: common
build-depends: async >= 2.2 && <2.3
, base >= 4.14 && < 5
, binary >= 0.8 && < 0.10
, bytestring >= 0.11 && < 0.13
, containers >= 0.6 && <0.9
, microlens-platform ^>=0.4
, network >= 3.1 && < 3.3
, network-transport >= 0.5 && < 0.6
-- Prior to version 0.2.20, `quic` had issues with handling
-- pending data in the stream buffer. This meant that vectored
-- message sends did not work correctly at the transport layer
, quic >=0.2.20 && <0.3
, stm >=2.4 && <2.6
, tls >= 2.1 && < 2.2
, tls-session-manager >= 0.0.5 && <0.1
exposed-modules: Network.Transport.QUIC
Network.Transport.QUIC.Internal
other-modules: Network.Transport.QUIC.Internal.Configuration
Network.Transport.QUIC.Internal.Client
Network.Transport.QUIC.Internal.Messaging
Network.Transport.QUIC.Internal.QUICAddr
Network.Transport.QUIC.Internal.QUICTransport
Network.Transport.QUIC.Internal.Server
Network.Transport.QUIC.Internal.TLS
default-language: Haskell2010
default-extensions: ImportQualifiedPost
hs-source-dirs: src
test-suite network-transport-quic-tests
import: common
default-language: Haskell2010
default-extensions: ImportQualifiedPost
main-is: Main.hs
other-modules: Test.Network.Transport.QUIC
Test.Network.Transport.QUIC.Internal.Messaging
Test.Network.Transport.QUIC.Internal.QUICAddr
type: exitcode-stdio-1.0
hs-source-dirs: test
build-depends: base
, bytestring
, filepath
, hedgehog
, network
, network-transport
, network-transport-quic
, network-transport-tests
, tasty ^>=1.5
, tasty-flaky ^>= 0.1.3
, tasty-hedgehog
, tasty-hunit
benchmark network-transport-quic-bench
import: common
type: exitcode-stdio-1.0
hs-source-dirs: bench
main-is: Bench.hs
default-language: Haskell2010
ghc-options: -rtsopts -with-rtsopts=-N
build-depends: async
, base >=4.14 && <5
, bytestring
, filepath
, network-transport
, network-transport-tcp
, network-transport-quic
, tasty ^>=1.5
, tasty-bench >=0.4