|
Subject: ANNOUNCE: Codec.Compression.GZip & .BZip Newsgroups: gmane.comp.lang.haskell.general, gmane.comp.lang.haskell.libraries Date: 2006-09-21 08:11:28 GMT (2 years, 41 weeks, 1 day, 3 hours and 44 minutes ago) I'm pleased to announce two new packages: zlib and bzlib which provide functions for compression and decompression in the gzip and bzip2 formats: Both provide pure functions on streams of data represented by lazy ByteStrings: compress, decompress :: ByteString -> ByteString This makes it easy to use either in memory or with disk or network IO. For example a simple gzip compression program is just: > import qualified Data.ByteString.Lazy as ByteString > import qualified Codec.Compression.GZip as GZip > > main = ByteString.interact GZip.compress Or you could lazily read in and decompress @.gz@ file using: > content <- fmap GZip.decompress (readFile file) The code is available via darcs: darcs get http://haskell.org/~duncan/zlib darcs get http://haskell.org/~duncan/bzlib (Note that if you are using GHC-6.5 then you'll need to edit the .cabal file to remove the dependency on fps, since ByteStrings are provided in the base package in GHC-6.5.) There is API documentation too: http://haskell.org/~duncan/zlib/docs http://haskell.org/~duncan/bzlib/docs Both packages are bindings to the corresponding C libs, so they depend on those C libraries. Fortunately both zlib and bzlib2 are available on every OS. It also means that the compression speed is as you would expect since it's the C lib that is doing all the work. I'm very happy to get feedback on the API, the documentation or of course any bug reports. Duncan |
|
|