packages feed

aeson-1.5.3.0: benchmarks/aeson-benchmarks.cabal

cabal-version: >=1.10
name:          aeson-benchmarks
version:       0
build-type:    Simple

library
  default-language: Haskell2010
  hs-source-dirs:   .. ../ffi ../pure ../attoparsec-iso8601
  c-sources:        ../cbits/unescape_string.c
  build-depends:
      attoparsec
    , data-fix
    , base
    , base-compat-batteries
    , bytestring             >=0.10.4
    , containers
    , deepseq
    , dlist
    , ghc-prim
    , hashable
    , mtl
    , primitive
    , scientific
    , syb
    , strict
    , tagged
    , template-haskell
    , text
    , th-abstraction
    , these
    , time
    , time-compat
    , transformers
    , unordered-containers
    , uuid-types
    , vector

  if !impl(ghc >=8.6)
    build-depends: contravariant

  if !impl(ghc >=8.0)
    -- `Data.Semigroup` is available in base only since GHC 8.0 / base 4.9
    build-depends:
        fail
      , semigroups
      , transformers-compat

  if !impl(ghc >=7.10)
    -- `Numeric.Natural` is available in base only since GHC 7.10 / base 4.8
    build-depends:
        nats
      , void

  include-dirs:     ../include
  ghc-options:      -O2 -Wall
  cpp-options:      -DGENERICS
  exposed-modules:
    Data.Aeson
    Data.Aeson.Encoding
    Data.Aeson.Encoding.Builder
    Data.Aeson.Encoding.Internal
    Data.Aeson.Internal
    Data.Aeson.Internal.Functions
    Data.Aeson.Internal.Time
    Data.Aeson.Parser
    Data.Aeson.Parser.Internal
    Data.Aeson.Parser.Time
    Data.Aeson.Parser.Unescape
    Data.Aeson.Parser.UnescapeFFI
    Data.Aeson.Parser.UnescapePure
    Data.Aeson.Text
    Data.Aeson.TH
    Data.Aeson.Types
    Data.Aeson.Types.Class
    Data.Aeson.Types.FromJSON
    Data.Aeson.Types.Generic
    Data.Aeson.Types.Internal
    Data.Aeson.Types.ToJSON
    Data.Attoparsec.Time
    Data.Attoparsec.Time.Internal

-- Idea is to fold as many benchmarks into this as possible.
executable aeson-benchmark-suite
  default-language: Haskell2010
  main-is:          Suite.hs
  hs-source-dirs:   . ../examples/src
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , bytestring
    , criterion
    , deepseq
    , filepath
    , template-haskell
    , text
    , time
    , vector

  other-modules:
    GitHub
    Twitter
    Twitter.Manual

-- Benchmarks below are haven't been worked out yet

executable aeson-benchmark-auto-compare
  default-language: Haskell2010
  main-is:          AutoCompare.hs
  hs-source-dirs:   .
  ghc-options:      -Wall -O2 -rtsopts
  other-modules:
    Auto.G.BigProduct
    Auto.G.BigRecord
    Auto.G.BigSum
    Auto.G.D
    Auto.T.BigProduct
    Auto.T.BigRecord
    Auto.T.BigSum
    Auto.T.D
    Options

  build-depends:
      aeson-benchmarks
    , base
    , criterion
    , deepseq
    , template-haskell

executable aeson-benchmark-escape
  default-language: Haskell2010
  main-is:          Escape.hs
  hs-source-dirs:   ../examples/src .
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , bytestring
    , criterion              >=1.0
    , deepseq
    , ghc-prim
    , text

executable aeson-benchmark-compare
  default-language: Haskell2010
  main-is:          Compare.hs
  hs-source-dirs:   ../examples/src .
  ghc-options:      -Wall -O2 -rtsopts
  other-modules:
    Compare.BufferBuilder
    Compare.JsonBench
    Twitter
    Twitter.Manual
    Typed.Common

  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , buffer-builder
    , bytestring
    , criterion              >=1.0
    , deepseq
    , ghc-prim
    , text

  if impl(ghc <8.4)
    other-modules: Compare.JsonBuilder
    build-depends: json-builder

  if !impl(ghc >=8.0)
    build-depends:
        fail
      , semigroups

executable aeson-benchmark-micro
  default-language: Haskell2010
  main-is:          Micro.hs
  hs-source-dirs:   ../examples/src .
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , bytestring
    , criterion              >=1.0
    , deepseq
    , ghc-prim
    , text

executable aeson-benchmark-typed
  default-language: Haskell2010
  main-is:          Typed.hs
  hs-source-dirs:   ../examples/src .
  ghc-options:      -Wall -O2 -rtsopts
  other-modules:
    Twitter
    Twitter.Generic
    Twitter.Manual
    Twitter.Options
    Twitter.TH
    Typed.Common
    Typed.Generic
    Typed.Manual
    Typed.TH

  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , bytestring
    , criterion              >=1.0
    , deepseq
    , ghc-prim
    , text
    , time

  if impl(ghc <8.0)
    build-depends: semigroups

executable aeson-benchmark-compare-with-json
  default-language: Haskell2010
  main-is:          CompareWithJSON.hs
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , blaze-builder
    , bytestring
    , criterion
    , deepseq
    , json
    , text

executable aeson-benchmark-aeson-encode
  default-language: Haskell2010
  main-is:          AesonEncode.hs
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , attoparsec
    , base
    , base-compat-batteries
    , bytestring
    , deepseq
    , time

executable aeson-benchmark-aeson-parse
  default-language: Haskell2010
  main-is:          AesonParse.hs
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , attoparsec
    , base
    , base-compat-batteries
    , bytestring
    , time

  if !impl(ghc >=8.0)
    build-depends:
        fail
      , semigroups

executable aeson-benchmark-json-parse
  default-language: Haskell2010
  main-is:          JsonParse.hs
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      base
    , base-compat-batteries
    , deepseq
    , json
    , time

executable aeson-benchmark-dates
  default-language: Haskell2010
  main-is:          Dates.hs
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , bytestring
    , criterion
    , deepseq
    , text
    , time

  if impl(ghc >=8.2)
    ghc-options: -Wno-simplifiable-class-constraints

executable aeson-benchmark-map
  default-language: Haskell2010
  main-is:          AesonMap.hs
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , bytestring
    , containers
    , criterion              >=1.0
    , deepseq
    , hashable
    , tagged
    , text
    , unordered-containers

executable aeson-benchmark-foldable
  default-language: Haskell2010
  main-is:          AesonFoldable.hs
  ghc-options:      -Wall -O2 -rtsopts
  build-depends:
      aeson-benchmarks
    , base
    , base-compat-batteries
    , bytestring
    , containers
    , criterion              >=1.0
    , deepseq
    , hashable
    , tagged
    , text
    , unordered-containers
    , vector

executable aeson-issue-673
  default-language: Haskell2010
  main-is:          Issue673.hs
  ghc-options:      -Wall -O1 -rtsopts
  build-depends:
      aeson-benchmarks
    , attoparsec
    , base
    , base-compat-batteries
    , bytestring
    , criterion              >=1.0
    , scientific

  if impl(ghc <8.0)
    build-depends: semigroups