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.
- python: added
Decompressor::can_accept_more_datamethod and optionaloutput_buffer_limitargumentDecompressor::process; that allows mitigation of unexpectedly large output; reported by Charles Chan (https://github.com/charleswhchan)
- decoder / encoder: added static initialization to reduce binary size
- python: allow limiting decoder output (see SECURITY section)
- CLI:
brcatalias; allow decoding concatenated brotli streams - kt: pure Kotlin decoder
- cgo: support "raw" dictionaries
- build: Bazel modules
- java: dropped
finalize()for native entities
- java: in
compresspass correct length to native encoder
- 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
- decoder / encoder: static tables use "small" model (allows 2GiB+ binaries)
- decoder:
BrotliDecoderAttachDictionary - decoder:
BrotliDecoderOnFinishcallback behindBROTLI_REPORTING - decoder:
BrotliDecoderSetMetadataCallbacks - encoder:
BrotliEncoderPrepareDictionary,BrotliEncoderDestroyPreparedDictionary,BrotliEncoderAttachPreparedDictionary - decoder:
BrotliEncoderOnFinishcallback behindBROTLI_REPORTING - common:
BrotliSharedDictionaryCreateInstance,BrotliSharedDictionaryDestroyInstance,BrotliSharedDictionaryAttach - CLI:
--dictionaryoption - java: encoder wrapper:
Parameters.mode - java:
Brotli{Input|Output}Stream.attachDictionary - java: wrapper: partial byte array input
- typescript: decoder (transpiled from Java)
- build:
BROTLI_BUILD_PORTABLEoption
- java: JNI decoder failed sometimes on power of 2 payloads
- java / js: smaller decoder footprint
- decoder: faster decoding
- encoder: faster encoding
- encoder: smaller stack frames
Re-release of 1.0.8.
- CVE-2020-8927: potential overflow when input chunk is >2GiB
- encoder:
BROTLI_PARAM_STREAM_OFFSET
- 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
- decoder: faster decoding on ARM CPU
- build: AutoMake and CMake build
- java: JDK 8<->9 incompatibility
- scripts: extraction of static dictionary from RFC
- encoder: better compression at quality 1
- encoder: better compression with "large window"
- encoder:
BROTLI_PARAM_NPOSTFIX,BROTLI_PARAM_NDIRECT - CLI:
--large_windowoption
- encoder: better compression
- decoder:
BROTLI_DECODER_PARAM_LARGE_WINDOWenum - encoder:
BROTLI_PARAM_LARGE_WINDOWenum - java:
BrotliInputStream.setEager
- build: AutoMake build in some environments
- encoder: fix one-shot q=10 1-byte input compression
- encoder: better font compression
- build: AutoMake
- research: better dictionary generators
- clarifications in
README.md
- decoder:
BrotliDecoderSetParameter - csharp: decoder (transpiled from Java)
- java: JNI wrappers
- javascript: decoder (transpiled from Java)
- python: streaming decompression
- research: dictionary generator
- CLI: rename
brotobrotli
- decoder:
BrotliDecoderSetCustomDictionary - encoder:
BrotliEncoderSetCustomDictionary
- java: faster decoding
- encoder: faster compression
- CLI: `--no-copy-stat option
- java: pure java decoder
- build: fuzzers
- research:
brotlidumptool to explore brotli streams - go: wrapper
- decoder: API with plain
Brotliprefix
- encoder:
BrotliEncoderInputBlockSize,BrotliEncoderCopyInputToRingBuffer,BrotliEncoderWriteData
- encoder: faster compression
- encoder: denser compression
- decoder: faster decompression
- python: release GIL
- python: use zero-copy API
- common:
BROTLI_BOOL,BROTLI_TRUE,BROTLI_FALSE - decoder: API with
BrotliDecoderprefix instead of plainBrotli - build: Bazel, CMake
- decoder: API with plain
Brotliprefix
- boolean argument / result types are re-branded as
BROTLI_BOOL
- build: reduced amount of warnings in various build environments
- encoder: faster compression
- encoder: lower memory usage
- common: library has been assembled from shared parts of decoder and encoder
- encoder: C API
- encoder: C++ API
- encoder: faster compression modes (quality 0 and 1)
- decoder:
BrotliGetErrorCode,BrotliErrorStringandBROTLI_ERROR_CODES_LIST
- decoder: deprecated streaming API (using
BrotliInput)
- decoder: possible pointer underflow
- encoder: faster compression
License have been upgraded to more permissive MIT.
- CLI:
--windowoption tools/version.hfile- decoder: low level streaming API
- decoder: custom memory manager API
- decoder: streaming API using
BrotliInputstruct
- decoder: processing of uncompressed blocks
- encoder: possible division by zero
- encoder: faster decompression
- build: more portable builds for various CPU architectures
- CLI:
--verboseand--repeatoptions
- decoder: processing of uncompressed blocks
- encoder: block stitching on quality 10 / 11
- build: CI/CD integration
- build: better test coverage
- encoder: better compression of UTF-8 content
- encoder: faster decompression
Initial release.