packages feed

rapidhash-0.1.0.0: rapidhash.cabal

cabal-version: 2.2

-- This file has been generated from package.yaml by hpack version 0.39.6.
--
-- see: https://github.com/sol/hpack

name:           rapidhash
version:        0.1.0.0
synopsis:       rapidhash v3 - very fast, high-quality, non-cryptographic hashing
description:    Zero-copy FFI bindings to rapidhash v3, a very fast, high-quality,
                non-cryptographic hash. The upstream single-header C implementation is
                vendored and ships with this package, so there is no system dependency.
                .
                The rapidhash algorithm itself is platform-independent. This package's
                byte-oriented instances (Text, ByteString, ShortByteString, ByteArray)
                produce stable, portable digests you can persist and compare across
                machines; the element-typed Vector and PrimArray instances hash raw memory
                as a fast path for large in-memory working sets and are not portable across
                word width or endianness.
                .
                This is not a cryptographically secure hash. Use something else if you need cryptographic
                security.
                .
                For more information, see the upstream repository: https://github.com/Nicoshev/rapidhash
category:       Data
homepage:       https://github.com/jtnuttall/lithon#readme
bug-reports:    https://github.com/jtnuttall/lithon/issues
author:         Jeremy Nuttall
maintainer:     jeremy@jeremy-nuttall.com
copyright:      (c) 2026 Jeremy Nuttall
license:        BSD-3-Clause
license-files:  LICENSE,
                LICENSE_rapidhash
build-type:     Simple
tested-with:
    GHC == 9.8.4
  , GHC == 9.10.3
  , GHC == 9.12.4
extra-source-files:
    cbits/rapidhash.h
    cbits/rapidhash_ext.h
    test/pin/pin.c
    test/pin/rapidhash-v3-pin.txt
extra-doc-files:
    README.md
    CHANGELOG.md

source-repository head
  type: git
  location: https://github.com/jtnuttall/lithon
  subdir: rapidhash

flag aeson
  description: Include ToJSON/FromJSON and ToJSONKey/FromJSONKey instances.
  manual: True
  default: False

flag llvm-bench
  description: Builds the benchmarks with GHC's LLVM backend so its effect can be measured
               on your hardware. Requires an LLVM toolchain matching your GHC's supported
               window, and GHC >= 9.10 for -pgmlas.
  manual: True
  default: False

flag optimize
  description: Turns on optimizations. Right now, this means -O2 for GHC and -O3 for the C compiler.
               .
               Since the library is tiny, this shouldn't be too much trouble, but you can disable
               this flag if it's slowing your builds too much.
  manual: True
  default: True

library
  exposed-modules:
      Data.Hash.RapidHash
      Data.Hash.RapidHash.Aeson
      Data.Hash.RapidHash.Class
      Data.Hash.RapidHash.FFI
      Data.Hash.RapidHash.Types
  other-modules:
      Paths_rapidhash
  autogen-modules:
      Paths_rapidhash
  hs-source-dirs:
      src
  default-extensions:
      BlockArguments
      DeriveAnyClass
      DerivingStrategies
      DerivingVia
      DuplicateRecordFields
      LambdaCase
      NoFieldSelectors
      OverloadedLabels
      OverloadedRecordDot
      RecordWildCards
  ghc-options: -Wmissing-deriving-strategies -Wmissing-export-lists -Wredundant-constraints -Wall
  include-dirs:
      cbits
  build-depends:
      base >=4.19 && <4.22
    , binary ==0.8.*
    , bytestring ==0.12.*
    , bytestring-lexing ==0.5.*
    , hashable ==1.5.*
    , primitive >=0.8 && <0.10
    , text ==2.1.*
    , text-builder-linear >=0.1.1 && <0.2
    , vector ==0.13.*
  default-language: GHC2021
  if flag(optimize)
    ghc-options: -O2
    cc-options: -O3
  if flag(aeson)
    cpp-options: -DWANT_AESON
    build-depends:
        aeson >=2.2 && <2.4

test-suite rapidhash-doctest
  type: exitcode-stdio-1.0
  main-is: Doctest.hs
  other-modules:
      Paths_rapidhash
  autogen-modules:
      Paths_rapidhash
  hs-source-dirs:
      doctest
  default-extensions:
      BlockArguments
      DeriveAnyClass
      DerivingStrategies
      DerivingVia
      DuplicateRecordFields
      LambdaCase
      NoFieldSelectors
      OverloadedLabels
      OverloadedRecordDot
      RecordWildCards
  ghc-options: -Wmissing-deriving-strategies -Wmissing-export-lists -Wredundant-constraints -Wall -threaded
  include-dirs:
      cbits
  build-depends:
      base >=4.19 && <4.22
    , binary ==0.8.*
    , bytestring ==0.12.*
    , bytestring-lexing ==0.5.*
    , doctest-parallel ==0.4.*
    , hashable ==1.5.*
    , primitive >=0.8 && <0.10
    , rapidhash
    , text ==2.1.*
    , text-builder-linear >=0.1.1 && <0.2
    , vector ==0.13.*
  default-language: GHC2021

test-suite rapidhash-test
  type: exitcode-stdio-1.0
  main-is: Driver.hs
  other-modules:
      RapidHashTest
      Paths_rapidhash
  autogen-modules:
      Paths_rapidhash
  hs-source-dirs:
      test
  default-extensions:
      BlockArguments
      DeriveAnyClass
      DerivingStrategies
      DerivingVia
      DuplicateRecordFields
      LambdaCase
      NoFieldSelectors
      OverloadedLabels
      OverloadedRecordDot
      RecordWildCards
  ghc-options: -Wmissing-deriving-strategies -Wmissing-export-lists -Wredundant-constraints -Wall -Wno-missing-export-lists -threaded -rtsopts -with-rtsopts=-N
  include-dirs:
      cbits
  build-tool-depends:
      tasty-discover:tasty-discover ==5.2.*
  build-depends:
      base >=4.19 && <4.22
    , binary ==0.8.*
    , bytestring ==0.12.*
    , bytestring-lexing ==0.5.*
    , hashable ==1.5.*
    , hedgehog ==1.7.*
    , primitive >=0.8 && <0.10
    , rapidhash
    , tasty ==1.5.*
    , tasty-hedgehog ==1.4.*
    , tasty-hunit ==0.10.*
    , text ==2.1.*
    , text-builder-linear >=0.1.1 && <0.2
    , vector ==0.13.*
  default-language: GHC2021

benchmark rapidhash-bench
  type: exitcode-stdio-1.0
  main-is: Bench.hs
  other-modules:
      Paths_rapidhash
  autogen-modules:
      Paths_rapidhash
  hs-source-dirs:
      bench
  default-extensions:
      BlockArguments
      DeriveAnyClass
      DerivingStrategies
      DerivingVia
      DuplicateRecordFields
      LambdaCase
      NoFieldSelectors
      OverloadedLabels
      OverloadedRecordDot
      RecordWildCards
  ghc-options: -Wmissing-deriving-strategies -Wmissing-export-lists -Wredundant-constraints -Wall -threaded -rtsopts "-with-rtsopts=-N -A32m -T" -O2
  include-dirs:
      cbits
  build-depends:
      base >=4.19 && <4.22
    , binary ==0.8.*
    , bytestring ==0.12.*
    , bytestring-lexing ==0.5.*
    , deepseq >=1.5 && <1.7
    , hashable ==1.5.*
    , murmur-hash ==0.1.*
    , primitive >=0.8 && <0.10
    , rapidhash
    , tasty ==1.5.*
    , tasty-bench ==0.5.*
    , text ==2.1.*
    , text-builder-linear >=0.1.1 && <0.2
    , vector ==0.13.*
    , xxhash-ffi ==0.3.*
  default-language: GHC2021
  if flag(llvm-bench)
    ghc-options: -fllvm -pgmlo opt -pgmlc llc -pgmlas clang