2017-04-04 19:21:36 +08:00
< p align = "center" > < img src = "https://brotli.org/brotli.svg" alt = "Brotli" width = "64" > < / p >
2016-06-21 19:41:25 +08:00
### Introduction
2014-10-14 19:08:35 +08:00
Brotli is a generic-purpose lossless compression algorithm that compresses data
using a combination of a modern variant of the LZ77 algorithm, Huffman coding
and 2nd order context modeling, with a compression ratio comparable to the best
currently available general-purpose compression methods. It is similar in speed
with deflate but offers more dense compression.
2017-06-06 22:58:46 +08:00
The specification of the Brotli Compressed Data Format is defined in [RFC 7932 ](https://tools.ietf.org/html/rfc7932 ).
2014-10-14 19:08:35 +08:00
2015-11-27 17:40:56 +08:00
Brotli is open-sourced under the MIT License, see the LICENSE file.
2015-06-12 20:31:47 +08:00
Brotli mailing list:
https://groups.google.com/forum/#!forum/brotli
2016-06-14 21:53:06 +08:00
2017-06-06 22:58:46 +08:00
[](https://travis-ci.org/google/brotli)
[](https://ci.appveyor.com/project/szabadka/brotli)
2016-06-21 19:41:25 +08:00
2016-10-13 03:58:34 +08:00
### Build instructions
2017-04-28 19:16:59 +08:00
#### Autotools-style CMake
2016-10-13 03:58:34 +08:00
2017-04-28 19:16:59 +08:00
[configure-cmake ](https://github.com/nemequ/configure-cmake ) is an
autotools-style configure script for CMake-based projects.
2016-10-13 03:58:34 +08:00
2017-04-28 19:16:59 +08:00
The basic commands to build, test and install brotli are:
$ mkdir out & & cd out
$ ../configure-cmake
$ make
$ make test
$ make install
2016-10-13 03:58:34 +08:00
2017-04-28 19:16:59 +08:00
To build static libraries use `--disable-shared-libs` argument:
$ mkdir out-static & & cd out-static
$ ../configure-cmake --disable-shared-libs
$ make install
2016-10-13 03:58:34 +08:00
#### Bazel
2016-11-09 21:04:09 +08:00
See [Bazel ](http://www.bazel.build/ )
2016-10-13 03:58:34 +08:00
#### CMake
The basic commands to build, test and install brotli are:
2017-04-28 19:16:59 +08:00
$ mkdir out & & cd out
$ cmake ..
$ make
2016-10-20 03:42:41 +08:00
$ make test
2016-10-13 03:58:34 +08:00
$ make install
You can use other [CMake ](https://cmake.org/ ) configuration. For example, to
2017-04-28 19:16:59 +08:00
build static libraries:
2016-10-13 03:58:34 +08:00
2017-04-28 19:16:59 +08:00
$ mkdir out-static & & cd out-static
$ cmake .. -DBUILD_SHARED_LIBS=OFF
$ make
2016-10-13 03:58:34 +08:00
#### Premake5
See [Premake5 ](https://premake.github.io/ )
#### Python
2017-08-02 22:59:46 +08:00
To install the latest release of the Python module, run the following:
2016-10-13 03:58:34 +08:00
2017-08-02 22:59:46 +08:00
$ pip install brotli
2016-10-13 03:58:34 +08:00
2017-08-02 22:59:46 +08:00
See the [Python readme ](python/README.md ) for more details on installing
from source, development, and testing.
2016-10-18 01:00:14 +08:00
2016-08-10 20:44:59 +08:00
### Benchmarks
* [Squash Compression Benchmark ](https://quixdb.github.io/squash-benchmark/ ) / [Unstable Squash Compression Benchmark ](https://quixdb.github.io/squash-benchmark/unstable/ )
* [Large Text Compression Benchmark ](http://mattmahoney.net/dc/text.html )
* [Lzturbo Benchmark ](https://sites.google.com/site/powturbo/home/benchmark )
2016-06-21 19:41:25 +08:00
### Related projects
Independent [decoder ](https://github.com/madler/brotli ) implementation by Mark Adler, based entirely on format specification.
JavaScript port of brotli [decoder ](https://github.com/devongovett/brotli.js ). Could be used directly via `npm install brotli`
2017-06-22 16:07:07 +08:00
Hand ported [decoder / encoder ](https://github.com/dominikhlbg/BrotliHaxe ) in haxe by Dominik Homberger. Output source code: JavaScript, PHP, Python, Java and C#