https://github.com/WalterBright/phobos/blob/std_compress/std/compress.d I wrote this to add components to compress and expand ranges. Highlights: 1. doesn't do any memory allocation 2. can handle arbitrarily large sets of data 3. it's lazy 4. takes an InputRange, and outputs an InputRange Comments welcome.