Blob Blame History Raw
name:            aeson
version:         1.2.3.0
license:         BSD3
license-file:    LICENSE
category:        Text, Web, JSON
copyright:       (c) 2011-2016 Bryan O'Sullivan
                 (c) 2011 MailRank, Inc.
author:          Bryan O'Sullivan <bos@serpentine.com>
maintainer:      Adam Bergmark <adam@bergmark.nl>
stability:       experimental
tested-with:     GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
synopsis:        Fast JSON parsing and encoding
cabal-version:   >= 1.10
homepage:        https://github.com/bos/aeson
bug-reports:     https://github.com/bos/aeson/issues
build-type:      Simple
description:
    A JSON parsing and encoding library optimized for ease of use
    and high performance.
    .
    To get started, see the documentation for the @Data.Aeson@ module
    below.
    .
    Parsing performance on a late 2013 MacBook Pro (2.6GHz Core i7),
    running 64-bit GHC 7.10.1, for mostly-English tweets from Twitter's
    JSON search API:
    .
    * 6.4 KB payloads, English: 7570 msg\/sec (47.6 MB\/sec)
    .
    * 14.6 KB payloads, Japanese: 3261 msg\/sec (46.6 MB\/sec)
    .
    Encoding performance on the same machine and data:
    .
    * 6.4 KB payloads, English: 22738 msg\/sec (142.9 MB\/sec)
    .
    * 14.6 KB payloads, Japanese: 15911 msg\/sec (227.4 MB\/sec)
    .
    (A note on naming: in Greek mythology, Aeson was the father of Jason.)

extra-source-files:
    *.yaml
    README.markdown
    benchmarks/*.cabal
    benchmarks/*.hs
    benchmarks/*.py
    benchmarks/Compare/*.hs
    benchmarks/Makefile
    benchmarks/Typed/*.hs
    benchmarks/json-data/*.json
    cbits/*.c
    changelog.md
    examples/*.cabal
    examples/*.hs
    examples/Twitter/*.hs
    ffi/Data/Aeson/Parser/*.hs
    include/*.h
    tests/JSONTestSuite/test_parsing/*.json
    tests/JSONTestSuite/test_transform/*.json
    pure/Data/Aeson/Parser/*.hs

flag developer
  description: operate in developer mode
  default: False
  manual: True

flag fast
  description: compile without optimizations
  default: False
  manual: True

flag bytestring-builder
  description: Depend on the bytestring-builder package for backwards compatibility.
  default: False
  manual: False

flag cffi
  description: Controls whether to include c-ffi bits or pure haskell. Default to False for security.
  default: False
  manual: True

library
  default-language: Haskell2010
  hs-source-dirs: . attoparsec-iso8601/

  exposed-modules:
    Data.Aeson
    Data.Aeson.Encoding
    Data.Aeson.Parser
    Data.Aeson.Text
    Data.Aeson.Types
    Data.Aeson.TH

    Data.Aeson.Encoding.Internal
    Data.Aeson.Internal
    Data.Aeson.Internal.Time
    Data.Aeson.Parser.Internal

  -- Deprecated modules
  exposed-modules:
    Data.Aeson.Encode

  other-modules:
    Data.Aeson.Compat
    Data.Aeson.Encoding.Builder
    Data.Aeson.Internal.Functions
    Data.Aeson.Parser.Unescape
    Data.Aeson.Parser.Time
    Data.Aeson.Types.FromJSON
    Data.Aeson.Types.Generic
    Data.Aeson.Types.ToJSON
    Data.Aeson.Types.Class
    Data.Aeson.Types.Internal
    Data.Attoparsec.Time
    Data.Attoparsec.Time.Internal

  build-depends:
    attoparsec >= 0.13.0.1,
    base >= 4.5 && < 5,
    base-compat >= 0.9.1 && < 0.10,
    containers >= 0.4.2,
    deepseq >= 1.3 && < 1.5,
    dlist >= 0.6,
    ghc-prim >= 0.2,
    hashable >= 1.1.2.0,
    scientific >= 0.3.4.7 && < 0.4,
    tagged >=0.8.3 && <0.9,
    template-haskell >= 2.7,
    text >= 1.1.1.0,
    th-abstraction >= 0.2.2 && < 0.3,
    time >= 1.1.1.4,
    time-locale-compat >= 0.1.1 && < 0.2,
    unordered-containers >= 0.2.5.0 && < 0.3,
    uuid-types >= 1.0.3 && <1.1,
    vector >= 0.8

  if flag(bytestring-builder)
    build-depends: bytestring >= 0.9.2 && < 0.10.4,
                   bytestring-builder >= 0.10.4 && < 1
  else
    build-depends: bytestring >= 0.10.4 && < 0.11

  if !impl(ghc >= 8.0)
    -- `Data.Semigroup` and `Control.Monad.Fail` and `Control.Monad.IO.Class` are available in base only since GHC 8.0 / base 4.9
    build-depends:
      semigroups >= 0.18.2 && < 0.19,
      transformers >= 0.2.2.0,
      transformers-compat >= 0.3,
      fail == 4.9.*

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

  ghc-options: -Wall

  if flag(developer)
    ghc-options: -Werror
    ghc-prof-options: -auto-all

  if flag(fast)
    ghc-options: -O0
  else
    ghc-options: -O2

  include-dirs: include
  if impl(ghcjs) || !flag(cffi)
    hs-source-dirs: pure
    other-modules: Data.Aeson.Parser.UnescapePure
  else
    c-sources: cbits/unescape_string.c
    cpp-options: -DCFFI
    hs-source-dirs: ffi
    other-modules: Data.Aeson.Parser.UnescapeFFI

test-suite tests
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  hs-source-dirs: tests ffi pure
  main-is: Tests.hs
  c-sources: cbits/unescape_string.c
  ghc-options: -Wall -threaded -rtsopts

  other-modules:
    Data.Aeson.Parser.UnescapeFFI
    Data.Aeson.Parser.UnescapePure
    DataFamilies.Properties
    DataFamilies.Instances
    DataFamilies.Encoders
    DataFamilies.Types
    Encoders
    ErrorMessages
    Functions
    Instances
    Options
    Properties
    SerializationFormatSpec
    Types
    UnitTests
    UnitTests.NullaryConstructors

  build-depends:
    HUnit,
    QuickCheck >= 2.10.0.1 && < 2.11,
    aeson,
    integer-logarithms >= 1 && <1.1,
    attoparsec,
    base,
    base-compat,
    base-orphans >= 0.5.3 && <0.7,
    base16-bytestring,
    containers,
    directory,
    dlist,
    filepath,
    generic-deriving >= 1.10 && < 1.12,
    ghc-prim >= 0.2,
    hashable >= 1.2.4.0,
    scientific,
    tagged,
    template-haskell,
    test-framework,
    test-framework-hunit,
    test-framework-quickcheck2,
    text,
    time,
    time-locale-compat,
    unordered-containers,
    uuid-types,
    vector,
    quickcheck-instances >= 0.3.16

  if flag(bytestring-builder)
    build-depends: bytestring >= 0.9 && < 0.10.4,
                   bytestring-builder >= 0.10.4 && < 1
  else
    build-depends: bytestring >= 0.10.4

  if !impl(ghc >= 8.0)
    build-depends:
      semigroups >= 0.18.2 && < 0.19,
      transformers >= 0.2.2.0,
      transformers-compat >= 0.3

  if !impl(ghc >= 7.10)
    build-depends: nats >=1 && <1.2

  if impl(ghc >= 7.8)
    build-depends: hashable-time >= 0.2 && <0.3

  if flag(fast)
    ghc-options: -fno-enable-rewrite-rules

source-repository head
  type:     git
  location: git://github.com/bos/aeson.git