bits 0.4 → 0.5
raw patch · 8 files changed
+120/−33 lines, 8 filesdep ~transformerssetup-changednew-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: transformers
API changes (from Hackage documentation)
- Data.Bits.Coded: instance (Coded c, Integral c, Ranked n) => Coded (Elias c n)
- Data.Bits.Coded: instance Enum n => Enum (Elias c n)
- Data.Bits.Coded: instance Enum n => Enum (Unary n)
- Data.Bits.Coded: instance Eq n => Eq (Elias c n)
- Data.Bits.Coded: instance Eq n => Eq (Unary n)
- Data.Bits.Coded: instance Integral n => Coded (Unary n)
- Data.Bits.Coded: instance Integral n => Integral (Elias c n)
- Data.Bits.Coded: instance Integral n => Integral (Unary n)
- Data.Bits.Coded: instance Num n => Num (Elias c n)
- Data.Bits.Coded: instance Num n => Num (Unary n)
- Data.Bits.Coded: instance Ord n => Ord (Elias c n)
- Data.Bits.Coded: instance Ord n => Ord (Unary n)
- Data.Bits.Coded: instance Read n => Read (Elias c n)
- Data.Bits.Coded: instance Read n => Read (Unary n)
- Data.Bits.Coded: instance Real n => Real (Elias c n)
- Data.Bits.Coded: instance Real n => Real (Unary n)
- Data.Bits.Coded: instance Show n => Show (Elias c n)
- Data.Bits.Coded: instance Show n => Show (Unary n)
- Data.Bits.Coded: unElias :: Elias c n -> n
- Data.Bits.Coded: unUnary :: Unary n -> n
- Data.Bits.Coding: instance (Monad m, Alternative m) => Alternative (Coding m)
- Data.Bits.Coding: instance Functor (Coding m)
- Data.Bits.Coding: instance Monad m => Applicative (Coding m)
- Data.Bits.Coding: instance Monad m => Monad (Coding m)
- Data.Bits.Coding: instance MonadGet m => MonadGet (Coding m)
- Data.Bits.Coding: instance MonadPlus m => MonadPlus (Coding m)
- Data.Bits.Coding: instance MonadPut m => MonadPut (Coding m)
- Data.Bits.Coding: instance MonadReader e m => MonadReader e (Coding m)
- Data.Bits.Coding: instance MonadState s m => MonadState s (Coding m)
- Data.Bits.Coding: instance MonadTrans Coding
- Data.Bits.Coding: runCoding :: Coding m a -> forall r. (a -> Int -> Word8 -> m r) -> Int -> Word8 -> m r
- Data.Bits.Extras: instance Ranked Int16
- Data.Bits.Extras: instance Ranked Int32
- Data.Bits.Extras: instance Ranked Int64
- Data.Bits.Extras: instance Ranked Int8
- Data.Bits.Extras: instance Ranked Word16
- Data.Bits.Extras: instance Ranked Word32
- Data.Bits.Extras: instance Ranked Word64
- Data.Bits.Extras: instance Ranked Word8
+ Data.Bits.Coded: [unElias] :: Elias c n -> n
+ Data.Bits.Coded: [unUnary] :: Unary n -> n
+ Data.Bits.Coded: instance (Data.Bits.Coded.Coded c, GHC.Real.Integral c, Data.Bits.Extras.Ranked n) => Data.Bits.Coded.Coded (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Classes.Eq n => GHC.Classes.Eq (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Classes.Eq n => GHC.Classes.Eq (Data.Bits.Coded.Unary n)
+ Data.Bits.Coded: instance GHC.Classes.Ord n => GHC.Classes.Ord (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Classes.Ord n => GHC.Classes.Ord (Data.Bits.Coded.Unary n)
+ Data.Bits.Coded: instance GHC.Enum.Enum n => GHC.Enum.Enum (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Enum.Enum n => GHC.Enum.Enum (Data.Bits.Coded.Unary n)
+ Data.Bits.Coded: instance GHC.Num.Num n => GHC.Num.Num (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Num.Num n => GHC.Num.Num (Data.Bits.Coded.Unary n)
+ Data.Bits.Coded: instance GHC.Read.Read n => GHC.Read.Read (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Read.Read n => GHC.Read.Read (Data.Bits.Coded.Unary n)
+ Data.Bits.Coded: instance GHC.Real.Integral n => Data.Bits.Coded.Coded (Data.Bits.Coded.Unary n)
+ Data.Bits.Coded: instance GHC.Real.Integral n => GHC.Real.Integral (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Real.Integral n => GHC.Real.Integral (Data.Bits.Coded.Unary n)
+ Data.Bits.Coded: instance GHC.Real.Real n => GHC.Real.Real (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Real.Real n => GHC.Real.Real (Data.Bits.Coded.Unary n)
+ Data.Bits.Coded: instance GHC.Show.Show n => GHC.Show.Show (Data.Bits.Coded.Elias c n)
+ Data.Bits.Coded: instance GHC.Show.Show n => GHC.Show.Show (Data.Bits.Coded.Unary n)
+ Data.Bits.Coding: [runCoding] :: Coding m a -> forall r. (a -> Int -> Word8 -> m r) -> Int -> Word8 -> m r
+ Data.Bits.Coding: instance (GHC.Base.Monad m, GHC.Base.Alternative m) => GHC.Base.Alternative (Data.Bits.Coding.Coding m)
+ Data.Bits.Coding: instance Control.Monad.Reader.Class.MonadReader e m => Control.Monad.Reader.Class.MonadReader e (Data.Bits.Coding.Coding m)
+ Data.Bits.Coding: instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Data.Bits.Coding.Coding m)
+ Data.Bits.Coding: instance Control.Monad.Trans.Class.MonadTrans Data.Bits.Coding.Coding
+ Data.Bits.Coding: instance Data.Bytes.Get.MonadGet m => Data.Bytes.Get.MonadGet (Data.Bits.Coding.Coding m)
+ Data.Bits.Coding: instance Data.Bytes.Put.MonadPut m => Data.Bytes.Put.MonadPut (Data.Bits.Coding.Coding m)
+ Data.Bits.Coding: instance GHC.Base.Functor (Data.Bits.Coding.Coding m)
+ Data.Bits.Coding: instance GHC.Base.Monad m => GHC.Base.Applicative (Data.Bits.Coding.Coding m)
+ Data.Bits.Coding: instance GHC.Base.Monad m => GHC.Base.Monad (Data.Bits.Coding.Coding m)
+ Data.Bits.Coding: instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Data.Bits.Coding.Coding m)
+ Data.Bits.Extras: instance Data.Bits.Extras.Ranked GHC.Int.Int16
+ Data.Bits.Extras: instance Data.Bits.Extras.Ranked GHC.Int.Int32
+ Data.Bits.Extras: instance Data.Bits.Extras.Ranked GHC.Int.Int64
+ Data.Bits.Extras: instance Data.Bits.Extras.Ranked GHC.Int.Int8
+ Data.Bits.Extras: instance Data.Bits.Extras.Ranked GHC.Word.Word16
+ Data.Bits.Extras: instance Data.Bits.Extras.Ranked GHC.Word.Word32
+ Data.Bits.Extras: instance Data.Bits.Extras.Ranked GHC.Word.Word64
+ Data.Bits.Extras: instance Data.Bits.Extras.Ranked GHC.Word.Word8
Files
- .travis.yml +93/−10
- AUTHORS.markdown +1/−1
- CHANGELOG.markdown +5/−0
- README.markdown +1/−1
- Setup.lhs +8/−1
- bits.cabal +7/−16
- src/Data/Bits/Coding.hs +1/−1
- tests/doctests.hsc +4/−3
.travis.yml view
@@ -1,17 +1,101 @@-language: haskell+# This file has been generated -- see https://github.com/hvr/multi-ghc-travis+language: c+sudo: false++cache:+ directories:+ - $HOME/.cabsnap+ - $HOME/.cabal/packages++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.18 GHCVER=7.8.4+ compiler: ": #GHC 7.8.4"+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,hlint], sources: [hvr-ghc]}}+ - env: CABALVER=1.22 GHCVER=7.10.3+ compiler: ": #GHC 7.10.3"+ addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,hlint], sources: [hvr-ghc]}}+ - env: CABALVER=1.24 GHCVER=8.0.1+ compiler: ": #GHC 8.0.1"+ addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1,hlint], sources: [hvr-ghc]}}+ - env: CABALVER=1.24 GHCVER=head+ compiler: ": #GHC head"+ addons: {apt: {packages: [cabal-install-1.24,ghc-head,hlint], sources: [hvr-ghc]}}++ allow_failures:+ - env: CABALVER=1.24 GHCVER=head+ before_install:- # Uncomment whenever hackage is down.- # - mkdir -p ~/.cabal && cp travis/config ~/.cabal/config && cabal update- - cabal update- - travis/cabal-apt-install $mode+ - unset CC+ - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH install:- - cabal configure -flib-Werror $mode- - cabal build+ - cabal --version+ - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"+ - 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 -v+ - sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config+ - cabal install --only-dependencies --enable-tests --dry -v > installplan.txt+ - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt +# check whether current requested install-plan matches cached package-db snapshot+ - 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 -j --only-dependencies --enable-tests;+ if [ "$GHCVER" = "7.10.3" ]; then cabal install Cabal-1.22.4.0; fi;+ fi++# snapshot package-db on cache miss+ - 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++# 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:- - $script && hlint src --cpp-define HLINT+ # -v2 provides useful information for debugging+ - cabal configure --enable-tests -v2 + # this builds all libraries and executables+ # (including tests/benchmarks)+ - cabal build+ - cabal test --show-details=always++ # tests that a source-distribution can be generated+ - cabal sdist+ - hlint src --cpp-define HLINT++ # check that the generated source-distribution can be built & installed+ - export SRC_TGZ=$(cabal info . | awk '{print $2 ".tar.gz";exit}') ;+ cd dist/;+ if [ -f "$SRC_TGZ" ]; then+ cabal install --force-reinstalls "$SRC_TGZ";+ else+ echo "expected '$SRC_TGZ' not found";+ exit 1;+ fi+ notifications: irc: channels:@@ -20,5 +104,4 @@ template: - "\x0313bits\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}" -env:- - mode="--enable-tests" script="cabal test --show-details=always"+# EOF
AUTHORS.markdown view
@@ -2,7 +2,7 @@ `bits` was spun out of work that was being done on the `analytics` repository in bitwise encodings for compression schemes. -You can watch contributors carry on the quest for bragging rights in the [contributors graph](https://github.com/analytics/bits/graphs/contributors).+You can watch contributors carry on the quest for bragging rights in the [contributors graph](https://github.com/ekmett/bits/graphs/contributors). Omission from this list is by no means an attempt to discount your contribution.
CHANGELOG.markdown view
@@ -1,3 +1,8 @@+0.5+---+* ghc 8 support+* Fixed doctests+ 0.4 --- * Embrace `FiniteBits` from GHC 7.8.3 now that a platform has shipped with it.
README.markdown view
@@ -1,7 +1,7 @@ bits ===== -[](http://travis-ci.org/analytics/bits)+[](https://hackage.haskell.org/package/bits) [](http://travis-ci.org/ekmett/bits) This package provides a number of tools that are useful for dealing with files or data on a bitwise basis.
Setup.lhs view
@@ -11,7 +11,7 @@ import Distribution.Simple.Utils ( rewriteFile, createDirectoryIfMissingVerbose, copyFiles ) import Distribution.Simple.BuildPaths ( autogenModulesDir ) import Distribution.Simple.Setup ( BuildFlags(buildVerbosity), Flag(..), fromFlag, HaddockFlags(haddockDistPref))-import Distribution.Simple.LocalBuildInfo ( withLibLBI, withTestLBI, LocalBuildInfo(), ComponentLocalBuildInfo(componentPackageDeps) )+import Distribution.Simple.LocalBuildInfo ( withLibLBI, withTestLBI, LocalBuildInfo(buildDir), ComponentLocalBuildInfo(componentPackageDeps) ) import Distribution.Text ( display ) import Distribution.Verbosity ( Verbosity, normal ) import System.FilePath ( (</>) )@@ -41,6 +41,13 @@ withTestLBI pkg lbi $ \suite suitecfg -> do rewriteFile (dir </> "Build_" ++ testName suite ++ ".hs") $ unlines [ "module Build_" ++ testName suite ++ " where"+ , ""+ , "autogen_dir :: String"+ , "autogen_dir = " ++ show dir+ , ""+ , "build_dir :: String"+ , "build_dir = " ++ show (buildDir lbi)+ , "" , "deps :: [String]" , "deps = " ++ (show $ formatdeps (testDeps libcfg suitecfg)) ]
bits.cabal view
@@ -1,17 +1,17 @@ name: bits category: Data, Serialization-version: 0.4+version: 0.5 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE author: Edward A. Kmett maintainer: Edward A. Kmett <ekmett@gmail.com> stability: experimental-homepage: http://github.com/analytics/bits-bug-reports: http://github.com/analytics/bits/issues+homepage: http://github.com/ekmett/bits+bug-reports: http://github.com/ekmett/bits/issues copyright: Copyright (C) 2013 Edward A. Kmett build-type: Custom-tested-with: GHC == 7.8.3+tested-with: GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1 synopsis: Various bit twiddling and bitwise serialization primitives description: Various bit twiddling and bitwise serialization primitives @@ -28,32 +28,25 @@ source-repository head type: git- location: git://github.com/analytics/bits.git+ location: git://github.com/ekmett/bits.git -- You can disable the doctests test suite with -f-test-doctests flag test-doctests default: True manual: True -flag lib-Werror- default: False- manual: True- library build-depends: base >= 4.7 && < 5, bytes >= 0.11 && < 1, mtl >= 2.0 && < 2.3,- transformers >= 0.2 && < 0.5+ transformers >= 0.2 && < 0.6 exposed-modules: Data.Bits.Coding Data.Bits.Coded Data.Bits.Extras - if flag(lib-Werror)- ghc-options: -Werror- c-sources: cbits/debruijn.c ghc-options: -Wall -fwarn-tabs -O2 hs-source-dirs: src@@ -63,6 +56,7 @@ main-is: doctests.hs ghc-options: -Wall -threaded hs-source-dirs: tests+ c-sources: cbits/debruijn.c if !flag(test-doctests) buildable: False@@ -72,6 +66,3 @@ directory >= 1.0, doctest >= 0.9.1, filepath >= 1.2-- if impl(ghc<7.6.1)- ghc-options: -Werror
src/Data/Bits/Coding.hs view
@@ -56,7 +56,7 @@ {-# INLINE (<*>) #-} instance Monad m => Monad (Coding m) where- return a = Coding $ \ k -> k a+ return = pure {-# INLINE return #-} Coding m >>= f = Coding $ \ k -> m $ \a -> runCoding (f a) k {-# INLINE (>>=) #-}
tests/doctests.hsc view
@@ -15,7 +15,7 @@ ----------------------------------------------------------------------------- module Main where -import Build_doctests (deps)+import Build_doctests (autogen_dir, build_dir, deps) import Control.Applicative import Control.Monad import Data.List@@ -54,11 +54,12 @@ main :: IO () main = withUnicode $ getSources >>= \sources -> doctest $ "-isrc"- : "-idist/build/autogen"+ : ("-i" ++ autogen_dir) : "-optP-include"- : "-optPdist/build/autogen/cabal_macros.h"+ : ("-optP" ++ autogen_dir ++ "/cabal_macros.h") : "-hide-all-packages" : "-Iincludes"+ : (build_dir ++ "/doctests/doctests-tmp/cbits/debruijn.o") : map ("-package="++) deps ++ sources getSources :: IO [FilePath]