Because Squash provides a single API, any algorithms which Squash has a plugin to support will be useable from any language for which Squash provides bindings.

The actual integration with individual compression libraries is done through plugins which can be installed separately from Squash itself and are not loaded until they are required. This allows Squash consumers to utilize a great many compression algorithms without rewriting code or unnecessary bloat.

In addition to a permissively licensed library, Squash provides some generic tools which use the library for common tasks. Currently, this includes a command-line interface similar to gzip, bzip2, xz, etc. called squash. There is also a separate project to generate the Squash Benchmark.

Documentation

The C API Reference provides extensive documentation of the C API. For other languages, see the Bindings section.

For a guide to building Squash, see Building Squash.

For the squash command line tool, see the squash(1) man page

Plugins

Squash currently has plugins for the following libraries:

* Currently only available or enabled in git; it will be generally available in the next release.
** Currently disabled pending bug fixes in upstream library.

The number of codecs to choose from can be a bit overwhelming. They all have different performance characteristics, and Squash provides benchmarks to help you decide which codecs are appropriate for your library, or you can do your own testing—swapping codecs is typically just a matter of changing a string, so you can try them all with minimal effort.

Bindings

Squash is written in C, so it should be possible to create bindings for virtually any programming language. Currently, Squash has bindings for the following languages:

If you're interested in helping to add support for more languages, please get in touch with us. This is an area where we could really use help; it is best if bindings are written by people familiar with the language (including idioms and best practices), so we really can't just go about adding bindings for languages we don't know.

Download

Releases

Squash 0.7.0 — 2015-09-20 — details
  • Rewrite brotli plugin to avoid threads
  • Add new file I/O API
  • Replace old file-to-file functions with a new splice API
  • Enable wfLZ plugin
  • Add zlib-ng plugin
  • Add BriefLZ plugin
  • Updated many plugins
  • Assorted bug fixes and enhancements
Squash 0.6.0 — 2015-08-21 — details
  • New plugins:
    • yalz77
    • copy
    • csc
    • ncompress
  • Disabled Doboz
  • Create in-tree copies of all modules
  • Use conformant array parameters for buffers
  • New API for option parsing and introspection
  • Updated many plugins
  • Assorted bug fixes and enhancements
Squash 0.5.0 — 2015-03-29 — details
  • Initial release

If you would like to be notified of new releases via e-mail, you can subscribe to the squash-announce mailing list.

Git

Build status Windows build status

Repository

git clone https://github.com/quixdb/squash.git

Web interface

https://github.com/quixdb/squash

Announcement List

To be notified of new releases via e-mail you can subscribe to the squash-announce mailing list. We will only send messages for new releases or other major events.

Support

Mailing List / Forum

squash-compression@googlegroups.comWeb Interface

Alternatively, you can (ab)use the "Squash and the Squash Benchmark" thread on encode.ru.

IRC

#squash on freenode (chat.freenode.net) — Web Interface

Issue Tracker

GitHub

Disqus

Licensing

Squash is licensed under the MIT License, which is highly permissive and allows Squash to be integrated into any application virtually without restriction. That said, please keep in mind that some plugins use libraries which are subject to more restrictive terms (such as the GNU GPL), and using Squash as an intermediary does not release you from the obligations of those licenses if you choose to actually use plugins which use those libraries. Squash includes an API for programmatically determining the license of a plugin, and it is possible to use it to avoid any GPL'd plugins even if they are installed. Each plugin's page in the C documentation lists the license of the library, or libraries, it uses.

Several of the GPL libraries used by Squash plugins are also available for integration with proprietary software under commercial licenses.