Accepting request 1157234 from devel:languages:haskell

Update Haskell ecosystem to GHC version 9.8.2.

OBS-URL: https://build.opensuse.org/request/show/1157234
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ghc-bitvec?expand=0&rev=4
This commit is contained in:
Dominique Leuenberger 2024-03-20 20:13:54 +00:00 committed by Git OBS Bridge
commit 96e644dafd
3 changed files with 181 additions and 1 deletions

172
bitvec.cabal Normal file
View File

@ -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 <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

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Fri Mar 8 21:08:37 UTC 2024 - Peter Simons <psimons@suse.com>
- 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 <psimons@suse.com>

View File

@ -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