head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11:1.1.1.1.0.2
	brotli-1-2-1:1.1.1.1
	GOOGLE:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2026.10.28.21.11.59;	author mrg;	state Exp;
branches
	1.1.1.1;
next	;
commitid	3cPg6n1vuoDZUh1H;

1.1.1.1
date	2026.10.28.21.11.59;	author mrg;	state Exp;
branches
	1.1.1.1.2.1;
next	;
commitid	3cPg6n1vuoDZUh1H;

1.1.1.1.2.1
date	2026.10.28.21.11.59;	author martin;	state dead;
branches;
next	1.1.1.1.2.2;
commitid	Zd6vMoBhuWqLbo1H;

1.1.1.1.2.2
date	2026.10.29.16.03.48;	author martin;	state Exp;
branches;
next	;
commitid	Zd6vMoBhuWqLbo1H;


desc
@@


1.1
log
@Initial revision
@
text
@# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased

## [1.2.1] - 2026-10-21

### SECURITY
 - CVE-2026-111497: out-of-bounds write permits remote code execution

## [1.2.0] - 2025-10-27

### SECURITY
 - python: added `Decompressor::can_accept_more_data` method and optional
           `output_buffer_limit` argument `Decompressor::process`;
           that allows mitigation of unexpectedly large output;
           reported by Charles Chan (https://github.com/charleswhchan)

### Added
 - **decoder / encoder: added static initialization to reduce binary size**
 - python: allow limiting decoder output (see SECURITY section)
 - CLI: `brcat` alias; allow decoding concatenated brotli streams
 - kt: pure Kotlin decoder
 - cgo: support "raw" dictionaries
 - build: Bazel modules

### Removed
 - java: dropped `finalize()` for native entities

### Fixed
 - java: in `compress` pass correct length to native encoder

### Improved
 - build: install man pages
 - build: updated / fixed / refined Bazel buildfiles
 - encoder: faster encoding
 - cgo: link via pkg-config
 - python: modernize extension / allow multi-phase module initialization

### Changed
 - decoder / encoder: static tables use "small" model (allows 2GiB+ binaries)


## [1.1.0] - 2023-08-28

### Added
 - decoder: `BrotliDecoderAttachDictionary`
 - decoder: `BrotliDecoderOnFinish` callback behind `BROTLI_REPORTING`
 - decoder: `BrotliDecoderSetMetadataCallbacks`
 - encoder: `BrotliEncoderPrepareDictionary`,
            `BrotliEncoderDestroyPreparedDictionary`,
            `BrotliEncoderAttachPreparedDictionary`
 - decoder: `BrotliEncoderOnFinish` callback behind `BROTLI_REPORTING`
 - common: `BrotliSharedDictionaryCreateInstance`,
           `BrotliSharedDictionaryDestroyInstance`,
           `BrotliSharedDictionaryAttach`
 - CLI: `--dictionary` option
 - java: encoder wrapper: `Parameters.mode`
 - java: `Brotli{Input|Output}Stream.attachDictionary`
 - java: wrapper: partial byte array input
 - typescript: decoder (transpiled from Java)

### Removed
 - build: `BROTLI_BUILD_PORTABLE` option

### Fixed
 - java: JNI decoder failed sometimes on power of 2 payloads

### Improved
 - java / js: smaller decoder footprint
 - decoder: faster decoding
 - encoder: faster encoding
 - encoder: smaller stack frames


## [1.0.9] - 2020-08-27

Re-release of 1.0.8.


## [1.0.8] - 2020-08-27

### SECURITY
 - CVE-2020-8927: potential overflow when input chunk is >2GiB

### Added
 - encoder: `BROTLI_PARAM_STREAM_OFFSET`

### Improved
 - CLI: better reporting
 - CLI: workaround for "lying feof"
 - java: faster decoding
 - java: support "large window"
 - encoder: use less memory
 - release: filter sources for the tarball


## [1.0.7] - 2018-10-23

### Improved
 - decoder: faster decoding on ARM CPU


## [1.0.6] - 2018-09-13

### Fixed
 - build: AutoMake and CMake build
 - java: JDK 8<->9 incompatibility


## [1.0.5] - 2018-06-27

### Added
 - scripts: extraction of static dictionary from RFC

### Improved
 - encoder: better compression at quality 1
 - encoder: better compression with "large window"


## [1.0.4] - 2018-03-29

### Added
 - encoder: `BROTLI_PARAM_NPOSTFIX`, `BROTLI_PARAM_NDIRECT`
 - CLI: `--large_window` option

### Improved
 - encoder: better compression


## [1.0.3] - 2018-03-02

### Added
 - decoder: `BROTLI_DECODER_PARAM_LARGE_WINDOW` enum
 - encoder: `BROTLI_PARAM_LARGE_WINDOW` enum
 - java: `BrotliInputStream.setEager`

### Fixed
 - build: AutoMake build in some environments
 - encoder: fix one-shot q=10 1-byte input compression

### Improved
 - encoder: better font compression


## [1.0.2] - 2017-11-28

### Added
 - build: AutoMake
 - research: better dictionary generators


## [1.0.1] - 2017-09-22

### Changed
 - clarifications in `README.md`


## [1.0.0] - 2017-09-20

### Added
 - decoder: `BrotliDecoderSetParameter`
 - csharp: decoder (transpiled from Java)
 - java: JNI wrappers
 - javascript: decoder (transpiled from Java)
 - python: streaming decompression
 - research: dictionary generator

### Changed
 - CLI: rename `bro` to `brotli`

### Removed
 - decoder: `BrotliDecoderSetCustomDictionary`
 - encoder: `BrotliEncoderSetCustomDictionary`

### Improved
 - java: faster decoding
 - encoder: faster compression


## [0.6.0] - 2017-04-10

### Added
 - CLI: `--no-copy-stat option
 - java: pure java decoder
 - build: fuzzers
 - research: `brotlidump` tool to explore brotli streams
 - go: wrapper

### Removed
 - decoder: API with plain `Brotli` prefix

### Deprecated
 - encoder: `BrotliEncoderInputBlockSize`, `BrotliEncoderCopyInputToRingBuffer`,
            `BrotliEncoderWriteData`

### Improved
 - encoder: faster compression
 - encoder: denser compression
 - decoder: faster decompression
 - python: release GIL
 - python: use zero-copy API


## [0.5.2] - 2016-08-11

### Added
 - common: `BROTLI_BOOL`, `BROTLI_TRUE`, `BROTLI_FALSE`
 - decoder: API with `BrotliDecoder` prefix instead of plain `Brotli`
 - build: Bazel, CMake

### Deprecated
 - decoder: API with plain `Brotli` prefix

### Changed
 - boolean argument / result types are re-branded as `BROTLI_BOOL`

### Improved
 - build: reduced amount of warnings in various build environments
 - encoder: faster compression
 - encoder: lower memory usage


## [0.5.0] - 2016-06-15

### Added
 - common: library has been assembled from shared parts of decoder and encoder
 - encoder: C API

### Removed
 - encoder: C++ API


## [0.4.0] - 2016-06-14

### Added
 - encoder: faster compression modes (quality 0 and 1)
 - decoder: `BrotliGetErrorCode`, `BrotliErrorString` and
            `BROTLI_ERROR_CODES_LIST`

### Removed
 - decoder: deprecated streaming API (using `BrotliInput`)

### Fixed
 - decoder: possible pointer underflow

### Improved
 - encoder: faster compression


## [0.3.0] - 2015-12-22

### LICENSE
License have been upgraded to more permissive MIT.

### Added
 - CLI: `--window` option
 - `tools/version.h` file
 - decoder: low level streaming API
 - decoder: custom memory manager API

### Deprecated
 - decoder: streaming API using `BrotliInput` struct

### Fixed
 - decoder: processing of uncompressed blocks
 - encoder: possible division by zero

### Improved
 - encoder: faster decompression
 - build: more portable builds for various CPU architectures


## [0.2.0] - 2015-09-01

### Added
 - CLI: `--verbose` and `--repeat` options

### Fixed
 - decoder: processing of uncompressed blocks
 - encoder: block stitching on quality 10 / 11

### Improved
 - build: CI/CD integration
 - build: better test coverage
 - encoder: better compression of UTF-8 content
 - encoder: faster decompression


## [0.1.0] - 2015-08-11

Initial release.
@


1.1.1.1
log
@Initial import of brotli 1.2.1, that fixes CVE 2026-111497.

also includes enhancements in dictionary handling, static init of
some data to reduce size, and minor other clean ups.

the new go and python code, as well as the ignored C encoder are
not included in this import as we don't use them, and they are
more than half the space.
@
text
@@


1.1.1.1.2.1
log
@file CHANGELOG.md was added on branch netbsd-11 on 2026-10-29 16:03:48 +0000
@
text
@d1 296
@


1.1.1.1.2.2
log
@Pull up the following, requested by mrg in ticket #562:

	external/mit/brotli/dist/BUILD.bazel            up to 1.1.1.1
	external/mit/brotli/dist/c/common/dictionary_inc.h up to 1.1.1.1
	external/mit/brotli/dist/c/common/shared_dictionary.c up to 1.1.1.1
	external/mit/brotli/dist/c/common/shared_dictionary_internal.h up to 1.1.1.1
	external/mit/brotli/dist/c/common/static_init.h up to 1.1.1.1
	external/mit/brotli/dist/c/dec/prefix.c         up to 1.1.1.1
	external/mit/brotli/dist/c/dec/prefix_inc.h     up to 1.1.1.1
	external/mit/brotli/dist/c/dec/static_init.c    up to 1.1.1.1
	external/mit/brotli/dist/c/dec/static_init.h    up to 1.1.1.1
	external/mit/brotli/dist/c/include/brotli/shared_dictionary.h up to 1.1.1.1
	external/mit/brotli/dist/docs/brotli.svg        up to 1.1.1.1
	external/mit/brotli/dist/scripts/download_testdata.sh up to 1.1.1.1
	external/mit/brotli/dist/tests/testdata/zerosukkanooa.compressed up to 1.1.1.1
	external/mit/brotli/dist/tests/cli_test.sh      up to 1.1.1.1
	external/mit/brotli/dist/SECURITY.md            up to 1.1.1.1
	external/mit/brotli/dist/.bazelignore           up to 1.1.1.1
	external/mit/brotli/dist/CHANGELOG.md           up to 1.1.1.1
	external/mit/brotli/dist/BUILD                  delete
	external/mit/brotli/dist/Makefile               delete
	external/mit/brotli/dist/Makefile.am            delete
	external/mit/brotli/dist/WORKSPACE              delete
	external/mit/brotli/dist/bootstrap              delete
	external/mit/brotli/dist/compiler_config_setting.bzl delete
	external/mit/brotli/dist/configure              delete
	external/mit/brotli/dist/configure-cmake        delete
	external/mit/brotli/dist/configure.ac           delete
	external/mit/brotli/dist/premake5.lua           delete
	external/mit/brotli/dist/c/enc/backward_references.c delete
	external/mit/brotli/dist/c/enc/backward_references.h delete
	external/mit/brotli/dist/c/enc/backward_references_hq.c delete
	external/mit/brotli/dist/c/enc/backward_references_hq.h delete
	external/mit/brotli/dist/c/enc/backward_references_inc.h delete
	external/mit/brotli/dist/c/enc/bit_cost.c       delete
	external/mit/brotli/dist/c/enc/bit_cost.h       delete
	external/mit/brotli/dist/c/enc/bit_cost_inc.h   delete
	external/mit/brotli/dist/c/enc/block_encoder_inc.h delete
	external/mit/brotli/dist/c/enc/block_splitter.c delete
	external/mit/brotli/dist/c/enc/block_splitter.h delete
	external/mit/brotli/dist/c/enc/block_splitter_inc.h delete
	external/mit/brotli/dist/c/enc/brotli_bit_stream.c delete
	external/mit/brotli/dist/c/enc/brotli_bit_stream.h delete
	external/mit/brotli/dist/c/enc/cluster.c        delete
	external/mit/brotli/dist/c/enc/cluster.h        delete
	external/mit/brotli/dist/c/enc/cluster_inc.h    delete
	external/mit/brotli/dist/c/enc/command.c        delete
	external/mit/brotli/dist/c/enc/command.h        delete
	external/mit/brotli/dist/c/enc/compress_fragment.c delete
	external/mit/brotli/dist/c/enc/compress_fragment.h delete
	external/mit/brotli/dist/c/enc/compress_fragment_two_pass.c delete
	external/mit/brotli/dist/c/enc/compress_fragment_two_pass.h delete
	external/mit/brotli/dist/c/enc/dictionary_hash.c delete
	external/mit/brotli/dist/c/enc/dictionary_hash.h delete
	external/mit/brotli/dist/c/enc/encode.c         delete
	external/mit/brotli/dist/c/enc/encoder_dict.c   delete
	external/mit/brotli/dist/c/enc/encoder_dict.h   delete
	external/mit/brotli/dist/c/enc/entropy_encode.c delete
	external/mit/brotli/dist/c/enc/entropy_encode.h delete
	external/mit/brotli/dist/c/enc/entropy_encode_static.h delete
	external/mit/brotli/dist/c/enc/fast_log.c       delete
	external/mit/brotli/dist/c/enc/fast_log.h       delete
	external/mit/brotli/dist/c/enc/find_match_length.h delete
	external/mit/brotli/dist/c/enc/hash.h           delete
	external/mit/brotli/dist/c/enc/hash_composite_inc.h delete
	external/mit/brotli/dist/c/enc/hash_forgetful_chain_inc.h delete
	external/mit/brotli/dist/c/enc/hash_longest_match64_inc.h delete
	external/mit/brotli/dist/c/enc/hash_longest_match_inc.h delete
	external/mit/brotli/dist/c/enc/hash_longest_match_quickly_inc.h delete
	external/mit/brotli/dist/c/enc/hash_rolling_inc.h delete
	external/mit/brotli/dist/c/enc/hash_to_binary_tree_inc.h delete
	external/mit/brotli/dist/c/enc/histogram.c      delete
	external/mit/brotli/dist/c/enc/histogram.h      delete
	external/mit/brotli/dist/c/enc/histogram_inc.h  delete
	external/mit/brotli/dist/c/enc/literal_cost.c   delete
	external/mit/brotli/dist/c/enc/literal_cost.h   delete
	external/mit/brotli/dist/c/enc/memory.c         delete
	external/mit/brotli/dist/c/enc/memory.h         delete
	external/mit/brotli/dist/c/enc/metablock.c      delete
	external/mit/brotli/dist/c/enc/metablock.h      delete
	external/mit/brotli/dist/c/enc/metablock_inc.h  delete
	external/mit/brotli/dist/c/enc/params.h         delete
	external/mit/brotli/dist/c/enc/prefix.h         delete
	external/mit/brotli/dist/c/enc/quality.h        delete
	external/mit/brotli/dist/c/enc/utf8_util.c      delete
	external/mit/brotli/dist/c/enc/ringbuffer.h     delete
	external/mit/brotli/dist/c/enc/static_dict.c    delete
	external/mit/brotli/dist/c/enc/static_dict.h    delete
	external/mit/brotli/dist/c/enc/static_dict_lut.h delete
	external/mit/brotli/dist/c/enc/utf8_util.h      delete
	external/mit/brotli/dist/c/enc/write_bits.h     delete
	external/mit/brotli/dist/python/Makefile        delete
	external/mit/brotli/dist/python/README.md       delete
	external/mit/brotli/dist/python/_brotli.cc      delete
	external/mit/brotli/dist/python/bro.py          delete
	external/mit/brotli/dist/python/brotli.py       delete
	external/mit/brotli/dist/python/tests/__init__.py delete
	external/mit/brotli/dist/python/tests/_test_utils.py delete
	external/mit/brotli/dist/python/tests/bro_test.py delete
	external/mit/brotli/dist/python/tests/compress_test.py delete
	external/mit/brotli/dist/python/tests/compressor_test.py delete
	external/mit/brotli/dist/python/tests/decompress_test.py delete
	external/mit/brotli/dist/python/tests/decompressor_test.py delete
	external/mit/brotli/dist/scripts/sources.lst    delete
	external/mit/brotli/dist/tests/Makefile         delete
	external/mit/brotli/dist/tests/compatibility_test.sh delete
	external/mit/brotli/dist/tests/roundtrip_test.sh delete
	external/mit/brotli/dist/CMakeLists.txt         up to 1.1.1.2
	external/mit/brotli/dist/CONTRIBUTING.md        up to 1.1.1.2
	external/mit/brotli/dist/MANIFEST.in            up to 1.1.1.2
	external/mit/brotli/dist/README                 up to 1.1.1.2
	external/mit/brotli/dist/README.md              up to 1.1.1.2
	external/mit/brotli/dist/setup.cfg              up to 1.1.1.2
	external/mit/brotli/dist/setup.py               up to 1.1.1.2
	external/mit/brotli/dist/c/common/constants.c   up to 1.1.1.2
	external/mit/brotli/dist/c/common/constants.h   up to 1.1.1.2
	external/mit/brotli/dist/c/common/context.c     up to 1.1.1.2
	external/mit/brotli/dist/c/common/context.h     up to 1.1.1.2
	external/mit/brotli/dist/c/common/dictionary.c  up to 1.1.1.2
	external/mit/brotli/dist/c/common/dictionary.h  up to 1.1.1.2
	external/mit/brotli/dist/c/common/platform.c    up to 1.1.1.2
	external/mit/brotli/dist/c/common/platform.h    up to 1.2
	external/mit/brotli/dist/c/common/transform.c   up to 1.1.1.2
	external/mit/brotli/dist/c/common/transform.h   up to 1.1.1.2
	external/mit/brotli/dist/c/common/version.h     up to 1.1.1.2
	external/mit/brotli/dist/c/dec/bit_reader.c     up to 1.1.1.2
	external/mit/brotli/dist/c/dec/bit_reader.h     up to 1.1.1.2
	external/mit/brotli/dist/c/dec/decode.c         up to 1.1.1.2
	external/mit/brotli/dist/c/dec/huffman.c        up to 1.1.1.2
	external/mit/brotli/dist/c/dec/huffman.h        up to 1.1.1.2
	external/mit/brotli/dist/c/dec/prefix.h         up to 1.1.1.2
	external/mit/brotli/dist/c/dec/state.c          up to 1.1.1.2
	external/mit/brotli/dist/c/dec/state.h          up to 1.1.1.2
	external/mit/brotli/dist/c/include/brotli/decode.h up to 1.1.1.2
	external/mit/brotli/dist/c/include/brotli/encode.h up to 1.1.1.2
	external/mit/brotli/dist/c/include/brotli/port.h up to 1.1.1.2
	external/mit/brotli/dist/c/include/brotli/types.h up to 1.1.1.2
	external/mit/brotli/dist/c/tools/brotli.c       up to 1.1.1.2
	external/mit/brotli/dist/c/tools/brotli.md      up to 1.1.1.2
	external/mit/brotli/dist/docs/brotli.1          up to 1.1.1.2
	external/mit/brotli/dist/docs/constants.h.3     up to 1.1.1.2
	external/mit/brotli/dist/docs/decode.h.3        up to 1.1.1.2
	external/mit/brotli/dist/docs/encode.h.3        up to 1.1.1.2
	external/mit/brotli/dist/docs/types.h.3         up to 1.1.1.2
	external/mit/brotli/dist/scripts/libbrotlicommon.pc.in up to 1.1.1.2
	external/mit/brotli/dist/scripts/libbrotlidec.pc.in up to 1.1.1.2
	external/mit/brotli/dist/scripts/libbrotlienc.pc.in up to 1.1.1.2

Initial import of brotli 1.2.1, that fixes CVE 2026-111497.
@
text
@a0 296
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased

## [1.2.1] - 2026-10-21

### SECURITY
 - CVE-2026-111497: out-of-bounds write permits remote code execution

## [1.2.0] - 2025-10-27

### SECURITY
 - python: added `Decompressor::can_accept_more_data` method and optional
           `output_buffer_limit` argument `Decompressor::process`;
           that allows mitigation of unexpectedly large output;
           reported by Charles Chan (https://github.com/charleswhchan)

### Added
 - **decoder / encoder: added static initialization to reduce binary size**
 - python: allow limiting decoder output (see SECURITY section)
 - CLI: `brcat` alias; allow decoding concatenated brotli streams
 - kt: pure Kotlin decoder
 - cgo: support "raw" dictionaries
 - build: Bazel modules

### Removed
 - java: dropped `finalize()` for native entities

### Fixed
 - java: in `compress` pass correct length to native encoder

### Improved
 - build: install man pages
 - build: updated / fixed / refined Bazel buildfiles
 - encoder: faster encoding
 - cgo: link via pkg-config
 - python: modernize extension / allow multi-phase module initialization

### Changed
 - decoder / encoder: static tables use "small" model (allows 2GiB+ binaries)


## [1.1.0] - 2023-08-28

### Added
 - decoder: `BrotliDecoderAttachDictionary`
 - decoder: `BrotliDecoderOnFinish` callback behind `BROTLI_REPORTING`
 - decoder: `BrotliDecoderSetMetadataCallbacks`
 - encoder: `BrotliEncoderPrepareDictionary`,
            `BrotliEncoderDestroyPreparedDictionary`,
            `BrotliEncoderAttachPreparedDictionary`
 - decoder: `BrotliEncoderOnFinish` callback behind `BROTLI_REPORTING`
 - common: `BrotliSharedDictionaryCreateInstance`,
           `BrotliSharedDictionaryDestroyInstance`,
           `BrotliSharedDictionaryAttach`
 - CLI: `--dictionary` option
 - java: encoder wrapper: `Parameters.mode`
 - java: `Brotli{Input|Output}Stream.attachDictionary`
 - java: wrapper: partial byte array input
 - typescript: decoder (transpiled from Java)

### Removed
 - build: `BROTLI_BUILD_PORTABLE` option

### Fixed
 - java: JNI decoder failed sometimes on power of 2 payloads

### Improved
 - java / js: smaller decoder footprint
 - decoder: faster decoding
 - encoder: faster encoding
 - encoder: smaller stack frames


## [1.0.9] - 2020-08-27

Re-release of 1.0.8.


## [1.0.8] - 2020-08-27

### SECURITY
 - CVE-2020-8927: potential overflow when input chunk is >2GiB

### Added
 - encoder: `BROTLI_PARAM_STREAM_OFFSET`

### Improved
 - CLI: better reporting
 - CLI: workaround for "lying feof"
 - java: faster decoding
 - java: support "large window"
 - encoder: use less memory
 - release: filter sources for the tarball


## [1.0.7] - 2018-10-23

### Improved
 - decoder: faster decoding on ARM CPU


## [1.0.6] - 2018-09-13

### Fixed
 - build: AutoMake and CMake build
 - java: JDK 8<->9 incompatibility


## [1.0.5] - 2018-06-27

### Added
 - scripts: extraction of static dictionary from RFC

### Improved
 - encoder: better compression at quality 1
 - encoder: better compression with "large window"


## [1.0.4] - 2018-03-29

### Added
 - encoder: `BROTLI_PARAM_NPOSTFIX`, `BROTLI_PARAM_NDIRECT`
 - CLI: `--large_window` option

### Improved
 - encoder: better compression


## [1.0.3] - 2018-03-02

### Added
 - decoder: `BROTLI_DECODER_PARAM_LARGE_WINDOW` enum
 - encoder: `BROTLI_PARAM_LARGE_WINDOW` enum
 - java: `BrotliInputStream.setEager`

### Fixed
 - build: AutoMake build in some environments
 - encoder: fix one-shot q=10 1-byte input compression

### Improved
 - encoder: better font compression


## [1.0.2] - 2017-11-28

### Added
 - build: AutoMake
 - research: better dictionary generators


## [1.0.1] - 2017-09-22

### Changed
 - clarifications in `README.md`


## [1.0.0] - 2017-09-20

### Added
 - decoder: `BrotliDecoderSetParameter`
 - csharp: decoder (transpiled from Java)
 - java: JNI wrappers
 - javascript: decoder (transpiled from Java)
 - python: streaming decompression
 - research: dictionary generator

### Changed
 - CLI: rename `bro` to `brotli`

### Removed
 - decoder: `BrotliDecoderSetCustomDictionary`
 - encoder: `BrotliEncoderSetCustomDictionary`

### Improved
 - java: faster decoding
 - encoder: faster compression


## [0.6.0] - 2017-04-10

### Added
 - CLI: `--no-copy-stat option
 - java: pure java decoder
 - build: fuzzers
 - research: `brotlidump` tool to explore brotli streams
 - go: wrapper

### Removed
 - decoder: API with plain `Brotli` prefix

### Deprecated
 - encoder: `BrotliEncoderInputBlockSize`, `BrotliEncoderCopyInputToRingBuffer`,
            `BrotliEncoderWriteData`

### Improved
 - encoder: faster compression
 - encoder: denser compression
 - decoder: faster decompression
 - python: release GIL
 - python: use zero-copy API


## [0.5.2] - 2016-08-11

### Added
 - common: `BROTLI_BOOL`, `BROTLI_TRUE`, `BROTLI_FALSE`
 - decoder: API with `BrotliDecoder` prefix instead of plain `Brotli`
 - build: Bazel, CMake

### Deprecated
 - decoder: API with plain `Brotli` prefix

### Changed
 - boolean argument / result types are re-branded as `BROTLI_BOOL`

### Improved
 - build: reduced amount of warnings in various build environments
 - encoder: faster compression
 - encoder: lower memory usage


## [0.5.0] - 2016-06-15

### Added
 - common: library has been assembled from shared parts of decoder and encoder
 - encoder: C API

### Removed
 - encoder: C++ API


## [0.4.0] - 2016-06-14

### Added
 - encoder: faster compression modes (quality 0 and 1)
 - decoder: `BrotliGetErrorCode`, `BrotliErrorString` and
            `BROTLI_ERROR_CODES_LIST`

### Removed
 - decoder: deprecated streaming API (using `BrotliInput`)

### Fixed
 - decoder: possible pointer underflow

### Improved
 - encoder: faster compression


## [0.3.0] - 2015-12-22

### LICENSE
License have been upgraded to more permissive MIT.

### Added
 - CLI: `--window` option
 - `tools/version.h` file
 - decoder: low level streaming API
 - decoder: custom memory manager API

### Deprecated
 - decoder: streaming API using `BrotliInput` struct

### Fixed
 - decoder: processing of uncompressed blocks
 - encoder: possible division by zero

### Improved
 - encoder: faster decompression
 - build: more portable builds for various CPU architectures


## [0.2.0] - 2015-09-01

### Added
 - CLI: `--verbose` and `--repeat` options

### Fixed
 - decoder: processing of uncompressed blocks
 - encoder: block stitching on quality 10 / 11

### Improved
 - build: CI/CD integration
 - build: better test coverage
 - encoder: better compression of UTF-8 content
 - encoder: faster decompression


## [0.1.0] - 2015-08-11

Initial release.
@


