
On Fri, Jul 02, 2010 at 12:55:03PM +1000, Ivan Miljenovic wrote:
On 1 July 2010 17:25, Vincent Hanquez
wrote: The main reason for this library is the lack of incremental api exposed by current digest libraries, and filling the void about some missing digest algorithms; Also the speed comes as a nice bonus.
Can you explain what you mean by "incremental API"?
The incremental API is the init/update/finalize functions where you can call update as many time as you need, instead of a single function "hash" where you need to hash all your data in one-go. It's necessary in my case since i receive chunks of data to be hashed from the network, and I don't want to carry a buffer of data (with potential security issues), until i can hash everything. The few existing packages that exposes the incremental API, usually do it in the IO monad; cryptohash do it purely, creating a new context as it get updated. (this has a cost but remains fast globally with the C implementation) i.e. update : ctx -> bytestring -> IO () becomes: update : ctx -> bytestring -> ctx
(I'm not going to comment on the API decisions as I've never used any hashing functionality in my code and I thus wouldn't know what is good or bad.)
First of all, Hackage couldn't seem to build it: http://hackage.haskell.org/packages/archive/cryptohash/0.4/logs/failure/ghc-...
ok, as a disclaimer: this the first time i'm using cabal sdist and uploading anything to hackage :) i forgot to add the .h files as extras, hence the build failure.
Secondly, at the moment even if you disable the testing flag, whilst the executable isn't built Cabal still pulls in HUnit as a dependency. This can be resolved by putting the build-depends line in the if statement (and should maybe put up the top of the executable section to make it more obvious):
ok I renamed the flag, and put the build-depends in the conditional. i'll move the conditional at the beggining in the next iteration of the package but i forgot before re-uploading the package.
Oh, and in case it isn't obvious to people, the package name on hackage is just "cryptohash", not "hs-cryptohash".
yes, I though that, on hackage prefixing things with hs- would make it a bit redundant. There's now a 4.0.1 package uploaded on hackage, that should fix most of the problems. Thanks for the comments ! -- Vincent