Cabal-Version: 2.2 -- Cabal >=2.2 is required for: -- -- Since 2.1, the Cabal-Version must be the absolutely first thing -- in the file, even before comments. Also, no longer uses ">=". -- ---------------------------------------------------------------- -- wren gayle romano ~ 2022.03.05 ---------------------------------------------------------------- Name: bytestring-trie Version: 0.2.7 Build-Type: Simple Stability: provisional Homepage: https://wrengr.org/software/hackage.html Bug-Reports: https://github.com/wrengr/bytestring-trie/issues Author: wren gayle romano Maintainer: wren@cpan.org Copyright: 2008–2022 wren gayle romano -- Cabal-2.2 requires us to say "BSD-3-Clause" not "BSD3" License: BSD-3-Clause License-File: LICENSE Category: Data, Data Structures Synopsis: An efficient finite map from bytestrings to values. Description: An efficient finite map from bytestrings to values. . The implementation is based on big-endian patricia trees, like "Data.IntMap". We first trie on the elements of "Data.ByteString" and then trie on the big-endian bit representation of those elements. Patricia trees have efficient algorithms for union and other merging operations, but they're also quick for lookups and insertions. . If you are only interested in being able to associate strings to values, then you may prefer the @hashmap@ package which is faster for those only needing a map-like structure. This package is intended for those who need the extra capabilities that a trie-like structure can offer (e.g., structure sharing to reduce memory costs for highly redundant keys, taking the submap of all keys with a given prefix, contextual mapping, extracting the minimum and maximum keys, etc.) Extra-source-files: AUTHORS, CHANGELOG, README.md -- This package should still work as far back as GHC 7.4.1: -- -- However, we only list here what we still verify via CI: -- Tested-With: GHC ==8.0.2, GHC ==8.2.2, GHC ==8.4.4, GHC ==8.6.5, GHC ==8.8.4, GHC ==8.10.3, GHC ==9.0.1, GHC ==9.2.1 -- These are the versions of our dependencies which ship with the -- above. Alas, we can't merge this with the above because cabal -- files only have full-line comments, not end-of-line comments. -- -- GHC Cabal base bytestring binary deepseq -- 8.0 1.24 4.9 0.10.8.1 0.8.3.0 1.4.2.0 -- 8.2 2.0 4.10 0.10.8.2 0.8.5.1 1.4.3.0 -- 8.4 2.2 4.11 == == == -- 8.6 2.4 4.12 == 0.8.6.0 1.4.4.0 -- 8.8 3.0 4.13 0.10.9+ 0.8.7.0 == -- 8.10 3.2 4.14 0.10.10+ 0.8.8.0 == -- 9.0 3.4 4.15 0.10.12 == 1.4.5.0 -- 9.2 3.6 4.16 0.11.1 0.8.9.0 1.4.6.0 Source-Repository head Type: git Location: https://github.com/wrengr/bytestring-trie.git ---------------------------------------------------------------- -- This stanza requires Cabal>=2.2: -- -- While Cabal-2.2 only ships with GHC 8.4.1, the dependencies to -- build it have essentially the same lower bounds as we do. (They -- require bytestring>=0.9.2.1 and deepseq>=1.3) So users of older -- GHC should still be able to compile it; and if they can't, then -- they already can't compile this package. -- -- N.B., the "import:" field must be the first thing in a stanza. Common library-build-depends Default-Language: Haskell2010 -- The lower bounds are (probably still) more restrictive than -- necessary, but once upon a time they were the lowest bounds -- we verified (for GHC 7.4.1). We no longer maintain CI tests -- that far back, but they still seem to work according to Hackage: -- Build-Depends: base >= 4.5 && < 4.17 , bytestring >= 0.9.2 && < 0.12 , binary >= 0.5.1 && < 0.11 , deepseq >= 1.2 && < 1.5 -- TODO: in lieu of using CPP to expose internals to the tests/benchmarks, -- we should consider using: -- Library Import: library-build-depends Hs-Source-Dirs: src Exposed-Modules: Data.Trie , Data.Trie.Convenience , Data.Trie.Internal Other-Modules: Data.Trie.Internal.BitTwiddle , Data.Trie.Internal.ByteString , Data.Trie.Internal.Errors ---------------------------------------------------------------- -- See the cabal file for bytestring-lexing for more info about -- setting up Tasty. Test-Suite test-all Import: library-build-depends Type: exitcode-stdio-1.0 Hs-Source-Dirs: dev -- NOTE: Test-Suite Main-Is is relative to Hs-Source-Dirs; -- unlike Executable Main-Is, which is relative to this cabal -- file's directory instead. Main-Is: Test/Main.hs Other-Modules: Shared.BaseCompat , Test.Utils , Test.Properties -- Test.Validity -- Test.ByteStringInternal -- We must include our own library for the tests to use it; but -- we must not give a version restriction lest Cabal give warnings. -- There's also bug : -- if we don't pass -any, then Cabal will fill in ">= 0 && <= $ThisVersion" -- which will also give a warning. Build-Depends: bytestring-trie -any , tasty >= 0.10.1.2 && < 1.5 , tasty-smallcheck >= 0.8.0.1 && < 0.9 , tasty-quickcheck >= 0.8.3.2 && < 0.11 -- N.B., @tasty-hunit@ is just a partial API clone; -- whereas @tasty-hunit-compat@ is a proper integration -- with HUnit itself. Also, tasty-hunit-compat actually -- depends on tasty-hunit; if you're wanting to minimize -- dependencies. , tasty-hunit < 0.11 , QuickCheck >= 2.10 && < 2.15 , smallcheck >= 1.1.1 && < 1.3 -- lazysmallcheck >= 0.6 && < 0.7 ---------------------------------------------------------------- -- Can't put the "Type:" field in here; or rather even if we do, -- it's still required in each of the Benchmark stanzas... Common bench-common Import: library-build-depends if impl(ghc) GHC-Options: -with-rtsopts=-A32m -- TODO: this was recommended somewhere for benchmarks, but is -- --nonmoving-gc actually good for our use case? (It's -- concurrent-mark&sweep for the old generations; instead of -- the default stop-the-world generational copying collector) --if impl(ghc >= 8.10) -- GHC-Options: -with-rtsopts=--nonmoving-gc if impl(ghc) GHC-Options: -Wall -O2 -rtsopts Hs-Source-Dirs: dev Build-Depends: bytestring-trie -any -- TODO: try using @gauge@ instead of @criterion@, -- to reduce the transitive dependencies. -- BUG: @gauge@ depends on @basement@ which as of -- version 0.0.12 doesn't support GHC 9.2; so we'll -- have to revisit this later. , criterion , QuickCheck >= 2.10 && < 2.15 Benchmark bench-Regression Import: bench-common Type: exitcode-stdio-1.0 -- NOTE: Benchmark Main-Is behaves like Test-Suite Main-Is -- (not like Executable Main-Is). Main-Is: Bench/Regression.hs if impl(ghc) GHC-Options: -main-is Bench.Regression.main Other-Modules: Shared.BaseCompat , Bench.Foldable Benchmark bench-Foldable Import: bench-common Type: exitcode-stdio-1.0 Main-Is: Bench/Foldable.hs if impl(ghc) GHC-Options: -main-is Bench.Foldable.main Other-Modules: Shared.BaseCompat Benchmark bench-MatchOne Import: bench-common Type: exitcode-stdio-1.0 Main-Is: Bench/MatchOne.hs Benchmark bench-UnionWith Import: bench-common Type: exitcode-stdio-1.0 Main-Is: Bench/UnionWith.hs ---------------------------------------------------------------- ----------------------------------------------------------- fin.