symbolize-0.1.0.1: symbolize.cabal
cabal-version: 2.2
-- This file has been generated from package.yaml by hpack version 0.36.0.
--
-- see: https://github.com/sol/hpack
name: symbolize
version: 0.1.0.1
synopsis: Efficient global Symbol table, with Garbage Collection.
description: Symbols, also known as Atoms or Interned Strings, are a common technique
to reduce memory usage and improve performance when using many small strings.
.
By storing a single copy of each encountered string in a global table and giving out indexes to that table,
it is possible to compare strings for equality in constant time, instead of linear (in string size) time.
.
The main advantages of Symbolize over existing symbol table implementations are:
.
- Garbage collection: Symbols which are no longer used are automatically cleaned up.
- `Symbol`s have a memory footprint of exactly 1 `Word` and are nicely unpacked by GHC.
- Support for any `Textual` type, including `String`, (strict and lazy) `Data.Text`, (strict and lazy) `Data.ByteString` etc.
- Thread-safe.
- Calls to `lookup` and `unintern` are free of atomic memory barriers (and never have to wait on a concurrent thread running `intern`)
- Support for a maximum of 2^64 symbols at the same time (you'll probably run out of memory before that point).
.
Please see the full README below or on GitHub at <https://github.com/Qqwy/haskell-symbolize#readme>
category: Data, Data Structures
homepage: https://github.com/Qqwy/haskell-symbolize#readme
bug-reports: https://github.com/Qqwy/haskell-symbolize/issues
author: Qqwy / Marten
maintainer: qqwy@gmx.com
copyright: 2023 Marten Wijnja
license: BSD-3-Clause
license-file: LICENSE
build-type: Simple
extra-source-files:
README.md
CHANGELOG.md
source-repository head
type: git
location: https://github.com/Qqwy/haskell-symbolize
library
exposed-modules:
Symbolize
other-modules:
Symbolize.Textual
Symbolize.Accursed
hs-source-dirs:
src
default-extensions:
BangPatterns
OverloadedStrings
DeriveAnyClass
TypeApplications
NamedFieldPuns
ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
build-depends:
base >=4.7 && <5
, bytestring >=0.11.0 && <0.12
, deepseq >=1.4.0 && <1.5
, hashable >=1.4.0 && <1.5
, text >=2.0 && <2.2
, text-display >=0.0.5 && <0.1
, text-short >=0.1.0 && <0.2
, unordered-containers >=0.2.0 && <0.3
default-language: Haskell2010
test-suite symbolize-doctest
type: exitcode-stdio-1.0
main-is: DocTest.hs
other-modules:
Paths_symbolize
autogen-modules:
Paths_symbolize
hs-source-dirs:
test/doctest
default-extensions:
BangPatterns
OverloadedStrings
DeriveAnyClass
TypeApplications
NamedFieldPuns
ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
build-depends:
base >=4.7 && <5
, bytestring >=0.11.0 && <0.12
, deepseq >=1.4.0 && <1.5
, doctest-parallel
, hashable >=1.4.0 && <1.5
, symbolize
, text >=2.0 && <2.2
, text-display >=0.0.5 && <0.1
, text-short >=0.1.0 && <0.2
, unordered-containers >=0.2.0 && <0.3
default-language: Haskell2010
test-suite symbolize-test
type: exitcode-stdio-1.0
main-is: Suite.hs
other-modules:
SymbolizeTest
Paths_symbolize
autogen-modules:
Paths_symbolize
hs-source-dirs:
test/suite
default-extensions:
BangPatterns
OverloadedStrings
DeriveAnyClass
TypeApplications
NamedFieldPuns
ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
build-tool-depends:
tasty-discover:tasty-discover
build-depends:
async
, base >=4.7 && <5
, bytestring >=0.11.0 && <0.12
, deepseq >=1.4.0 && <1.5
, hashable >=1.4.0 && <1.5
, hedgehog
, symbolize
, tasty
, tasty-golden
, tasty-hedgehog
, tasty-hunit
, text >=2.0 && <2.2
, text-display >=0.0.5 && <0.1
, text-short >=0.1.0 && <0.2
, unordered-containers >=0.2.0 && <0.3
default-language: Haskell2010