ncompress

a fast, simple LZW file compressor

View on GitHub

About

Compress is a fast, simple LZW file compressor. Compress does not have the highest compression rate, but it is one of the fastest programs to compress data. Compress is the defacto standard in the UNIX community for compressing files.

The ncompress code is, and will continue to be, released into the public domain as the original authors intended.

Also note that all existing patents on the LZW algorithm have expired world-wide.

Status

The master branch is tracking the 5.x release series.

We will always support the output of older compress versions (including the compress-2.0 format), and we will never produce files that compress-3.0 is unable to process.

The ncompress-4.2.4 branch was used to track a series of bugfix releases. It is no longer used. See the history section below for more details.

Downloads

The latest downloads can be found here: https://github.com/vapier/ncompress/releases

Portability Requirements

Our goal is to remain portable and to rely on the compiler for low level optimization. In other words, improved algorithms will be considered, but not compiler-specific tricks or (ab)use of keywords like inline or register or inline assembly.

We require C99 compilers which means 1999-era software should work OK. We aim for POSIX/IEEE Std 1003.1-2001 compliance. That is, we will try to avoid functionality that is not defined there.

If those requirements are too new for your system, older releases of compress are always available for download.

Contact

Please use the issue tracker to contact us for bugs, questions, etc…

Current primary maintainer: Mike Frysinger

Specifications

You can find plenty of info on the LZW algorithm (just use Google), but for fun, here’s some helpful links.

History

The compress/ncompress project has a long history, even by computing standards. The interwoven patent history hindered its development significantly.

NB: The history here has been reconstructed by people not directly involved at the time. Any errors/omissions are not intentional, so please feel free to send updates/fixes.

NB: A lot of effort has been made to track down public releases. However, as can be seen below, and from the inline RCS history in the compress file itself, there are many commits that don’t have public information. The actual RCS file appears to have never been published. If people have access to missing pieces, please feel free to pass them along.

NB: Due to the nature of early software sharing & development (i.e. long before VCS was common practice, or code sharing sites like GitHub existed, and many non-standardized architectures & operating systems were in use), many forks of the compress code were developed & posted, but eventually died out. The history below will only focus on the canonical C implementation and its lineage that has been widely integrated into other projects.