packages feed

gbnet-hs-0.2.3.0: gbnet-hs.cabal

cabal-version:      3.0
name:               gbnet-hs
version:            0.2.3.0
synopsis:           Transport-level networking library with zero-copy Storable serialization
description:
  A transport-level networking library providing reliable UDP with
  zero-copy Storable serialization, dual-layer congestion control, and
  effect-abstracted design for pure deterministic testing.

license:            MIT
license-file:       LICENSE
author:             Devon Tomlin
maintainer:         devon.tomlin@novavero.ai
homepage:           https://github.com/Gondola-Bros-Entertainment/gbnet-hs
bug-reports:        https://github.com/Gondola-Bros-Entertainment/gbnet-hs/issues
category:           Network, Game
stability:          experimental
build-type:         Simple
tested-with:        GHC == 9.6.7
extra-doc-files:
    README.md
    CHANGELOG.md

library
  exposed-modules:
    GBNet
    GBNet.Crypto
    GBNet.Serialize
    GBNet.Serialize.TH
    GBNet.Packet
    GBNet.Util
    GBNet.Reliability
    GBNet.Channel
    GBNet.Config
    GBNet.Congestion
    GBNet.Stats
    GBNet.Connection
    GBNet.Fragment
    GBNet.Security
    GBNet.Simulator
    GBNet.Socket
    GBNet.Peer
    GBNet.Replication.Delta
    GBNet.Replication.Interest
    GBNet.Replication.Priority
    GBNet.Replication.Interpolation
    GBNet.Class
    GBNet.Types
    GBNet.TestNet
    GBNet.Net
    GBNet.Net.IO

  other-modules:
    GBNet.ZeroCopy
    GBNet.Peer.Internal
    GBNet.Peer.Protocol
    GBNet.Peer.Handshake
    GBNet.Peer.Migration

  build-depends:
      base                >= 4.16 && < 5
    , bytestring          >= 0.11 && < 0.13
    , containers          >= 0.6 && < 0.8
    , crc32c              >= 0.2 && < 0.3
    , crypton             >= 1.0 && < 2
    , deepseq             >= 1.4 && < 1.6
    , memory              >= 0.18 && < 1
    , mtl                 >= 2.2 && < 2.4
    , network             >= 3.1 && < 3.3
    , optics              >= 0.4.2 && < 0.5
    , optics-th           >= 0.4.1 && < 0.5
    , stm                 >= 2.5 && < 2.6
    , template-haskell    >= 2.18 && < 2.23
    , transformers        >= 0.5 && < 0.7
    , vector              >= 0.12 && < 0.14

  hs-source-dirs:   src
  default-language:  Haskell2010
  -- Aggressive specialisation monomorphises MonadNetwork/MonadTime at call
  -- sites, eliminating dictionary overhead.  Users wanting -O2 can add it
  -- in their own cabal.project (package gbnet-hs ghc-options: -O2).
  ghc-options:
    -Wall
    -Wcompat
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -fspecialise-aggressively
    -fexpose-all-unfoldings

test-suite gbnet-test
  type:             exitcode-stdio-1.0
  main-is:          Main.hs
  hs-source-dirs:   test
  build-depends:
      base                >= 4.16 && < 5
    , gbnet-hs
    , bytestring          >= 0.11 && < 0.13
    , network             >= 3.1 && < 3.3
    , QuickCheck          >= 2.14 && < 2.16
    , containers          >= 0.6 && < 0.8
  default-language: Haskell2010
  ghc-options:      -Wall -Wcompat

benchmark gbnet-bench
  type:             exitcode-stdio-1.0
  main-is:          Main.hs
  hs-source-dirs:   bench
  default-language: Haskell2010
  ghc-options:      -rtsopts -Wall -Wcompat
  build-depends:
      base                >= 4.16 && < 5
    , bytestring          >= 0.11 && < 0.13
    , criterion            >= 1.5 && < 1.7
    , deepseq             >= 1.4 && < 1.6
    , gbnet-hs

source-repository head
  type:     git
  location: https://github.com/Gondola-Bros-Entertainment/gbnet-hs
  branch:   main