packages feed

bv-little-1.3.2: bv-little.cabal

Cabal-Version:      3.0
Name:               bv-little
Version:            1.3.2
Stability:          Stable
Build-Type:         Simple
Tested-With:
  GHC == 9.6.2
  GHC == 9.4.5
  GHC == 9.2.8
  GHC == 9.2.3

Author:             Alex Washburn
Copyright:          (c) Alex Washburn 2020
License:            BSD-3-Clause
License-File:       LICENSE

Maintainer:         hackage@recursion.ninja
Homepage:           https://github.com/recursion-ninja/bv-little
Bug-Reports:        https://github.com/recursion-ninja/bv-little/issues

Synopsis:           Efficient little-endian bit vector library
Category:           Data, Bit Vectors
Description:
  .
  This package contains a time- and space- efficient implementation of /little-endian, immutable/ bit vectors. Provides implementations of applicable typeclasses and numeric conversions.
  .
  The declared cost of each operation is either worst-case or amortized.
  .
  For an implementation of /big-endian, immutable/ bit vectors use the <https://hackage.haskell.org/package/bv bv> package.
  .
  For an implementation of /little-endian, mutable/ bit vectors, use the <https://hackage.haskell.org/package/bitvec bitvec> package.          

Extra-Source-Files:
  stack.yaml

Extra-Doc-Files:
  changelog.md
  README.md

Source-repository head
  type:     git
  location: https://github.com/recursion-ninja/bv-little

Common language

  default-extensions:
    NoGeneralizedNewtypeDeriving
    
  default-language:
    GHC2021


Library core

  import:
    language

  build-depends:
    base >= 4.16.1 && < 5,
    deepseq >= 1.4.6,
    hashable >= 1.3,
    integer-gmp >= 1.1,
    primitive >= 0.7.2,

  exposed-modules:
    Data.BitVector.LittleEndian.Internal

  hs-source-dirs:
    src/core

  visibility:
    private


Library instances

  import:
    language

  build-depends:
    bv-little:instances-binary,
    bv-little:instances-mono-traversable,
    bv-little:instances-mono-traversable-keys,
    bv-little:instances-quickcheck,
    bv-little:instances-text-show,

  exposed-modules:
    Data.BitVector.LittleEndian.Instances

  hs-source-dirs:
    src/full

  visibility:
    public


Library instances-binary

  import:
    language

  build-depends:
    base >= 4.16.1 && < 5,
    binary >= 0.8,
    bv-little,
    bv-little:core,

  exposed-modules:
    Data.BitVector.LittleEndian.Binary

  hs-source-dirs:
    src/libs

  visibility:
    public


Library instances-mono-traversable

  import:
    language

  build-depends:
    base >= 4.16.1 && < 5,
    bv-little,
    bv-little:core,
    mono-traversable >= 1.0.5.0 && >= 1.0

  exposed-modules:
    Data.BitVector.LittleEndian.MonoTraversable

  hs-source-dirs:
    src/libs

  visibility:
    public


Library instances-mono-traversable-keys

  import:
    language

  build-depends:
    base >= 4.16.1 && < 5,
    bv-little,
    bv-little:core,
    bv-little:instances-mono-traversable,
    keys >= 3.12,
    mono-traversable >= 1.0.5.0,
    mono-traversable-keys >= 0.2,

  exposed-modules:
    Data.BitVector.LittleEndian.MonoKeyed

  hs-source-dirs:
    src/keys

  visibility:
    public


Library instances-quickcheck

  import:
    language

  build-depends:
    base >= 4.16.1 && < 5,
    bv-little,
    bv-little:core,
    QuickCheck >= 2.14.2

  exposed-modules:
    Data.BitVector.LittleEndian.QuickCheck

  hs-source-dirs:
    src/libs

  visibility:
    public


Library instances-text-show

  import:
    language

  build-depends:
    base >= 4.16.1 && < 5,
    bv-little,
    bv-little:core,
    text-show >= 3.9,

  exposed-modules:
    Data.BitVector.LittleEndian.TextShow

  hs-source-dirs:
    src/libs

  visibility:
    public
        

Test-Suite Test-Suite

  import:
    language

  type:
    exitcode-stdio-1.0

  main-is:
    TestSuite.hs

  build-depends:
    base >= 4.16.1 && < 5,
    bv-little,
    bv-little:instances,
    deepseq >= 1.4.6,
    hashable >= 1.3,
    mono-traversable >= 1.0.5.0,
    mono-traversable-keys >= 0.2,
    QuickCheck >= 2.14.2,
    smallcheck >= 1.1.5,
    tasty,
    tasty-hunit,
    tasty-quickcheck,
    tasty-smallcheck,
    text-show >= 3.9

  hs-source-dirs:
    test,
    util
    
  other-modules:
    Data.BitVector.Visual
    Operator.Binary.Comparison
    Operator.Binary.Logical
    Operator.Unary.Logical


Benchmark Benchmark-suite

  import:
    language

  type:
    exitcode-stdio-1.0

  main-is:
    Benchmarks.hs

  build-depends:
    base >= 4.16.1 && < 5,
    bv-little,
    bv-little:instances,
    criterion >= 1.6,
    deepseq >= 1.4.6,
    hashable >= 1.3,
    mono-traversable >= 1.0.5.0,
    QuickCheck >= 2.14.2,
    smallcheck >= 1.1.5,
    tasty >= 1.4,
    tasty-hunit >= 0.10,
    tasty-quickcheck >= 0.10,
    tasty-smallcheck >= 0.8,
    text-show >= 3.9,

  ghc-options:
    -threaded
    -fdicts-cheap
    -fmax-simplifier-iterations=10
    -fno-full-laziness
    -fspec-constr-count=6
    -fwarn-dodgy-foreign-imports
    -fwarn-incomplete-record-updates
    -fwarn-incomplete-uni-patterns
    -fwarn-overlapping-patterns
    -fno-warn-type-defaults

  hs-source-dirs:
    bench,
    util

  other-modules:
    Operator.Binary.Comparison
    Operator.Binary.Logical
    Operator.Unary.Logical


Benchmark Benchmark-heap-stack

  import:
    language

  type:
    exitcode-stdio-1.0

  main-is: 
    HeapStack.hs

  build-depends:
    base >= 4.16.1 && < 5,
    bv-little,
    bv-little:instances,
--        criterion >= 1.6,
    deepseq >= 1.4.6,
--    hashable          >=1.2.3.2,
--    mono-traversable  >=1.0.5.0,
    QuickCheck >= 2.14.2,
    smallcheck >= 1.1.5,

  if !impl(ghc >=8.0)
    build-depends:
      semigroups >=0.18 && <1.0

  ghc-options:
    -threaded
    -fdicts-cheap
    -fmax-simplifier-iterations=10
    -fno-full-laziness
    -fspec-constr-count=6
    -rtsopts
    -fwarn-dodgy-foreign-imports
    -fwarn-incomplete-record-updates
    -fwarn-incomplete-uni-patterns
    -fwarn-overlapping-patterns
    -fno-warn-type-defaults

  hs-source-dirs:
     bench,
     util

  other-modules:
    Operator.Binary.Comparison
    Operator.Binary.Logical
    Operator.Unary.Logical


Library

  import:
    language

  build-depends:
    base >= 4.16.1 && < 5,
    bv-little:core

  exposed-modules:
    Data.BitVector.LittleEndian

  hs-source-dirs:
    src