summaryrefslogtreecommitdiff
path: root/text-short.cabal
blob: 3c9a3ffd977e319b4582f8abb82dc912537cdefe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
cabal-version:      1.18
name:               text-short
version:            0.1.5
x-revision:         2
synopsis:           Memory-efficient representation of Unicode text strings
license:            BSD3
license-file:       LICENSE
author:             Herbert Valerio Riedel
maintainer:         hvr@gnu.org
bug-reports:        https://github.com/hvr/text-short/issues
category:           Data
build-type:         Simple
description:
  This package provides the 'ShortText' type which is suitable for keeping many short strings in memory. This is similiar to how 'ShortByteString' relates to 'ByteString'.
  .
  The main difference between 'Text' and 'ShortText' is that 'ShortText' doesn't support zero-copy slicing (thereby saving 2 words), and, compared to text-1.*, that it uses UTF-8 instead of UTF-16 internally. Consequently, the memory footprint of a (boxed) 'ShortText' value is 4 words (2 words when unboxed) plus the length of the UTF-8 encoded payload.

tested-with:
  GHC ==7.8.4
   || ==7.10.3
   || ==8.0.2
   || ==8.2.2
   || ==8.4.4
   || ==8.6.5
   || ==8.8.3
   || ==8.10.7
   || ==9.0.2
   || ==9.2.7
   || ==9.4.4
   || ==9.6.1

extra-source-files: ChangeLog.md

source-repository head
  type:     git
  location: https://github.com/hvr/text-short.git

flag asserts
  description: Enable runtime-checks via @assert@
  default:     False
  manual:      True

library
  exposed-modules:
    Data.Text.Short
    Data.Text.Short.Partial
    Data.Text.Short.Unsafe

  other-modules:    Data.Text.Short.Internal
  build-depends:
      base              >=4.7     && <4.19
    , binary            >=0.7.1   && <0.9
    , bytestring        >=0.10.4  && <0.12
    , deepseq           >=1.3     && <1.5
    , ghc-prim          >=0.3.1   && <0.11
    , hashable          >=1.2.6   && <1.5
    , template-haskell  >=2.9.0.0 && <2.21
    , text              >=1.0     && <1.3 || >=2.0 && <2.1

  if impl(ghc >=8.0)
    build-depends: bytestring >=0.10.8.0

  if !impl(ghc >=8.0)
    build-depends: semigroups >=0.18.2 && <0.21

  -- GHC version specific PrimOps
  if impl(ghc >=8.4)
    hs-source-dirs: src-ghc804

  else
    c-sources:      cbits/memcmp.c
    hs-source-dirs: src-ghc708

  other-modules:    PrimOps
  hs-source-dirs:   src
  default-language: Haskell2010
  other-extensions:
    CPP
    GeneralizedNewtypeDeriving
    MagicHash
    Trustworthy
    UnliftedFFITypes
    Unsafe

  if impl(ghc >=8)
    other-extensions: TemplateHaskellQuotes

  else
    other-extensions: TemplateHaskell

  c-sources:        cbits/cbits.c

  if flag(asserts)
    ghc-options: -fno-ignore-asserts

  else
    cc-options: -DNDEBUG=1

  ghc-options:      -Wall
  cc-options:       -Wall

test-suite tests
  type:             exitcode-stdio-1.0
  hs-source-dirs:   src-test
  main-is:          Tests.hs

  -- bytestring dependency for cabal_macros.h
  build-depends:
      base
    , binary
    , bytestring
    , template-haskell
    , text
    , text-short

  -- deps which don't inherit constraints from library stanza:
  build-depends:
      tasty             >=1.4    && <1.5
    , tasty-hunit       >=0.10.0 && <0.11
    , tasty-quickcheck  >=0.10   && <0.11

  default-language: Haskell2010