Changelog

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

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

[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.