uuid 1.3.12 → 1.3.13
raw patch · 8 files changed
+235/−225 lines, 8 filesdep +cryptohash-md5dep +cryptohash-sha1dep +entropydep −cryptonitedep −memorydep ~QuickCheckdep ~basedep ~bytestring
Dependencies added: cryptohash-md5, cryptohash-sha1, entropy
Dependencies removed: cryptonite, memory
Dependency ranges changed: QuickCheck, base, bytestring, mersenne-random-pure64, random, time
Files
- CHANGES +0/−164
- CHANGES.md +172/−0
- Data/UUID/Named.hs +2/−4
- Data/UUID/V3.hs +2/−2
- Data/UUID/V4.hs +1/−1
- Data/UUID/V5.hs +2/−2
- tests/BenchUUID.hs +0/−2
- uuid.cabal +56/−50
− CHANGES
@@ -1,164 +0,0 @@-1.3.12--- Update package dependencies-- Use `cryptonite` for crypto-- The function `V4.nextRandom` is now implemented with functions from- `Crypto.Random` in package `cryptonite`. This does slow-down random- UUID generation but provides for far greater randomness. The- `Random` instance for `UUID` can be used to re-gain the old- behavior.--1.3.11--- Add toText/fromText--1.3.10--- Update dependencies in tests and benchmarks.--1.3.9--- Split definition of UUID data type into separate Cabal package to- enable 3rd party libraries to avoid some of the larger dependencies.--1.3.8--- Allow building against newer deepseq.--1.3.7--- Allow building against newer time.--1.3.6--- Move to GitHub.--1.3.5--- Allow building against newer random.--1.3.4--- Allow building against newer QuickCheck.--1.3.3--- More complex version constrainsts on hashable, to avoid building against- versions less than 1.1.1.0 or equal to 1.2.0.*.--1.3.2--- Fix for building against bytestring 0.9.*--1.3.1--- Allow building against 'hashable' 1.1.* in addition to 1.2.*--1.3.0--- New functions for parsing and printing UUIDs to and from ASCII BytesStrings-- New module Data.UUID.Util. This module includes the type 'UnpackedUUID',- whose fields correspond to the UUID fields described in RFC 4122.-- The Storable instance now stores a UUID in host byte-order instead of- big endian.-- There is now an instance for 'Hashable UUID'.--1.2.13--Benchmark only changes:--- Allow criterion 0.8.*--1.2.12--Test only changes:--- Allow QuickCheck 2.6.*--1.2.11--- Allow binary 0.7.*--1.2.10--- Allow cryptohash version 0.9.*-- Cleanup tests--1.2.9--- Bumped dependency on 'cryptohash'.--1.2.8--- Bumped various dependencies and cleaned up dependencies in general.--1.2.7--- Added stricter constraints on 'random' package.--1.2.6--- Add module 'V4' to direct attention to our Random instance--- In module 'V1' seed the generator with a random number- if the hardware MAC address could not be discovered.--- Fix and cleanup various haddocks.--- In module docs, warn about MD5 use in Data.UUID.V3 and- encourage the reader to use Data.UUID.V5 instead.--1.2.5--- Use 'cryptohash' package for MD5 and SHA1 instead of 'Crypto'--1.2.4--- Unpack Word32 values into UUID constructor.--- Update test suite to QuickCheck 2--- Bump other dependencies in tests/benchmarks--1.2.3--- The Read instance now drops leading spaces in the string to be parsed.-Thanks to Marc Ziegert for reporting this bug.--- The tests have moved over to the new Cabal test running framework.--1.2.2--- Add functions fromWords/toWords--The goal was to have a total function that can be used to construct-a UUID, primarily for use by uuid-th.--1.2.1--- Fix concurrency bug in Data.UUID.V1 (thanks to Neil Mitchell for reporting-and a test case)--1.2.0- (Contributors: Antoine Latter & Mark Lentczner)--- added functions toByteString and fromByteString-- added 'nil' UUID-- added unit tests and benchmarks, built when configured -ftest-- major speed up of to/from functions (as well as in general)-- added version-3 generation (deterministic based on MD5)-- major changes to internal representation- - now uses four strict Word32 values- - internal ByteSource classes for easy construction (see Builder.hs)-- Storable instance now stores in memory as system libraries in C do:- 16 bytes derived from the network order of the fields, no matter what- the host native endianess is.-- fixed bugs in V1 time and clock stepping, and V1 generated values-- builds cleanly under GHC's -Wall-- added CHANGES file--1.1.1--- no longer exporting 'null' from the prelude-- add 'null' predicate on UUIDs-- documentation fix (thanks Mark Lentczner)
+ CHANGES.md view
@@ -0,0 +1,172 @@+1.3.13++- Optimize `V4.nextRandom` (~3x speed increase)+- Optimize UUID V3 & V5 generation (~2x speed increase)+- Use `cryptohash-md5`/`cryptohash-sha1`/`entropy` instead+ of `memory`/`cryptonite` for better performance and stability.+- Update cabal-spec to version 1.10++1.3.12++- Update package dependencies+- Use `cryptonite` for crypto+- The function `V4.nextRandom` is now implemented with functions from+ `Crypto.Random` in package `cryptonite`. This does slow-down random+ UUID generation but provides for far greater randomness. The+ `Random` instance for `UUID` can be used to re-gain the old+ behavior.++1.3.11++- Add `toText`/`fromText`++1.3.10++- Update dependencies in tests and benchmarks.++1.3.9++- Split definition of UUID data type into separate Cabal package to+ enable 3rd party libraries to avoid some of the larger dependencies.++1.3.8++- Allow building against newer `deepseq`.++1.3.7++- Allow building against newer `time`.++1.3.6++- Move to GitHub.++1.3.5++- Allow building against newer `random`.++1.3.4++- Allow building against newer `QuickCheck`.++1.3.3++- More complex version constraints on `hashable`, to avoid building against+ versions less than 1.1.1.0 or equal to 1.2.0.*.++1.3.2++- Fix for building against `bytestring` 0.9.*++1.3.1++- Allow building against `hashable` 1.1.* in addition to 1.2.*++1.3.0++- New functions for parsing and printing UUIDs to and from ASCII BytesStrings+- New module `Data.UUID.Util`. This module includes the type `UnpackedUUID`,+ whose fields correspond to the UUID fields described in RFC 4122.+- The `Storable` instance now stores a UUID in host byte-order instead of+ big endian.+- There is now an instance for `Hashable UUID`.++1.2.13++Benchmark only changes:++- Allow `criterion` 0.8.*++1.2.12++Test only changes:++- Allow `QuickCheck` 2.6.*++1.2.11++- Allow `binary` 0.7.*++1.2.10++- Allow `cryptohash` version 0.9.*+- Cleanup tests++1.2.9++- Bumped dependency on `cryptohash`.++1.2.8++- Bumped various dependencies and cleaned up dependencies in general.++1.2.7++- Added stricter constraints on `random` package.++1.2.6++- Add module `V4` to direct attention to our Random instance++- In module `V1` seed the generator with a random number+ if the hardware MAC address could not be discovered.++- Fix and cleanup various haddocks.++- In module docs, warn about MD5 use in Data.UUID.V3 and+ encourage the reader to use Data.UUID.V5 instead.++1.2.5++- Use `cryptohash` package for MD5 and SHA1 instead of `Crypto`++1.2.4++- Unpack Word32 values into UUID constructor.++- Update test suite to QuickCheck 2++- Bump other dependencies in tests/benchmarks++1.2.3++- The Read instance now drops leading spaces in the string to be parsed.+Thanks to Marc Ziegert for reporting this bug.++- The tests have moved over to the new Cabal test running framework.++1.2.2++- Add functions fromWords/toWords++The goal was to have a total function that can be used to construct+a UUID, primarily for use by uuid-th.++1.2.1++- Fix concurrency bug in Data.UUID.V1 (thanks to Neil Mitchell for reporting+and a test case)++1.2.0+ (Contributors: Antoine Latter & Mark Lentczner)++- added functions toByteString and fromByteString+- added `nil` UUID+- added unit tests and benchmarks, built when configured -ftest+- major speed up of to/from functions (as well as in general)+- added version-3 generation (deterministic based on MD5)+- major changes to internal representation+ - now uses four strict Word32 values+ - internal ByteSource classes for easy construction (see Builder.hs)+- Storable instance now stores in memory as system libraries in C do:+ 16 bytes derived from the network order of the fields, no matter what+ the host native endianess is.+- fixed bugs in V1 time and clock stepping, and V1 generated values+- builds cleanly under GHC's -Wall+- added CHANGES file++1.1.1++- no longer exporting `null` from the prelude+- add `null` predicate on UUIDs+- documentation fix (thanks Mark Lentczner)
Data/UUID/Named.hs view
@@ -33,21 +33,19 @@ import Data.Maybe import Data.Word (Word8) -import qualified Data.ByteArray as BA import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as BL -- |Generate a 'UUID' within the specified namespace out of the given -- object.-generateNamed :: BA.ByteArrayAccess bs- => (B.ByteString -> bs) -- ^Hash+generateNamed :: (B.ByteString -> B.ByteString) -- ^Hash -> Word8 -- ^Version -> UUID -- ^Namespace -> [Word8] -- ^Object -> UUID generateNamed hash version namespace object = let chunk = B.pack $ toList namespace ++ object- bytes = BL.fromStrict . BA.convert $ hash chunk+ bytes = BL.fromChunks . (:[]) $ hash chunk w = getWord32be unpackBytes = runGet $ buildFromWords version <$> w <*> w <*> w <*> w
Data/UUID/V3.hs view
@@ -35,7 +35,7 @@ import Data.UUID.Types.Internal import qualified Data.UUID.Named as Shared-import qualified Crypto.Hash as H+import qualified Crypto.Hash.MD5 as MD5 -- |Generate a 'UUID' within the specified namespace out of the given@@ -46,4 +46,4 @@ generateNamed :: UUID -- ^Namespace -> [Word8] -- ^Object -> UUID-generateNamed = Shared.generateNamed (H.hashWith H.MD5) 3+generateNamed = Shared.generateNamed MD5.hash 3
Data/UUID/V4.hs view
@@ -23,7 +23,7 @@ import Data.UUID import Data.UUID.Types.Internal ( buildFromBytes ) -import Crypto.Random.Entropy ( getEntropy )+import System.Entropy ( getEntropy ) import Data.ByteString ( unpack ) -- | Generate a random UUID. Introduced in version 1.2.6.
Data/UUID/V5.hs view
@@ -30,7 +30,7 @@ import Data.UUID.Types.Internal import qualified Data.UUID.Named as Shared-import qualified Crypto.Hash as H+import qualified Crypto.Hash.SHA1 as SHA1 -- |Generate a 'UUID' within the specified namespace out of the given@@ -41,4 +41,4 @@ generateNamed :: UUID -- ^Namespace -> [Word8] -- ^Object -> UUID-generateNamed = Shared.generateNamed (H.hashWith H.SHA1) 5+generateNamed = Shared.generateNamed SHA1.hash 5
tests/BenchUUID.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE CPP #-}- import Criterion.Main import Data.Char (ord) import Data.IORef
uuid.cabal view
@@ -1,84 +1,90 @@ Name: uuid-Version: 1.3.12+Version: 1.3.13 Copyright: (c) 2008-2014 Antoine Latter Author: Antoine Latter-Maintainer: aslatter@gmail.com+Maintainer: hvr@gnu.org License: BSD3 License-file: LICENSE- Category: Data Build-Type: Simple-Cabal-Version: >= 1.8+Cabal-Version: >= 1.10+Tested-With: GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2 +Synopsis: For creating, comparing, parsing and printing Universally Unique Identifiers Description: This library is useful for creating, comparing, parsing and printing Universally Unique Identifiers.+ . See <http://en.wikipedia.org/wiki/UUID> for the general idea. -Synopsis: For creating, comparing, parsing and printing Universally Unique Identifiers--Homepage: https://github.com/aslatter/uuid-Bug-Reports: https://github.com/aslatter/uuid/issues+Homepage: https://github.com/hvr/uuid+Bug-Reports: https://github.com/hvr/uuid/issues Extra-Source-Files:- CHANGES+ CHANGES.md +Source-Repository head+ Type: git+ Location: https://github.com/hvr/uuid.git+ Subdir: uuid Library- Build-Depends: base >=3 && < 5,- binary >= 0.4 && < 0.9,- bytestring >= 0.9 && < 0.11,- cryptonite,- memory,- network-info == 0.2.*,- random >= 1.0.1 && < 1.2,- time >= 1.1 && < 1.7,- text >= 1 && < 1.3,- uuid-types >= 1.0.2 && < 2-- Exposed-Modules:- Data.UUID- Data.UUID.Util- Data.UUID.V1- Data.UUID.V3- Data.UUID.V4- Data.UUID.V5+ Build-Depends: base >= 4.3 && < 5,+ binary >= 0.4 && < 0.9,+ bytestring >= 0.10 && < 0.11,+ cryptohash-sha1 >= 0.11.100 && < 0.12,+ cryptohash-md5 >= 0.11.100 && < 0.12,+ entropy >= 0.3.7 && < 0.4,+ network-info == 0.2.*,+ random >= 1.0.1 && < 1.2,+ time >= 1.1 && < 1.8,+ text >= 1 && < 1.3,+ uuid-types >= 1.0.2 && < 2 - Other-Modules:- Data.UUID.Named- Data.Word.Util+ Exposed-Modules:+ Data.UUID+ Data.UUID.Util+ Data.UUID.V1+ Data.UUID.V3+ Data.UUID.V4+ Data.UUID.V5 - Extensions: DeriveDataTypeable- Ghc-Options: -Wall+ Other-Modules:+ Data.UUID.Named+ Data.Word.Util -source-repository head- type: git- location: https://github.com/aslatter/uuid.git+ Default-Language: Haskell2010+ Default-Extensions: DeriveDataTypeable+ Other-Extensions: TypeFamilies+ Ghc-Options: -Wall Test-Suite testuuid Type: exitcode-stdio-1.0 Main-is: TestUUID.hs Hs-source-dirs: tests- Extensions: DeriveDataTypeable+ Default-Language: Haskell2010+ Default-Extensions: DeriveDataTypeable+ Other-Extensions: ViewPatterns Ghc-Options: -Wall -fno-warn-orphans- Build-Depends: base >= 3 && < 5,- uuid,- bytestring >= 0.9 && < 0.11,- HUnit >=1.2 && < 1.4,- QuickCheck >=2.4 && < 2.9,- random >= 1.0.1 && < 1.2,- tasty >= 0.10 && < 0.12,- tasty-hunit == 0.9.*,+ Build-Depends: uuid+ Build-Depends: base >= 4.3 && < 5,+ bytestring >= 0.9 && < 0.11,+ HUnit >= 1.2 && < 1.4,+ QuickCheck >= 2.4 && < 2.10,+ random >= 1.0.1 && < 1.2,+ tasty >= 0.10 && < 0.12,+ tasty-hunit == 0.9.*, tasty-quickcheck == 0.8.* benchmark benchmark Type: exitcode-stdio-1.0 Main-is: BenchUUID.hs Hs-source-dirs: tests- Extensions: DeriveDataTypeable, CPP+ Default-Language: Haskell2010+ Default-Extensions: DeriveDataTypeable, CPP Ghc-Options: -Wall -fno-warn-orphans- Build-depends: base == 4.*,- uuid,- criterion >= 0.4 && < 1.2,- mersenne-random-pure64,- random >= 1.0.1 && < 1.2+ Build-Depends: uuid+ Build-Depends: base >= 4.3 && < 5,+ criterion >= 0.4 && < 1.2,+ mersenne-random-pure64 >= 0.2 && < 0.3,+ random >= 1.0.1 && < 1.2