packages feed

network-transport-quic-0.1.2: network-transport-quic.cabal

cabal-version: 3.0
Name:          network-transport-quic
Version:       0.1.2
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 GHC==9.14.1
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.4
                    , stm >=2.4 && <2.6
                    , tls >= 2.1 && < 2.5
                    , tls-session-manager >= 0.0.5 && <0.2
  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