diff options
author | CoprDistGit <infra@openeuler.org> | 2023-10-30 02:47:39 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-10-30 02:47:39 +0000 |
commit | 87f5d4358f060b119f9f1935e99c91cf702eda08 (patch) | |
tree | 9eb2c3cbd8b9c10cd545cad38f600475a3588a2c | |
parent | f96eee1f9c8ccb7715889fee416b64ca8ef34036 (diff) |
automatic import of ghc-bitvecopeneuler23.09
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | ghc-bitvec.spec | 125 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 127 insertions, 0 deletions
@@ -0,0 +1 @@ +/bitvec-1.1.5.0.tar.gz diff --git a/ghc-bitvec.spec b/ghc-bitvec.spec new file mode 100644 index 0000000..97c3e03 --- /dev/null +++ b/ghc-bitvec.spec @@ -0,0 +1,125 @@ +%global pkg_name bitvec +%global pkgver %{pkg_name}-%{version} +%bcond_with tests + +Name: ghc-%{pkg_name} +Version: 1.1.5.0 +Release: 1 +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 +BuildRequires: ghc-Cabal-devel +BuildRequires: ghc-base-devel +BuildRequires: ghc-base-prof +BuildRequires: ghc-bytestring-devel +BuildRequires: ghc-bytestring-prof +BuildRequires: ghc-deepseq-devel +BuildRequires: ghc-deepseq-prof +BuildRequires: ghc-primitive-devel +BuildRequires: ghc-primitive-prof +BuildRequires: ghc-rpm-macros +BuildRequires: ghc-vector-devel +BuildRequires: ghc-vector-prof +ExcludeArch: %{ix86} +%if %{with tests} +BuildRequires: ghc-quickcheck-classes-base-devel +BuildRequires: ghc-quickcheck-classes-base-prof +BuildRequires: ghc-quickcheck-classes-devel +BuildRequires: ghc-quickcheck-classes-prof +BuildRequires: ghc-tasty-devel +BuildRequires: ghc-tasty-prof +BuildRequires: ghc-tasty-quickcheck-devel +BuildRequires: ghc-tasty-quickcheck-prof +%endif + +%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. + +%package devel +Summary: Haskell %{pkg_name} library development files +Requires: %{name} = %{version}-%{release} +Requires: ghc-compiler = %{ghc_version} +Requires(post): ghc-compiler = %{ghc_version} +Requires(postun): ghc-compiler = %{ghc_version} + +%description devel +This package provides the Haskell %{pkg_name} library development files. + +%package -n ghc-%{pkg_name}-help +Summary: Haskell %{pkg_name} library documentation +BuildArch: noarch + +%description -n ghc-%{pkg_name}-help +This package provides the Haskell %{pkg_name} library documentation. + +%package -n ghc-%{pkg_name}-prof +Summary: Haskell %{pkg_name} profiling library +Requires: ghc-%{pkg_name}-devel = %{version}-%{release} +Supplements: (ghc-%{pkg_name}-devel and ghc-prof) + +%description -n ghc-%{pkg_name}-prof +This package provides the Haskell %{pkg_name} profiling library. + +%prep +%autosetup -n %{pkg_name}-%{version} + +%build +%ghc_lib_build + +%install +%ghc_lib_install + +%check +%cabal_test + +%post devel +%ghc_pkg_recache + +%postun devel +%ghc_pkg_recache + +%files -f %{name}.files +%license LICENSE + +%files devel -f %{name}-devel.files +%doc README.md changelog.md + +%files -n ghc-%{pkg_name}-help -f ghc-%{pkg_name}-help.files +%license LICENSE + +%files -n ghc-%{pkg_name}-prof -f ghc-%{pkg_name}-prof.files + +%changelog +* Thu Sep 28 2023 Lin Runze <lrzlin@163.com> 1.1.5.0-1 +- Initial packaging (Version 1.1.5.0) @@ -0,0 +1 @@ +fa2a1b902c5e66e619d844d85c91d15b bitvec-1.1.5.0.tar.gz |