packages feed

bytebuild-0.3.16.3: bytebuild.cabal

cabal-version:   2.2
name:            bytebuild
version:         0.3.16.3
synopsis:        Build byte arrays
description:
  This is similar to the builder facilities provided by
  `Data.ByteString.Builder`. It is intended to be used in
  situations where the following apply:
  .
  * An individual entity will be serialized as a small
  number of bytes (less than 512).
  .
  * A large number (more than 32) of entities will be serialized
  one after another without anything between them.
  .
  Unlike builders from the `bytestring` package, these builders
  do not track their state when they run out of space. A builder
  that runs out of space simply aborts and is rerun at the beginning
  of the next chunk. This strategy for building is suitable for most
  CSVs and several line protocols (carbon, InfluxDB, etc.).

homepage:        https://github.com/byteverse/bytebuild
bug-reports:     https://github.com/byteverse/bytebuild/issues
license:         BSD-3-Clause
license-file:    LICENSE
author:          Andrew Martin
maintainer:      amartin@layer3com.com
copyright:       2019 Andrew Martin
category:        Data
extra-doc-files: CHANGELOG.md
tested-with:     GHC ==9.4.8 || ==9.6.5 || ==9.8.2 || ==9.10.1

common build-settings
  default-language: Haskell2010
  ghc-options:      -Wall -Wunused-packages

flag checked
  manual:      True
  description: Add bounds-checking to primitive array operations
  default:     False

library
  import:             build-settings
  exposed-modules:
    Data.Bytes.Builder
    Data.Bytes.Builder.Avro
    Data.Bytes.Builder.Bounded
    Data.Bytes.Builder.Bounded.Class
    Data.Bytes.Builder.Bounded.Unsafe
    Data.Bytes.Builder.Class
    Data.Bytes.Builder.Template
    Data.Bytes.Builder.Unsafe

  other-modules:
    Compat
    Op

  reexported-modules: Data.Bytes.Chunks
  build-depends:
    , base                >=4.17.0.0 && <4.21
    , byteslice           >=0.2.6    && <0.3
    , bytestring          >=0.10.8.2 && <0.13
    , haskell-src-meta    >=0.8.13
    , integer-logarithms  >=1.0.3    && <1.1
    , natural-arithmetic  >=0.1      && <0.3
    , primitive-offset    >=0.2      && <0.3
    , run-st              >=0.1.2    && <0.2
    , template-haskell    >=2.16
    , text                >=2.0      && <2.2
    , text-short          >=0.1.3    && <0.2
    , wide-word           >=0.1.0.9  && <0.2
    , zigzag

  if impl(ghc >=9.2)
    hs-source-dirs: src-9.2

  else
    if impl(ghc >=8.10)
      hs-source-dirs: src-9.0

  if flag(checked)
    build-depends:  primitive-checked >=0.7 && <0.10
    hs-source-dirs: src-checked

  else
    build-depends:  primitive >=0.7 && <0.10
    hs-source-dirs: src-unchecked

  ghc-options:        -O2
  hs-source-dirs:     src
  c-sources:          cbits/bytebuild_custom.c

test-suite test
  import:         build-settings
  type:           exitcode-stdio-1.0
  hs-source-dirs: test common
  main-is:        Main.hs
  other-modules:
    HexWord64
    Word16Tree

  build-depends:
    , base                  >=4.12.0.0 && <5
    , bytebuild
    , byteslice
    , bytestring
    , natural-arithmetic
    , primitive
    , QuickCheck            >=2.13.1   && <2.16
    , quickcheck-instances  >=0.3.22
    , tasty                 >=1.2.3    && <1.6
    , tasty-hunit           >=0.10.0.2 && <0.11
    , tasty-quickcheck      >=0.10.1   && <0.11
    , text                  >=2.0      && <2.2
    , text-short
    , wide-word             >=0.1.0.9  && <0.2

benchmark bench
  import:         build-settings
  type:           exitcode-stdio-1.0
  build-depends:
    , base
    , bytebuild
    , byteslice
    , gauge               >=0.2.4
    , natural-arithmetic
    , primitive
    , text-short

  ghc-options:    -O2
  hs-source-dirs: bench common
  main-is:        Main.hs
  other-modules:
    Cell
    HexWord64
    SimpleCsv
    Word16Tree

source-repository head
  type:     git
  location: git://github.com/byteverse/bytebuild.git