From f9ac11719ba9bc1f27c97b7dc0c2577d02dc48892a9802227c9708c094e8d350 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sat, 9 Mar 2024 22:01:03 +0000 Subject: [PATCH] osc copypac from project:devel:languages:haskell:ghc-9.8.x package:ghc-bitvec revision:2, using keep-link OBS-URL: https://build.opensuse.org/package/show/devel:languages:haskell/ghc-bitvec?expand=0&rev=10 --- bitvec.cabal | 172 +++++++++++++++++++++++++++++++++++++++++++++ ghc-bitvec.changes | 6 ++ ghc-bitvec.spec | 4 +- 3 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 bitvec.cabal diff --git a/bitvec.cabal b/bitvec.cabal new file mode 100644 index 0000000..1ed34f7 --- /dev/null +++ b/bitvec.cabal @@ -0,0 +1,172 @@ +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 +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 + 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 + . + * and + + do not offer mutable vectors. + . + * + is memory-efficient for 'Bool', but lacks + a handy 'Vector' interface and is not thread-safe. + +category: Data, Bit Vectors +author: Andrew Lelechenko , + James Cook + +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 diff --git a/ghc-bitvec.changes b/ghc-bitvec.changes index 90625e8..5106603 100644 --- a/ghc-bitvec.changes +++ b/ghc-bitvec.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Mar 8 21:08:37 UTC 2024 - Peter Simons + +- Update bitvec to version 1.1.5.0 revision 1. + Upstream has revised the Cabal build instructions on Hackage. + ------------------------------------------------------------------- Tue Aug 15 20:29:27 UTC 2023 - Peter Simons diff --git a/ghc-bitvec.spec b/ghc-bitvec.spec index 733a4a5..7a272c7 100644 --- a/ghc-bitvec.spec +++ b/ghc-bitvec.spec @@ -1,7 +1,7 @@ # # spec file for package ghc-bitvec # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -26,6 +26,7 @@ Summary: Space-efficient bit vectors License: BSD-3-Clause URL: https://hackage.haskell.org/package/%{pkg_name} Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz +Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal#/%{pkg_name}.cabal BuildRequires: ghc-Cabal-devel BuildRequires: ghc-base-devel BuildRequires: ghc-base-prof @@ -111,6 +112,7 @@ This package provides the Haskell %{pkg_name} profiling library. %prep %autosetup -n %{pkg_name}-%{version} +cp -p %{SOURCE1} %{pkg_name}.cabal %build %ghc_lib_build