packages feed

hermes-json-0.2.0.1: hermes-json.cabal

cabal-version:      3.0
name:               hermes-json
version:            0.2.0.1
category:           Text, Web, JSON, FFI
synopsis:           Fast JSON decoding via simdjson C++ bindings
description:
  A JSON parsing library focused on speed that binds to the simdjson C++ library using
  the Haskell FFI. Hermes offers some helpful functions for building fast JSON decoders
  for your Haskell types.
homepage:           https://github.com/velveteer/hermes
license:            MIT
license-file:       LICENSE
author:             Josh Miller <notjoshmiller@gmail.com>
maintainer:         Josh Miller <notjoshmiller@gmail.com>
extra-source-files:
    cbits/simdjson/simdjson.h
  , cbits/simdjson/simdjson.cpp
  , cbits/simdjson/LICENSE
  , cbits/lib.cpp
  , CHANGELOG.md
  , README.md
tested-with:
  , GHC == 8.10.7
  , GHC == 9.0.1
  , GHC == 9.2.1
  , GHC == 9.4.1
source-repository head
  type: git
  location: git@github.com:velveteer/hermes.git

flag strict
  description: Enable more GHC warnings plus @-Werror@, which turns warnings into errors.
  default: False
  manual: True

flag native_comp
  description: Target native architecture for C++ compiler
  default: False
  manual: True

flag debug
  description: Enable C++ debug support
  default: False
  manual: True

library
  default-extensions:
    OverloadedStrings
  exposed-modules:
    Data.Hermes
    Data.Hermes.Decoder
    Data.Hermes.Decoder.Path
    Data.Hermes.Decoder.Time
    Data.Hermes.Decoder.Types
    Data.Hermes.Decoder.Value
    Data.Hermes.SIMDJSON
    Data.Hermes.SIMDJSON.Bindings
    Data.Hermes.SIMDJSON.Types
    Data.Hermes.SIMDJSON.Wrapper
  build-depends:
    attoparsec         >= 0.13.1 && < 0.15,
    attoparsec-iso8601 >= 1.0.2.0 && < 1.0.3.0,
    base               >= 4.13 && < 4.18,
    bytestring         >= 0.10.12 && < 0.12,
    deepseq            >= 1.4.4 && < 1.5,
    dlist              >= 0.8 && < 1.1,
    mtl                >= 2.1 && < 2.3,
    scientific         >= 0.3.6 && < 0.4,
    text               >= 1.2.3.0 && < 1.3 || >= 2.0 && < 2.1,
    transformers       >= 0.5.6 && < 0.6,
    time               >= 1.9.3 && < 1.13,
    time-compat        >= 1.9.5 && < 1.10,
    unliftio           >= 0.2.14 && < 0.3,
    unliftio-core      >= 0.2.0 && < 0.3

  hs-source-dirs:   src
  default-language: Haskell2010
  if flag(strict)
    ghc-options:
      -Wall
      -Werror
      -Wcompat
      -Widentities
      -Wincomplete-uni-patterns
      -Wincomplete-record-updates
      -Wmissing-export-lists
      -Wno-implicit-prelude
      -Wno-safe
      -Wno-unsafe
      -Wnoncanonical-monad-instances
      -Wredundant-constraints
      -Wpartial-fields
      -Wmissed-specialisations
      -Wunused-packages
  else
    ghc-options: -Wall
  cxx-sources:
    cbits/lib.cpp
    cbits/simdjson/simdjson.cpp
  if flag(native_comp)
    if flag (debug)
      cxx-options: -std=c++17 -march=native
    else
      cxx-options: -std=c++17 -DNDEBUG -march=native
  else
    if flag (debug)
      cxx-options: -std=c++17
    else
      cxx-options: -std=c++17 -DNDEBUG
  include-dirs:
    cbits
  install-includes:
    cbits/simdjson/simdjson.h
  extra-libraries:
    stdc++

test-suite hermes-test
  default-language: Haskell2010
  type:             exitcode-stdio-1.0
  hs-source-dirs:   tests
  main-is:          test.hs
  ghc-options: -Wall
  build-depends:
    aeson          >= 2.0.1 && < 2.2,
    base,
    bytestring,
    containers     >= 0.6.2 && < 0.7,
    hermes-json,
    scientific,
    text,
    hedgehog       >= 1.0.5 && < 1.2,
    tasty          >= 1.4.2 && < 1.6,
    tasty-hedgehog >= 1.1.0 && < 1.4,
    time