Cabal revisions of bitvec-1.1.5.0
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
-name: bitvec-version: 1.1.5.0-cabal-version: 2.0-build-type: Simple-license: BSD3-license-file: LICENSE-copyright: 2019-2022 Andrew Lelechenko, 2012-2016 James Cook-maintainer: Andrew Lelechenko <andrew.lelechenko@gmail.com>-homepage: https://github.com/Bodigrim/bitvec-synopsis: Space-efficient bit vectors-description:- A newtype over 'Bool' with a better 'Vector' instance: 8x less memory, up to 3500x faster.- .- The <https://hackage.haskell.org/package/vector vector>- package represents unboxed arrays of 'Bool's- spending 1 byte (8 bits) per boolean.- This library provides a newtype wrapper 'Bit' and a custom instance- of an unboxed 'Vector', which packs bits densely,- achieving an __8x smaller memory footprint.__- The performance stays mostly the same;- the most significant degradation happens for random writes- (up to 10% slower).- On the other hand, for certain bulk bit operations- 'Vector' 'Bit' is up to 3500x faster than 'Vector' 'Bool'.- .- === Thread safety- .- * "Data.Bit" is faster, but writes and flips are not thread-safe.- This is because naive updates are not atomic:- they read the whole word from memory,- then modify a bit, then write the whole word back.- Concurrently modifying non-intersecting slices of the same underlying array- may also lead to unexpected results, since they can share a word in memory.- * "Data.Bit.ThreadSafe" is slower (usually 10-20%),- but writes and flips are thread-safe.- Additionally, concurrently modifying non-intersecting slices of the same underlying array- works as expected. However, operations that affect multiple elements are not- guaranteed to be atomic.- .- === Similar packages- .- * <https://hackage.haskell.org/package/bv bv> and- <https://hackage.haskell.org/package/bv-little bv-little>- do not offer mutable vectors.- .- * <https://hackage.haskell.org/package/array array>- is memory-efficient for 'Bool', but lacks- a handy 'Vector' interface and is not thread-safe.--category: Data, Bit Vectors-author: Andrew Lelechenko <andrew.lelechenko@gmail.com>,- James Cook <mokus@deepbondi.net>--tested-with: GHC ==8.4.4 GHC ==8.6.5 GHC ==8.8.1 GHC ==8.8.2 GHC ==8.8.4 GHC ==8.10.7 GHC ==9.0.2 GHC ==9.2.7 GHC ==9.4.4 GHC ==9.6.1-extra-doc-files:- changelog.md- README.md--source-repository head- type: git- location: git://github.com/Bodigrim/bitvec.git--flag simd- description:- Use a C SIMD implementation for the ultimate performance of `zipBits`, `invertBits` and `countBits`.- Disable this flag if there are problems with the C FFI.- default: True- manual: True--library- exposed-modules:- Data.Bit- Data.Bit.ThreadSafe- build-depends:- base >=4.11 && <5,- bytestring >=0.10 && <0.13,- deepseq <1.6,- primitive >=0.5,- vector >=0.11 && <0.14- default-language: Haskell2010- hs-source-dirs: src- other-modules:- Data.Bit.F2Poly- Data.Bit.F2PolyTS- Data.Bit.Immutable- Data.Bit.ImmutableTS- Data.Bit.Internal- Data.Bit.InternalTS- Data.Bit.Mutable- Data.Bit.MutableTS- Data.Bit.PdepPext- Data.Bit.Utils- ghc-options: -O2 -Wall -Wcompat- include-dirs: src-- if impl(ghc <9.0)- build-depends: integer-gmp- else- build-depends: ghc-bignum-- if flag(simd) && !arch(javascript) && !arch(wasm32)- c-sources: cbits/bitvec_simd.c- cc-options: -fopenmp-simd- cpp-options: -DUseSIMD- other-modules:- Data.Bit.SIMD--test-suite bitvec-tests- type: exitcode-stdio-1.0- main-is: Main.hs- build-depends:- base,- bitvec,- primitive >=0.5 && <0.9,- quickcheck-classes-base <0.7,- quickcheck-classes >=0.6.1 && <0.7,- vector >=0.11,- tasty <1.5,- tasty-quickcheck <0.11- default-language: Haskell2010- hs-source-dirs: test- other-modules:- Support- Tests.Conc- Tests.F2Poly- Tests.MVector- Tests.MVectorTS- Tests.SetOps- Tests.SetOpsTS- Tests.Vector- ghc-options: -Wall -threaded -rtsopts -Wcompat- include-dirs: test-- if impl(ghc <9.0)- build-depends: integer-gmp <1.2- else- build-depends: ghc-bignum--benchmark bitvec-bench- build-depends:- base,- bitvec,- containers <0.7,- random <1.3,- tasty,- tasty-bench >=0.3.2 && <0.4,- vector- type: exitcode-stdio-1.0- main-is: Bench.hs- default-language: Haskell2010- hs-source-dirs: bench- other-modules:- Bench.BitIndex- Bench.Common- Bench.GCD- Bench.Invert- Bench.Intersection- Bench.Product- Bench.RandomFlip- Bench.RandomRead- Bench.RandomWrite- Bench.Remainder- Bench.Reverse- Bench.Sum- Bench.Union- ghc-options: -O2 -Wall -Wcompat-- if impl(ghc <9.0)- build-depends: integer-gmp- else- build-depends: ghc-bignum+name: bitvec +version: 1.1.5.0 +x-revision: 1 +cabal-version: 2.0 +build-type: Simple +license: BSD3 +license-file: LICENSE +copyright: 2019-2022 Andrew Lelechenko, 2012-2016 James Cook +maintainer: Andrew Lelechenko <andrew.lelechenko@gmail.com> +homepage: https://github.com/Bodigrim/bitvec +synopsis: Space-efficient bit vectors +description: + A newtype over 'Bool' with a better 'Vector' instance: 8x less memory, up to 3500x faster. + . + The <https://hackage.haskell.org/package/vector vector> + package represents unboxed arrays of 'Bool's + spending 1 byte (8 bits) per boolean. + This library provides a newtype wrapper 'Bit' and a custom instance + of an unboxed 'Vector', which packs bits densely, + achieving an __8x smaller memory footprint.__ + The performance stays mostly the same; + the most significant degradation happens for random writes + (up to 10% slower). + On the other hand, for certain bulk bit operations + 'Vector' 'Bit' is up to 3500x faster than 'Vector' 'Bool'. + . + === Thread safety + . + * "Data.Bit" is faster, but writes and flips are not thread-safe. + This is because naive updates are not atomic: + they read the whole word from memory, + then modify a bit, then write the whole word back. + Concurrently modifying non-intersecting slices of the same underlying array + may also lead to unexpected results, since they can share a word in memory. + * "Data.Bit.ThreadSafe" is slower (usually 10-20%), + but writes and flips are thread-safe. + Additionally, concurrently modifying non-intersecting slices of the same underlying array + works as expected. However, operations that affect multiple elements are not + guaranteed to be atomic. + . + === Similar packages + . + * <https://hackage.haskell.org/package/bv bv> and + <https://hackage.haskell.org/package/bv-little bv-little> + do not offer mutable vectors. + . + * <https://hackage.haskell.org/package/array array> + is memory-efficient for 'Bool', but lacks + a handy 'Vector' interface and is not thread-safe. + +category: Data, Bit Vectors +author: Andrew Lelechenko <andrew.lelechenko@gmail.com>, + James Cook <mokus@deepbondi.net> + +tested-with: GHC ==8.4.4 GHC ==8.6.5 GHC ==8.8.1 GHC ==8.8.2 GHC ==8.8.4 GHC ==8.10.7 GHC ==9.0.2 GHC ==9.2.7 GHC ==9.4.4 GHC ==9.6.1 +extra-doc-files: + changelog.md + README.md + +source-repository head + type: git + location: git://github.com/Bodigrim/bitvec.git + +flag simd + description: + Use a C SIMD implementation for the ultimate performance of `zipBits`, `invertBits` and `countBits`. + Disable this flag if there are problems with the C FFI. + default: True + manual: True + +library + exposed-modules: + Data.Bit + Data.Bit.ThreadSafe + build-depends: + base >=4.11 && <5, + bytestring >=0.10 && <0.13, + deepseq <1.6, + primitive >=0.5, + vector >=0.11 && <0.14 + default-language: Haskell2010 + hs-source-dirs: src + other-modules: + Data.Bit.F2Poly + Data.Bit.F2PolyTS + Data.Bit.Immutable + Data.Bit.ImmutableTS + Data.Bit.Internal + Data.Bit.InternalTS + Data.Bit.Mutable + Data.Bit.MutableTS + Data.Bit.PdepPext + Data.Bit.Utils + ghc-options: -O2 -Wall -Wcompat + include-dirs: src + + if impl(ghc <9.0) + build-depends: integer-gmp + else + build-depends: ghc-bignum + + if flag(simd) && !arch(javascript) && !arch(wasm32) + c-sources: cbits/bitvec_simd.c + cc-options: -fopenmp-simd + cpp-options: -DUseSIMD + other-modules: + Data.Bit.SIMD + +test-suite bitvec-tests + type: exitcode-stdio-1.0 + main-is: Main.hs + build-depends: + base, + bitvec, + primitive >=0.5 && <0.9, + quickcheck-classes-base <0.7, + quickcheck-classes >=0.6.1 && <0.7, + vector >=0.11, + tasty <1.6, + tasty-quickcheck <0.11 + default-language: Haskell2010 + hs-source-dirs: test + other-modules: + Support + Tests.Conc + Tests.F2Poly + Tests.MVector + Tests.MVectorTS + Tests.SetOps + Tests.SetOpsTS + Tests.Vector + ghc-options: -Wall -threaded -rtsopts -Wcompat + include-dirs: test + + if impl(ghc <9.0) + build-depends: integer-gmp <1.2 + else + build-depends: ghc-bignum + +benchmark bitvec-bench + build-depends: + base, + bitvec, + containers <0.7, + random <1.3, + tasty, + tasty-bench >=0.3.2 && <0.4, + vector + type: exitcode-stdio-1.0 + main-is: Bench.hs + default-language: Haskell2010 + hs-source-dirs: bench + other-modules: + Bench.BitIndex + Bench.Common + Bench.GCD + Bench.Invert + Bench.Intersection + Bench.Product + Bench.RandomFlip + Bench.RandomRead + Bench.RandomWrite + Bench.Remainder + Bench.Reverse + Bench.Sum + Bench.Union + ghc-options: -O2 -Wall -Wcompat + + if impl(ghc <9.0) + build-depends: integer-gmp + else + build-depends: ghc-bignum
revision 2
name: bitvec version: 1.1.5.0 -x-revision: 1 +x-revision: 2 cabal-version: 2.0 build-type: Simple license: BSD3 build-depends: base, bitvec, - primitive >=0.5 && <0.9, + primitive >=0.5 && <0.10, quickcheck-classes-base <0.7, quickcheck-classes >=0.6.1 && <0.7, vector >=0.11, tasty <1.6, - tasty-quickcheck <0.11 + tasty-quickcheck <0.12 default-language: Haskell2010 hs-source-dirs: test other-modules: build-depends: base, bitvec, - containers <0.7, + containers <0.8, random <1.3, tasty, - tasty-bench >=0.3.2 && <0.4, + tasty-bench >=0.3.2 && <0.5, vector type: exitcode-stdio-1.0 main-is: Bench.hs
revision 3
name: bitvec version: 1.1.5.0 -x-revision: 2 +x-revision: 3 cabal-version: 2.0 build-type: Simple license: BSD3 base, bitvec, containers <0.8, - random <1.3, + random <1.4, tasty, tasty-bench >=0.3.2 && <0.5, vector