unique 0 → 0.0.1
raw patch · 5 files changed
+47/−121 lines, 5 filesdep −ghc-primdep ~hashablenew-uploader
Dependencies removed: ghc-prim
Dependency ranges changed: hashable
Files
- .travis.yml +0/−112
- CHANGELOG.markdown +5/−0
- README.markdown +2/−1
- src/Control/Concurrent/Unique.hs +25/−3
- unique.cabal +15/−5
− .travis.yml
@@ -1,112 +0,0 @@-# This file has been generated -- see https://github.com/hvr/multi-ghc-travis-language: c-sudo: false--cache:- directories:- - $HOME/.cabsnap- - $HOME/.cabal/packages- - $HOME/.stack--before_cache:- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar--matrix:- include:- - env: CABALVER=1.16 GHCVER=7.4.2 BUILD=cabal- compiler: ": #GHC 7.4.2"- addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.16 GHCVER=7.6.3 BUILD=cabal- compiler: ": #GHC 7.6.3"- addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.18 GHCVER=7.8.4 BUILD=cabal- compiler: ": #GHC 7.8.4"- addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.22 GHCVER=7.10.1 BUILD=cabal- compiler: ": #GHC 7.10.1"- addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.1,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.22 GHCVER=7.10.2 BUILD=cabal- compiler: ": #GHC 7.10.2"- addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: BUILD=stack STACK_OPTIONS=--skip-ghc-check- addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: BUILD=stack- os: osx---before_install:- - unset CC- - case "$BUILD" in- stack)- export STACK_VERSION=0.1.3.0;- export PATH=~/bin:$PATH;- mkdir -p ~/bin;- travis_retry curl -L https://github.com/commercialhaskell/stack/releases/download/v$STACK_VERSION/stack-$STACK_VERSION-x86_64-$TRAVIS_OS_NAME.gz | gunzip > ~/bin/stack;- chmod a+x ~/bin/stack;- scripts/travis_long stack --no-terminal setup;;- cabal)- export HAPPYVER=1.19.5- export ALEXVER=3.1.4- export PATH=~/.cabal/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/happy/$HAPPYVER/bin:/opt/alex/$ALEXVER/bin:$PATH;;- esac-install:- - case "$BUILD" in- stack)- scripts/travis_long stack --no-terminal $STACK_OPTIONS build --only-snapshot -j2;;- cabal)- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"- cabal --version;- if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];- then- zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >- $HOME/.cabal/packages/hackage.haskell.org/00-index.tar;- fi;- travis_retry cabal update;- cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt;- sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt;- if diff -u installplan.txt $HOME/.cabsnap/installplan.txt; then- echo "cabal build-cache HIT";- rm -rfv .ghc;- cp -a $HOME/.cabsnap/ghc $HOME/.ghc;- cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;- else- echo "cabal build-cache MISS";- rm -rf $HOME/.cabsnap;- mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;- cabal install --only-dependencies --enable-tests --enable-benchmarks;- if [ "$GHCVER" = "7.10.1" ]; then cabal install Cabal-1.22.4.0; fi;- fi;- if [ ! -d $HOME/.cabsnap ]; then- echo "snapshotting package-db to build-cache";- mkdir $HOME/.cabsnap;- cp -a $HOME/.ghc $HOME/.cabsnap/ghc;- cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;- fi;;- esac--# snapshot package-db on cache miss--# Here starts the actual work to be performed for the package under test;-# any command which exits with a non-zero exit code causes the build to fail.-script:- - case "$BUILD" in- stack)- scripts/travis_long stack --no-terminal $STACK_OPTIONS build -j2;;- cabal)- cabal configure --enable-tests -v2;- cabal build;- cabal test;- cabal bench || true;- cabal sdist || true;- SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz && (cd dist && cabal install --force-reinstalls "$SRC_TGZ");;- esac--notifications:- irc:- channels:- - "irc.freenode.org#haskell-lens"- skip_join: true- template:- - "\x0313unique\x0f/\x0306%{branch}\x0f \x0314%{commit}\x0f %{message} \x0302\x1f%{build_url}\x0f"-# EOF
CHANGELOG.markdown view
@@ -1,3 +1,8 @@+## 0.0.1++* GHC-9.0 compatibility+* Mark `Control.Concurrent.Unique` as `Trustworthy`+ ## 0 * Repository initialized
README.markdown view
@@ -1,7 +1,8 @@ unique ============== -[](https://hackage.haskell.org/package/unique) [](http://travis-ci.org/ekmett/unique)+[](https://hackage.haskell.org/package/unique) [](https://github.com/ekmett/unique/actions?query=workflow%3AHaskell-CI)+ This package provides a version of Data.Unique that is fully concurrent.
src/Control/Concurrent/Unique.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE MagicHash #-}+{-# LANGUAGE Trustworthy #-} -- | An abstract interface to a concurrent unique symbol generator. --@@ -9,14 +10,35 @@ ( Unique, newUnique ) where -import Data.Hashable+import Data.Hashable (Hashable (..)) import GHC.IO-import GHC.Prim-import GHC.Types+import GHC.Exts +-- $setup+-- >>> import Data.Hashable+ -- | Unique identifiers are created by creating heap objects in kind # that -- can be compared for value equality and then hashing them using their initial allocation -- address.+--+-- >>> x <- newUnique+-- >>> y <- newUnique+-- >>> z <- newUnique+--+-- >>> [x == x, y == y, z == z]+-- [True,True,True]+--+-- >>> [x == y, y == z, z == x]+-- [False,False,False]+--+-- The hashes could be same, in theory, but in practice they are different+-- as well.+--+-- >>> [ hash x == hash x, hash y == hash y, hash z == hash z]+-- [True,True,True]+--+-- >>> [ hash x == hash y, hash y == hash z, hash z == hash x]+-- [False,False,False] -- TODO: If, due to a small heap size we find we have high collision rate on initial allocation location -- we might consider upgrading this initial hash with something fast and volatile, e.g. rdtsc
unique.cabal view
@@ -1,6 +1,6 @@ name: unique category: Concurrency, Data-version: 0+version: 0.0.1 license: BSD3 cabal-version: >= 1.10 license-file: LICENSE@@ -11,10 +11,21 @@ bug-reports: http://github.com/ekmett/unique/issues copyright: Copyright (C) 2015 Edward A. Kmett synopsis: Fully concurrent unique identifiers-description: Fully concurrent unique identifiers+description: Fully concurrent unique identifiers. build-type: Simple-extra-source-files: .travis.yml CHANGELOG.markdown README.markdown stack.yaml+extra-source-files: CHANGELOG.markdown README.markdown stack.yaml +tested-with: GHC == 7.4.2+ , GHC == 7.6.3+ , GHC == 7.8.4+ , GHC == 7.10.3+ , GHC == 8.0.2+ , GHC == 8.2.2+ , GHC == 8.4.4+ , GHC == 8.6.5+ , GHC == 8.8.4+ , GHC == 8.10.3+ source-repository head type: git location: git://github.com/ekmett/unique.git@@ -27,5 +38,4 @@ ghc-options: -Wall build-depends: base >= 4.5 && < 5,- hashable >= 1.1 && < 1.3,- ghc-prim >= 0.2 && < 0.5+ hashable >= 1.1 && < 1.4