(Yet Another) Deflate Decompression Implementation in CL

| | TrackBacks (1)

I have finally gotten around to separating out and cleaning up the Deflate (RFC 1951) decompression routines we have been using in-house for quite some time, and released them under an X-style free license (see links below), for those who need something with a less restrictive license or better performance than is currently freely available1.

The library supports decompression of pure deflate streams, zlib-style (RFC 1950) and gzip-style (RFC 1952) streams, including optional checksum checking. The code should be fully portable across all conforming ANSI Common Lisp implementations, and has been performance tuned for SBCL and CMU CL, and somewhat for Lispworks (CRC-32 checksum code). While the performance does not reach the level of zlib/gzip (by a factor of around 3 to 3.52 on my most recent tests with SBCL), mostly due to stream I/O overhead and a not very sophisticated huffman decoder, it is eminently usable.

Support for compression and ZIP-file handling are currently not included.

Enjoy.

Links


  1. Since publishing this entry, I’ve been made aware of Chipz from Nathan Froyd, which achieves comparable levels of performance and is as free as Deflate; see my newer blog entry for more information.

  2. It seems that on larger files the factor is actually nearer to 1.25-1.5, see this entry for details.

1 TrackBacks

Listed below are links to blogs that reference this entry: (Yet Another) Deflate Decompression Implementation in CL.

TrackBack URL for this entry: http://mt.pierre-mai.de/mt/mt-tb.cgi/21

» Deflate: And then there is Chipz from Pierre R. Mai's Miscellany

So it seems the best way of finding out about lisp packages is releasing a similar package yourself ;): Right on the foot of releasing Deflate, I get to notice Chipz, a similar, but more capable package by Nathan Froyd,... Read More

Pages

Recent Activity

2009-06-30

  • Pierre tweeted, "Tinkering with font-face and wondering whether to employ it on website... I just love to "waste" time with typography!"

2009-06-29

  • Pierre tweeted, "What's up with T-Mobile still not offering iPhone tethering? If they want to charge money, surely they could offer their normal data prices?"

2009-06-18

  • Pierre tweeted, "(Again) spent too much time reading old reports at RAND Corp. site: http://www.rand.org/pubs/online/ e.g. this: http://tinyurl.com/nu6geh"

2009-06-16

  • Pierre tweeted, "Menlo seems like a coding font I might prefer to Monaco or the Lucida fonts I've used in the past: http://tinyurl.com/menlocmp (via @gruber)"

2009-06-15

  • Pierre tweeted, "Travel industry seems to be stuck in the 60s, IT-wise. Price info in catalogs will prove to be great mistery to future archeologists."

2009-06-04

  • Pierre tweeted, "@xach, @froydnj is right, and worse, I wasn't even aware of Chipz when releasing Deflate, hence the comments re. "less restrictive/faster"."
  • Pierre tweeted, "@froydnj Yes, Lispworks really needs some special love for 32bit stuff, CRC32 was unbelievably slow otherwise. Rest is plain vanilla though."
  • Pierre tweeted, "@froydnj Performance on SBCL (OS X) seems similar, with deflate maybe a hair faster, on LispWorks deflate is quite a bit faster... (CRC32?)"

2009-06-03

  • Pierre tweeted, "@froydnj Heh, I didn't know about chipz, actually (had this been available at the time we'd have used it!), but I'll give it a whirl!"
  • Pierre tweeted, "Intermediate switching between conceptually different version control systems is bad for your sanity!"