| Github Actions | Codecov |
|---|---|
LZW streaming compressor/decompressor based on LZW AB compatible with UNIX compress.
- Linked list (idea from LZW AB). It has low memory usage <= 327 KB (16 bit codes). It is slow in general, recommended for small amount of data.
- Sparse array (enabled by default). It has high memory usage <= 33.5 MB (16 bit codes). It is fast, recommended for large amount of data.
You can add your own implementation, see api for dictionary.
- You can compress and decompress
.Z(tar.Z) archives. - You can resurrect legacy apis (like
Content-Encoding: compressin HTTP 1.1). - You can support ancient software and make your application looks like ancient software.
- Accurate ratio calculation without overhead, compressor provides smaller archive (compatible with UNIX compress).
- Unaligned bit groups switch (only disabled mode is compatible with UNIX compress).
- LSB/MSB switch (only LSB mode is compatible with UNIX compress).
- Magic header switch (only enabled magic header is compatible with UNIX compress).
Operating systems: GNU/Linux, OSX, FreeBSD, Windows (Visual Studio, MinGW, Cygwin).
- Runtime and compilation dependencies: GMP or TomMath.
- Compilation dependencies: cmake, gcc or clang or msvc, asciidoc, docbook xml 4.5.
- Additional development tools: yq.
| Popular OS | Runtime dependencies | Compilation dependencies |
|---|---|---|
| Ubuntu | libgmp10/libtommath1 |
libgmp-dev/libtommath-dev |
cmake, gcc/clang, asciidoc, docbook-xml |
||
| CentOS | gmp/libtommath |
gmp-devel/libtommath-devel |
cmake3, gcc/clang, asciidoc, docbook-dtds |
||
| ArchLinux | gmp/libtommath |
gmp/libtommath |
cmake, gcc/clang, asciidoc, docbook-xml |
||
| OSX | gmp/libtommath |
gmp/libtommath |
cmake, gcc/llvm, asciidoc |
||
| Windows | libtommath |
msvc, windows sdk, ucrt, libtommath |
cmake, curl, git, python, asciidoc, docbook-xml |
||
xsltproc, docbook-bundle, zip, nsis |
You can download and install prebuilt packages on releases page.
You can use scripts/release.sh, it will create package for your system from source. You can also use overlay for gentoo.
Installation for Windows (Visual Studio) from source is not so trivial:
- Install Visual Studio with components: msvc, windows sdk, ucrt.
- Install chocolatey with components:
cmake, curl, git, python, xsltproc, docbook-bundle, zip, nsis. - Install asciidoc.
- Download docbook-xml-4.5.zip and unpack it to
C:\ProgramData\chocolatey\lib\docbook-bundle\docbook-4.5. - Edit
C:\ProgramData\chocolatey\lib\docbook-bundle\catalog.xmland append<nextCatalog catalog="./docbook-4.5/catalog.xml"/>. - Launch
x64 Native Tools Command Prompas admin.
git clone "https://github.com/libtom/libtommath.git" --depth 1 && cd "libtommath"
nmake -f "makefile.msvc" install && cd ".."
set "XML_CATALOG_FILES=C:\ProgramData\chocolatey\lib\docbook-bundle\catalog.xml"
set "INCLUDE=C:\devel\include;%INCLUDE%" && set "LIB=C:\devel\lib;%LIB%"
set "PATH=C:\devel\bin;C:\Program Files\Git\bin;C:\Program Files\CMake\bin;%PATH%"
cd build && bash "..\scripts\release.sh"Please use the following command for OSX.
export XML_CATALOG_FILES=/usr/local/etc/xml/catalogcd build
cmake -DLZWS_COMPRESSOR_DICTIONARY="sparse-array" ".." && cmake --build "."
echo -n "TOBEORNOTTOBEORTOBEORNOT" | ./src/cli/lzws | ./src/cli/lzws -d| Option | Values | Default | Description |
|---|---|---|---|
LZWS_COMPRESSOR_DICTIONARY |
sparse-array, linked-list |
sparse-array |
dictionary implementation |
LZWS_BIGNUM_LIBRARY |
gmp, tommath, "" (auto) |
"" (auto) |
bignum library |
LZWS_SHARED |
ON, OFF |
ON |
build shared binaries |
LZWS_STATIC |
ON, OFF |
OFF |
build static binaries |
LZWS_CLI |
ON, OFF |
ON |
build cli |
LZWS_TESTS |
ON, OFF |
ON |
build tests |
LZWS_EXAMPLES |
ON, OFF |
OFF |
build examples |
LZWS_MAN |
ON, OFF |
OFF |
build man |
LZWS_ARGTABLE3_FALLBACK |
github, github-archive |
github-archive |
argtable3 fallback |
bitbucket, bitbucket-archive |
|||
gitlab, gitlab-archive |
|||
LZWS_COVERAGE |
ON, OFF |
OFF |
enable coverage |
See examples, man and doc folders.
Please visit scripts/test-images. See test script scripts/toolchains.sh and test script scripts/coverage_toolchains.sh for CI.
Copyright (c) 2016 David Bryant, 2018+ other authors, all rights reserved (see AUTHORS). Distributed under the BSD Software License (see LICENSE).
Releases with GMP provided without static linked binaries (GMP LGPL license limitation).