summaryrefslogtreecommitdiff
path: root/dev-haskell/hashtables
diff options
context:
space:
mode:
Diffstat (limited to 'dev-haskell/hashtables')
-rw-r--r--dev-haskell/hashtables/Manifest7
-rw-r--r--dev-haskell/hashtables/hashtables-1.1.2.1.ebuild35
-rw-r--r--dev-haskell/hashtables/hashtables-1.2.1.0.ebuild36
-rw-r--r--dev-haskell/hashtables/metadata.xml112
4 files changed, 190 insertions, 0 deletions
diff --git a/dev-haskell/hashtables/Manifest b/dev-haskell/hashtables/Manifest
new file mode 100644
index 000000000000..a60e7f65bcd8
--- /dev/null
+++ b/dev-haskell/hashtables/Manifest
@@ -0,0 +1,7 @@
+DIST hashtables-1.1.2.1.tar.gz 48553 SHA256 c50d910fea2e81eca53d9a2dfbc925246be5b7cc2d0854c6d9e95eaab05ac684 SHA512 87739d4021b705e40982e66925400eea38efd2f2a11dc46626f33d2a9c9287a5a323d93c82d6e8415aef0434350256fda80819a4bbb58ff2afee74ed755c266a WHIRLPOOL 26fd049380d0dbdd959eb2d778b8409bc901f307db8e65c26193b1abc70d6d715ffb47fa6ef1343d60897fc580f8f101d719a547f139dadb3a3bb51da5ab9bd1
+DIST hashtables-1.2.1.0.tar.gz 53706 SHA256 ef5122c8f3b72d1e817a4f2adb410ad88b30818934a276b7184790697f4fdcac SHA512 2c6cd17434402ff963a1b3357e58dfab3d4b60f5a2848b5433dcbbc1705d24707eacfc36af5dfb461ab03ce678c0736f3277292677e8ab297b306bd14e797e64 WHIRLPOOL fba19771e0d875430571aaa8e72666e2d4355554217ecb97a4611525f0e01bf4f6ba96e80c15e5c514b4ac8ca34271ac6c8bf63086e7294aabb60279cf77ca9c
+EBUILD hashtables-1.1.2.1.ebuild 1054 SHA256 7c7d17a39b722c9858889e0a8483df5d8703776ba57a039b3dfd2b8f45fdb7d9 SHA512 04d535bb5650c804188b04f54828fa01bbcac42d5eab49ac1f32e36f8479be018546a415d1c289cb51858f42c0818be71a01396dad2fb16579c76f5646ce339b WHIRLPOOL 2c9a5086200c79d8b7dd5f41250372624d6b8a8210c1b3244e885b79b4f05b629822feee78e44497e9e756fd14a39e5f735a2c25383555bcfa74ae1d7b741c19
+EBUILD hashtables-1.2.1.0.ebuild 1103 SHA256 c0234506ad6f34c794550679889923114cb9c3aa1b6586386a88a9a82f4a3865 SHA512 5e92d70af6adcf221f166e4644ea54287494e882b2699aacc297b835f880a3faf22a52b21285fb61ed4a99e7390ea2e64678e19bf5a19cecddf12f8976bbad7f WHIRLPOOL e44c6953fa4071ee8dc657d118905ee4fc4d72a65af6e08dde241d4d66c8f0c9b3da5c3810e068253686f8083aad154865a4f1cf3fb7db2d94646670332e3024
+MISC ChangeLog 3540 SHA256 cd881df17b8e4efc09744aeb73531859fe4438f44329dccc62d1dd0a5d055a6b SHA512 74aee815200aea4a6f32c0796dcb0286caba12663a3d32764417357bd80cd6b960410df342d1426bbfb707d3fb9c6a0d0edf419290578a509f51ae8b8515d632 WHIRLPOOL c16c9d82a66b1c47596c4df1e55336ef2f523be990942cb0dca4a408cf9c51b6282c66e52531cca3d89250b31a0cb0b4acf024dcd5c653cd45038c0979425366
+MISC ChangeLog-2015 3714 SHA256 089220d0dcb6d400d667532536d222b40a20716e62f6a064f8646a7e26edea96 SHA512 567024c7a213d2613412af6d7e686d85d42fa99fea162d539b7bfbef568110f08e5a303ab93ca8f05de6e4231fe0da020a6d4b73de93e3d76395223c8edc005a WHIRLPOOL add2a43a08cf1c05667721111d37b428772759a5891ec7afd0874f73c76f45ea622185ab841889b6a5464e7a8858c0339262fdfe4f74994553691b95f4031944
+MISC metadata.xml 4993 SHA256 bca99deb55a713172f5ee82e04468409c385f92ea78bbb5f547a5af46c148b8c SHA512 e044a681e12ffc5e454d24aa72cc2917970fec6bcc603b559a4205f55143b1dc77920de0f9e6456b612397654c7bbf5cb76fc6464f556e76e4ebc79484d88e13 WHIRLPOOL 50b5f5ff88cb8850b9fec51ac3d9bae3cd90b9a2bf8ea32a0bd5d5ccfbd25dd546f79397f42276498ed7779ad959df29be7e33bf2a7c03ef4a2e1872b2aa45bd
diff --git a/dev-haskell/hashtables/hashtables-1.1.2.1.ebuild b/dev-haskell/hashtables/hashtables-1.1.2.1.ebuild
new file mode 100644
index 000000000000..b033729e272c
--- /dev/null
+++ b/dev-haskell/hashtables/hashtables-1.1.2.1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+# ebuild generated by hackport 0.3.4.9999
+
+CABAL_FEATURES="lib profile haddock hoogle hscolour"
+inherit haskell-cabal
+
+DESCRIPTION="Mutable hash tables in the ST monad"
+HOMEPAGE="https://github.com/gregorycollins/hashtables"
+SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0/${PV}"
+KEYWORDS="~alpha amd64 ~ia64 ppc ppc64 sparc x86"
+IUSE="bounds-checking portable cpu_flags_x86_sse4_1 +unsafe-tricks"
+
+RDEPEND="dev-haskell/primitive:=[profile?]
+ >=dev-haskell/vector-0.7:=[profile?] <dev-haskell/vector-0.12:=[profile?]
+ >=dev-lang/ghc-6.10.4:=
+ >=dev-haskell/hashable-1.1:=[profile?] <dev-haskell/hashable-1.3:=[profile?]
+"
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.8
+"
+
+src_configure() {
+ haskell-cabal_src_configure \
+ $(cabal_flag bounds-checking bounds-checking) \
+ $(cabal_flag portable portable) \
+ $(cabal_flag cpu_flags_x86_sse4_1 sse41) \
+ $(cabal_flag unsafe-tricks unsafe-tricks)
+}
diff --git a/dev-haskell/hashtables/hashtables-1.2.1.0.ebuild b/dev-haskell/hashtables/hashtables-1.2.1.0.ebuild
new file mode 100644
index 000000000000..9001909211fc
--- /dev/null
+++ b/dev-haskell/hashtables/hashtables-1.2.1.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+# ebuild generated by hackport 0.4.6.9999
+#hackport: flags: sse42:cpu_flags_x86_sse4_2
+
+CABAL_FEATURES="lib profile haddock hoogle hscolour"
+inherit haskell-cabal
+
+DESCRIPTION="Mutable hash tables in the ST monad"
+HOMEPAGE="https://github.com/gregorycollins/hashtables"
+SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="bounds-checking cpu_flags_x86_sse4_2 portable +unsafe-tricks"
+
+RDEPEND="dev-haskell/primitive:=[profile?]
+ >=dev-haskell/vector-0.7:=[profile?] <dev-haskell/vector-0.12:=[profile?]
+ >=dev-lang/ghc-7.4.1:=
+ >=dev-haskell/hashable-1.1:=[profile?] <dev-haskell/hashable-1.3:=[profile?]
+"
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.8
+"
+
+src_configure() {
+ haskell-cabal_src_configure \
+ $(cabal_flag bounds-checking bounds-checking) \
+ $(cabal_flag portable portable) \
+ $(cabal_flag cpu_flags_x86_sse4_2 sse42) \
+ $(cabal_flag unsafe-tricks unsafe-tricks)
+}
diff --git a/dev-haskell/hashtables/metadata.xml b/dev-haskell/hashtables/metadata.xml
new file mode 100644
index 000000000000..537275d86282
--- /dev/null
+++ b/dev-haskell/hashtables/metadata.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>haskell@gentoo.org</email>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription>
+ This package provides a couple of different implementations of mutable hash
+ tables in the ST monad, as well as a typeclass abstracting their common
+ operations, and a set of wrappers to use the hash tables in the IO monad.
+
+ /QUICK START/: documentation for the hash table operations is provided in the
+ "Data.HashTable.Class" module, and the IO wrappers (which most users will
+ probably prefer) are located in the "Data.HashTable.IO" module.
+
+ This package currently contains three hash table implementations:
+
+ 1. "Data.HashTable.ST.Basic" contains a basic open-addressing hash table
+ using linear probing as the collision strategy. On a pure speed basis it
+ should currently be the fastest available Haskell hash table
+ implementation for lookups, although it has a higher memory overhead
+ than the other tables and can suffer from long delays when the table is
+ resized because all of the elements in the table need to be rehashed.
+
+ 2. "Data.HashTable.ST.Cuckoo" contains an implementation of \"cuckoo
+ hashing\" as introduced by Pagh and Rodler in 2001 (see
+ &lt;http://en.wikipedia.org/wiki/Cuckoo_hashing&gt;). Cuckoo hashing has
+ worst-case /O(1)/ lookups and can reach a high \"load factor\", in which
+ the table can perform acceptably well even when more than 90% full.
+ Randomized testing shows this implementation of cuckoo hashing to be
+ slightly faster on insert and slightly slower on lookup than
+ "Data.Hashtable.ST.Basic", while being more space efficient by about a
+ half-word per key-value mapping. Cuckoo hashing, like the basic hash
+ table implementation using linear probing, can suffer from long delays
+ when the table is resized.
+
+ 3. "Data.HashTable.ST.Linear" contains a linear hash table (see
+ &lt;http://en.wikipedia.org/wiki/Linear_hashing&gt;), which trades some insert
+ and lookup performance for higher space efficiency and much shorter
+ delays when expanding the table. In most cases, benchmarks show this
+ table to be currently slightly faster than @Data.HashTable@ from the
+ Haskell base library.
+
+ It is recommended to create a concrete type alias in your code when using this
+ package, i.e.:
+
+ &gt; import qualified Data.HashTable.IO as H
+ &gt;
+ &gt; type HashTable k v = H.BasicHashTable k v
+ &gt;
+ &gt; foo :: IO (HashTable Int Int)
+ &gt; foo = do
+ &gt; ht &lt;- H.new
+ &gt; H.insert ht 1 1
+ &gt; return ht
+
+ Firstly, this makes it easy to switch to a different hash table implementation,
+ and secondly, using a concrete type rather than leaving your functions abstract
+ in the HashTable class should allow GHC to optimize away the typeclass
+ dictionaries.
+
+ This package accepts a couple of different cabal flags:
+
+ * @unsafe-tricks@, default /ON/. If this flag is enabled, we use some
+ unsafe GHC-specific tricks to save indirections (namely @unsafeCoerce#@
+ and @reallyUnsafePtrEquality#@. These techniques rely on assumptions
+ about the behaviour of the GHC runtime system and, although they've been
+ tested and should be safe under normal conditions, are slightly
+ dangerous. Caveat emptor. In particular, these techniques are
+ incompatible with HPC code coverage reports.
+
+ * @sse41@, default /OFF/. If this flag is enabled, we use some SSE 4.1
+ instructions (see &lt;http://en.wikipedia.org/wiki/SSE4&gt;, first available on
+ Intel Core 2 processors) to speed up cache-line searches for cuckoo
+ hashing.
+
+ * @bounds-checking@, default /OFF/. If this flag is enabled, array accesses
+ are bounds-checked.
+
+ * @debug@, default /OFF/. If turned on, we'll rudely spew debug output to
+ stdout.
+
+ * @portable@, default /OFF/. If this flag is enabled, we use only pure
+ Haskell code and try not to use unportable GHC extensions. Turning this
+ flag on forces @unsafe-tricks@ and @sse41@ /OFF/.
+
+ This package has been tested with GHC 7.0.3, on:
+
+ * a MacBook Pro running Snow Leopard with an Intel Core i5 processor,
+ running GHC 7.0.3 in 64-bit mode.
+
+ * an Arch Linux desktop with an AMD Phenom II X4 940 quad-core processor.
+
+ * a MacBook Pro running Snow Leopard with an Intel Core 2 Duo processor,
+ running GHC 6.12.3 in 32-bit mode.
+
+ Please send bug reports to
+ &lt;https://github.com/gregorycollins/hashtables/issues&gt;.
+ </longdescription>
+ <use>
+ <flag name="bounds-checking">if on, use bounds-checking array accesses</flag>
+ <flag name="portable">if on, use only pure Haskell code and no GHC extensions.</flag>
+ <flag name="unsafe-tricks">turn on unsafe GHC tricks</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">gregorycollins/hashtables</remote-id>
+ </upstream>
+</pkgmetadata>