|
b2c86d18
|
2023-01-30T18:34:24
|
|
Decoder API: added API to attach metadata blocks callbacks
PiperOrigin-RevId: 505734532
|
|
04f294b1
|
2023-01-29T14:16:20
|
|
Fix emitting 1-byte long metadata block
PiperOrigin-RevId: 505484299
|
|
1e61e972
|
2023-01-27T10:16:21
|
|
speed up encoding by ~5 %
PiperOrigin-RevId: 505061835
|
|
36533a86
|
2023-01-16T18:04:35
|
|
Internal change
PiperOrigin-RevId: 502401179
|
|
71fe6cac
|
2023-01-07T22:01:47
|
|
Fix BrotliEncoderEstimatePeakMemoryUsage (#1002)
Fixes https://github.com/google/brotli/issues/1001
|
|
0ea46038
|
2023-01-04T12:10:29
|
|
Fix MSVC warning (#998)
Fix #875
|
|
509d4419
|
2022-12-22T16:05:25
|
|
Copy ns time stat (#992)
|
|
641bec0e
|
2022-12-16T12:42:42
|
|
CMake: Allow using BUILD_SHARED_LIBS to choose static/shared libs (#655)
By convention projects using CMake which can build either static or
shared libraries use a BUILD_SHARED_LIBS flag to allow selecting between
both: the add_library() command automatically switches between both using
this variable when the library kind is not passed to add_library(). It
is also usual to expose the BUILD_SHARED_LIBS as an user-facing setting
with the option() command.
This way, the following will both work as expected:
% cmake -DBUILD_SHARED_LIBS=OFF ...
% cmake -DBUILS_SHARED_LIBS=ON ...
This is helpful for distributions which need (or want) to build only
static libraries.
|
|
a8f5813b
|
2022-11-17T13:03:09
|
|
Update
Documentation:
- add note that brotli is a "stream" format, not an archive-like
- regenerate .1 with Pandoc
Build:
- drop legacy "BROTLI_BUILD_PORTABLE" option
- drop "BROTLI_SANITIZED" definition
Code:
- c: comb includes
- c/enc: extract encoder state into separate header
- c/enc: drop designated q10 codepath
- c/enc: dealing better with flushing of empty stream
- fix MSVC compilation
API:
- py: use library version instead of one in version.h
- c: add plugable API to report consumed input / produced output
- c/java: support "lean" prepared dictionaries (without copy of source)
|
|
6d03dfbe
|
2022-10-25T12:29:58
|
|
Fix -Wstrict-prototypes warnings (#985)
Envoy builds brotli with -Werror, and these strict prototypes are picked
up by newer versions of clang.
|
|
4ec67035
|
2021-12-07T01:47:07
|
|
Merge pull request #929 from jbms/fix-vla-parameter
Fix -Werror=vla-parameter errors with GCC 11.2.0
|
|
8376f72e
|
2021-11-10T10:34:39
|
|
Prepare for copybara (#939)
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
|
|
27dd7265
|
2021-09-14T12:27:45
|
|
Fix -Werror=vla-parameter errors with GCC 11.2.0
|
|
62662f87
|
2021-09-08T09:18:45
|
|
Strip "./" in includes (#925)
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
|
|
0e42caf3
|
2021-08-31T14:07:17
|
|
Migrate to github actions (#920)
Not all combinations are migrated to the initial configuration; corresponding TODOs added.
Drive-by: additional combinations uncovered minor portability problems -> fixed
Drive-by: remove no-longer used "script" files.
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
|
|
68f1b90a
|
2021-08-18T19:15:07
|
|
Update (#918)
Prepare to use copybara worklow.
|
|
19d86fb9
|
2021-08-04T14:42:02
|
|
Merge-in SharedDictionary feature (#916)
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
|
|
630b5084
|
2021-07-29T22:29:43
|
|
Update (#914)
* slimmer stack frames in encoder
* fix MSAN problem in hasher_composite
(not dangerous, only in large_window mode)
* fix JNI decoder wrapper - power-of-two payloads fail to decode sometimes
* reformat polyfil.js and decode_test.js
|
|
0a3944c8
|
2021-06-23T08:53:59
|
|
Fix VLA parameter warning (#893)
Make VLA buffer types consistent in declarations and definitions.
Resolves build crash when using -Werror due to "vla-parameter" warning.
Signed-off-by: Adrian Herrera <adr.her.arc.95@gmail.com>
|
|
bdcfb123
|
2021-06-23T16:42:28
|
|
Fix typo in hash_composite_inc.h (#903)
defered -> deferred
|
|
f8c67177
|
2021-06-23T09:40:57
|
|
Update (#908)
* re-enable Js build/test
* improve decoder performance
* rewrite dictionary data in Java/Js to a shorter uncompressed form
* improve dictionary generation tool
|
|
5692e422
|
2021-01-18T10:56:39
|
|
Update (#852)
* Update
* comments and clarifications in block_splitter
* power-of-2 aligned allocations for Hasher
* refresh decode.js from Java sources
* disable JS build
|
|
97006561
|
2020-09-21T13:22:56
|
|
Fix VC C++ 12.0 BROTLI_MSVC_VERSION_CHECK calls (#843)
|
|
90fd2b60
|
2020-09-07T10:53:03
|
|
add execution time (#834)
|
|
7e8e207c
|
2020-09-07T10:40:03
|
|
Fix clang-10 compilation issue (#839)
clang-10 throws the following error:
In file included from external/org_brotli/c/enc/bit_cost.c:9:
external/org_brotli/c/enc/./bit_cost.h:48:16: error: implicit conversion
from 'size_t' (aka 'unsigned long') to 'double' may lose precision
[-Werror,-Wimplicit-int-float-conversion]
if (retval < sum) {
~ ^~~
1 error generated.
Make the conversion explicit.
|
|
e61745a6
|
2020-08-27T16:12:55
|
|
Re-release
|
|
665e81dc
|
2020-08-26T14:36:02
|
|
New version: 1.0.8 (#827)
|
|
223d80cf
|
2020-08-26T12:32:27
|
|
Update (#826)
* IMPORTANT: decoder: fix potential overflow when input chunk is >2GiB
* simplify max Huffman table size calculation
* eliminate symbol duplicates (static arrays in .h files)
* minor combing in research/ code
|
|
0c5603e0
|
2020-07-09T16:40:01
|
|
Fix output parameter type for _BitScanReverse (#819)
Fix #811
|
|
fc823290
|
2020-07-02T19:45:57
|
|
Mute strerror/strcpy warnings is MSVC build. (#815)
|
|
55193526
|
2020-07-02T17:57:40
|
|
Add workaround for lying feof. (#814)
Should fix #812
|
|
d2ea1982
|
2020-06-30T17:23:07
|
|
Update platform.h (#813)
fix compile error (platform.h:362: error: cast discards qualifiers from pointer target type)
|
|
7f740f13
|
2020-05-15T11:06:21
|
|
Update (#807)
- fix formatting
- fix type conversion
- fix no-op arithmetic with null-pointer
- improve performance of hash_longest_match64
- go: detect read after close
- java decoder: support compound dictionary
- remove executable flag on non-scripts
|
|
924b2b2b
|
2020-03-19T03:57:56
|
|
Move TZCNT and BSR intrinsics to platform.h, add MSVC versions (#636)
|
|
f503cb70
|
2020-03-19T11:46:52
|
|
Add HAVE_LOG2 build macro (#783)
* Add HAVE_LOG2 build macro
Fixes #781
* Rename macro to BROTLI_HAVE_LOG2 and move comment for visibility
|
|
666c3280
|
2020-02-14T17:40:02
|
|
Make types of variable match (#796)
|
|
4b5771be
|
2019-12-19T18:15:58
|
|
Add missing "const" to a couple of kConstants (#780)
These showed up in a Chromium audit:
https://bugs.chromium.org/p/chromium/issues/detail?id=747064#c8
Although already effectively const, adding "const" causes the symbols to
be moved into the read-only section of the binary.
|
|
3d176718
|
2019-07-30T10:01:21
|
|
Fix include for EMCC build (#765)
|
|
f1124c85
|
2019-07-22T14:29:51
|
|
More careful sanitizer detection (#764)
|
|
c8b37e8f
|
2019-07-17T14:39:56
|
|
Update (#762)
* put LICENSE file into .jar
* fix typo
* add clarification comment in PY wrapper
|
|
78e7bbc3
|
2019-05-03T11:51:11
|
|
Update (#753)
* fix executable mode of decode.js
* explain clang-analyser about non-nullability
* fix "dead assignment"
* rename proguard.cfg -> proguard.pgcfg
|
|
4b2b2d4f
|
2019-04-12T13:57:42
|
|
Update (#749)
Update:
* Bazel: fix MSVC configuration
* C: common: extended documentation and helpers around distance codes
* C: common: enable BROTLI_DCHECK in "debug" builds
* C: common: fix implicit trailing zero in `kPrefixSuffix`
* C: dec: fix possible bit reader discharge for "large-window" mode
* C: dec: simplify distance decoding via lookup table
* C: dec: reuse decoder state members memory via union with lookup table
* C: dec: add decoder state diagram
* C: enc: clarify access to static dictionary
* C: enc: improve static dictionary hash
* C: enc: add "stream offset" parameter for parallel encoding
* C: enc: reorganize hasher; now Q2-Q3 require exactly 256KiB
to avoid global TCMalloc lock
* C: enc: fix rare access to uninitialized data in ring-buffer
* C: enc: reorganize logging / checks in `write_bits.h`
* Java: dec: add "large-window" support
* Java: dec: improve speed
* Java: dec: debug and 32-bit mode are now activated via system properties
* Java: dec: demystify some state variables (use better names)
* Dictionary generator: add single input mode
* Java: dec: modernize tests
* Bazel: js: pick working commit for closure rules
|
|
d0ffe60b
|
2018-10-24T16:06:09
|
|
Verbose CLI + start pulling "Shared-Brotli" (#722)
* Verbose CLI + start pulling "Shared-Brotli"
* vesbose CLI output; fix #666
* pull `SHIFT` transforms; currently this is semantically dead code;
later it will be used by "Shared-Brotli"
|
|
d6d98957
|
2018-10-23T12:24:40
|
|
Ramp up version to 1.0.7
|
|
a1e44975
|
2018-10-19T17:01:54
|
|
Fix #698
|
|
ce8951c3
|
2018-10-16T17:19:37
|
|
Fix `<arm_neon.h>` inclusion guard. (#717)
|
|
f7cbc97c
|
2018-10-16T16:46:54
|
|
Fix typo / minor formatting (#716)
* Fix typo / minor formatting / pull computable constant to the place of use.
|
|
cc7a74f1
|
2018-10-08T14:40:11
|
|
decode: fix NEON inclusion (#714)
The macro that checks for NEON support should be __ARM_NEON, not
__ARM_NEON__. [1]
AArch64 compilers define __ARM_NEON but not __ARM_NEON__.
AArch32 compilers currently seem to define both, but could be within their
rights to drop __ARM_NEON__ in future versions.
This change moves the check into the common/platform.h file, checks for
both forms, and sets BROTLI_TARGET_NEON if NEON support is available.
[1] Section 6.5.4 of the ARM C Language Extensions.
(At the time of writing, the latest version was Release 2.1.)
|
|
c94c6f80
|
2018-10-02T07:28:37
|
|
tools/brotli: improve window size autodetect (#710)
Window size is defined as:
`(1 << BROTLI_PARAM_LGWIN) - 16`
in `c/include/brotli/encode.h`
Therefore we should probably take these 16 bytes into account.
Done basic manual testing:
$ python3 -c 'print ("A"*2046)' > t
$ bazel run -- //:brotli -w 0 -f -o $(realpath t).br $(realpath ./t)
$ python3 research/brotlidump.py t.br |& fgrep WSIZE
0000 c1 1000001 WSIZE windowsize=(1<<12)-16=4080
New version properly detects window size of `4080`, while previous one used `2032`:
$ python3 research/brotlidump.py t.br |& fgrep WSIZE
0000 b1 0110001 WSIZE windowsize=(1<<11)-16=2032
|
|
9402ac5c
|
2018-09-27T12:15:46
|
|
decode: faster huffman code loading on 32-bit Arm (#703)
* platform: add macro for using the 'aligned' attribute
* decode: add accessor macros for HuffmanCode fields
Adds a constructor function for building HuffmanCode values
so they can be accessed quickly on different architectures.
Also adds macros for marking a HuffmanCode table pointer
that can be accessed quickly (BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD),
adjusting the index into that table (BROTLI_HC_ADJUST_TABLE_INDEX),
and getting the .bits or .value fields out of the table at the
current index (BROTLI_HC_GET_BITS/VALUE).
For example, assuming |table| contains a HuffmanCode pointer:
BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(table);
BROTLI_HC_ADJUST_TABLE_INDEX(table, index_into_table);
*bits = BROTLI_HC_GET_BITS(table);
*value = BROTLI_HC_GET_VALUE(table);
BROTLI_HC_ADJUST_TABLE_INDEX(table, offset);
*bits2 = BROTLI_HC_GET_BITS(table);
*value2 = BROTLI_HC_GET_VALUE(table);
All uses of the HuffmanCode have been updated appropriately.
* decode: add alternative accessors for HuffmanCode on Arm AArch32
|
|
2216a0dd
|
2018-09-13T08:09:32
|
|
Update (#706)
Update
* add ASAN/MSAN unaligned read specializations
* add "brotli" prefix to u_uint64 type
* increment version to 1.0.06
* fix CoverityScan "unused assignment" warning
* fix JDK 8<->9 incompatibility
* add encoder optimization for empty input
* regenerate JS decoder
* unbreak Travis builds
|
|
d4cd6cdf
|
2018-07-25T10:43:06
|
|
platform: fix unaligned 64-bit accesses on AArch32 (#702)
Ensures that Aarch32 Arm builds with an Armv8 compiler do not set
BROTLI_64_BITS.
This scenario is possible with ChromeOS builds, as they may use a
toolchain with the target armv7-cros-gnueabi, but with -march=armv8.
This will set __ARM_ARCH to 8 (defining BROTLI_TARGET_ARMV8), but will
also set __ARM_32BIT_STATE and not __ARM_64BIT_STATE. Without this,
illegal 64-bit non-word-aligned reads (LDRD) may be emitted.
Also fix unaligned 64-bit reads on AArch32 - STRD was still possible to
emit.
|
|
8a073bd9
|
2018-07-24T17:32:13
|
|
Revert "platform: fix unaligned 64-bit accesses on AArch32 (#699)" (#701)
This reverts commit 6d027d1648d957c5fee92e535a66420413fd6537.
|
|
6d027d16
|
2018-07-24T16:29:50
|
|
platform: fix unaligned 64-bit accesses on AArch32 (#699)
Ensures that Aarch32 Arm builds with an Armv8 compiler do not set
BROTLI_64_BITS.
This scenario is possible with ChromeOS builds, as they may use a
toolchain with the target armv7-cros-gnueabi, but with -march=armv8.
This will set __ARM_ARCH to 8 (defining BROTLI_TARGET_ARMV8), but will
also set __ARM_32BIT_STATE and not __ARM_64BIT_STATE. Without this,
illegal 64-bit non-word-aligned reads (LDRD) may be emitted.
Also fix unaligned 64-bit reads on AArch32 - STRD was still possible to
emit.
|
|
b601fe81
|
2018-06-27T17:03:45
|
|
Ramp up version to 1.0.5
|
|
eb12ec04
|
2018-06-20T15:14:10
|
|
Update (#688)
* add rolling-composite-hasher for large-window mode
* make API methods explicitly public
|
|
7505290e
|
2018-06-18T14:39:38
|
|
Convert fuzzer to C99. (#686)
|
|
09cd3e87
|
2018-06-11T15:17:26
|
|
Update
|
|
8544ae85
|
2018-06-09T11:17:13
|
|
Update (#680)
* fix MSVC warnings
* cleanups
|
|
1e7ea1d8
|
2018-06-04T17:53:16
|
|
Inverse bazel project/workspace tree (#677)
* Inverse bazel workspace tree.
Now each subproject directly depends on root (c) project.
This helps to mitigate Bazel bug bazelbuild/bazel#2391; short summary:
Bazel does not work if referenced subproject `WORKSPACE` uses any
repositories that embedding project does not.
Bright side: building C project is much faster;
no need to download closure, go and JDK...
|
|
f9b8c026
|
2018-05-22T14:35:04
|
|
Add RISC-V 64-bit (riscv64) platform configuration (#669)
Signed-off-by: David Abdurachmanov <david.abdurachmanov@gmail.com>
|
|
48a25b3f
|
2018-05-18T22:07:52
|
|
Fix #671 (#672)
|
|
f5ed35d0
|
2018-05-03T11:16:21
|
|
Update (#664)
* Update
* fix ifdef style
* get back to fine-compiler-version-based-macros (use Hedley)
* fix q=0 histogram collection for very long copy/insert commands
|
|
60003961
|
2018-04-20T14:10:55
|
|
Remove unprefixed macros from public headers (#662)
|
|
68db5c02
|
2018-04-13T11:44:34
|
|
Update (#660)
* Update
* improve q=1 compression on small files
* fix "left shift before promotion"
* fix osx Travis builds
|
|
c6333e1e
|
2018-03-29T10:37:07
|
|
Fix MSVC compilation (#657)
* tell bazel not to pass strict options to a fancy compiler
* fix signed-unsigned comparison warning found by MSVC
|
|
0f3c84e7
|
2018-03-27T22:29:22
|
|
Update (#656)
* proper fix for the "fall through" warning"
* automatic NDIRECT/NPOSTFIX tuning (better compression)
* fix unaligned access for `aarch64`-cross-`armhf` build
* fix `aarch64` detection (10% decoder speedup)
* expose `large_window` CLI option
* make default window size 16MiB
* ramp up version to 1.0.4
|
|
631fe194
|
2018-03-20T17:37:41
|
|
Update (#651)
* fix `bazel` build (ignore switch case fall-through)
* add `NPOSTFIX` / `NDIRECT` encoder parameters
* fix source file lists (add `params.h`)
* fix bug in `durchschlag`
* print clarifying messages wheb CLI argument parsing fails
|
|
533843e3
|
2018-03-02T15:49:58
|
|
Update (#643)
Update
* make the zopflification aware of `NDIRECT`, `NPOSTFIX`
(better compression in `font` mode)
* add small and simple decoder tool
* fix typo
* Java: wrapper: make decoder channel more async-friendly
Ramp up version to 1.0.3 / 1.0.3
|
|
35e69fc7
|
2018-02-26T09:04:36
|
|
New feature: "Large Window Brotli" (#640)
* New feature: "Large Window Brotli"
By setting special encoder/decoder flag it is now possible to extend
LZ-window up to 30 bits; though produced stream will not be RFC7932
compliant.
Added new dictionary generator - "DSH". It combines speed of "Sieve"
and quality of "DM". Plus utilities to prepare train corpora
(remove unique strings).
Improved compression ratio: now two sub-blocks could be stitched:
the last copy command could be extended to span the next sub-block.
Fixed compression ineffectiveness caused by floating numbers rounding and
wrong cost heuristic.
Other C changes:
- combined / moved `context.h` to `common`
- moved transforms to `common`
- unified some aspects of code formatting
- added an abstraction for encoder (static) dictionary
- moved default allocator/deallocator functions to `common`
brotli CLI:
- window size is auto-adjusted if not specified explicitly
Java:
- added "eager" decoding both to JNI wrapper and pure decoder
- huge speed-up of `DictionaryData` initialization
* Add dictionaryless compressed dictionary
* Fix `sources.lst`
* Fix `sources.lst` and add a note that `libtool` is also required.
* Update setup.py
* Fix `EagerStreamTest`
* Fix BUILD file
* Add missing `libdivsufsort` dependency
* Fix "unused parameter" warning.
|
|
da254cff
|
2017-12-12T14:33:12
|
|
Update (#630)
* merge {dec|enc}/port.h into common/platform.h
* fix one-shot q=10 1-byte input compression
* fix some unprefixed definitions
* make hashers host-endianness-independent
* extract enc/params.h from enc/quality.h
* fix API documentation / typos
* improve `BrotliEncoderMaxCompressedSize`
|
|
0ad94eed
|
2017-11-28T15:37:28
|
|
Update (#620)
* add autotools build
* separate semantic and ABI version
* extract sources.lst (used by CMake and Automake)
* share pkgconfig templates (used by CMake and Automake)
* decoder: always set `total_out`
* encoder: fix `BROTLI_ENSURE_CAPACITY` macro (no-op after preprocessor)
* decoder/encoder: refine `free_func` contract
|
|
3e58ea5f
|
2017-10-13T14:50:51
|
|
Update (#617)
* remove `const` on `BrotliDictionary` members
* extend `ZofliNode` distance range to 128MiB
* add missing `port.h` include to `quality.h`
* fix typo in encoder API-doc
* regenerate `decode.min.js`
|
|
a0c7dafe
|
2017-10-10T11:24:13
|
|
Fix permissions of various files in project (#613)
Move from 755 to 644.
|
|
4f8cd4c0
|
2017-09-26T13:49:30
|
|
Fix fuzzer test script and add it to travis matrix (#606)
|
|
5b476999
|
2017-09-22T14:05:06
|
|
Ramp up to version to 1.0.1
|
|
c6056359
|
2017-09-20T15:02:01
|
|
Fix API documentation + theoretical NPEs (#602)
|
|
37fb83ec
|
2017-09-19T15:57:15
|
|
Update: (#600)
* encoder: relax backward references candidates asserts
* encoder: make RNG more platform-independent
* encoder: remove "unused" param (context mode)
* CLI: improve first-encounter experience
* Java: update SynthTest
* Java: refine proguard config
* Java/JNI: fix one-shot compression workflow
|
|
d7bce1e0
|
2017-09-07T20:27:49
|
|
Update (#593)
* Update:
* fix CLI error messages
* fix CLI console IO on Windows
|
|
a629289e
|
2017-08-28T11:31:29
|
|
Update (#590)
* add transpiled JS decoder
* make PY wrapper accept memview
* fix dictionary generator
* speedup compression of RLEish data
|
|
65354354
|
2017-08-24T13:29:48
|
|
Update (#589)
* cleanup
* fix `unbrotli` CLI
* Java retouch for faster JS decoder
|
|
d63e8f75
|
2017-08-04T10:02:56
|
|
Update API, and more (#581)
Update API, and more:
* remove "custom dictionary" support
* c/encoder: fix #580: big-endian build
* Java: reduce jar size
* Java: speedup decoding
* Java: add 32-bit CPU support
* Java: make source code JS transpiler-ready
|
|
52441069
|
2017-07-21T10:07:24
|
|
Update (#574)
* Update
* decoder: better behavior after failure
* encoder: replace "len_x_code" with delta
* research: add experimental dictionary generator
* python: test combing
|
|
172a378d
|
2017-07-11T18:22:44
|
|
add BROTLI_DEC_API to methods (#572)
|
|
1becbbf2
|
2017-06-30T13:09:50
|
|
Update (#569)
* add misssing fclose in `brotli.c`
* add basic tests for python `Decompressor` type
* minor lint fixes in `_brotli.cc`
|
|
00cacfdf
|
2017-06-17T13:22:07
|
|
Fix compilation issue with BROTLI_ALLOC macro using GCC 7 (-Wint-in-bool-context) (#562)
|
|
05d5f3d7
|
2017-06-13T12:52:56
|
|
Update (#560)
Update:
* add decoder API to avoid ringbuffer reallocation
* fix MSVC warnings
* remove dead code
|
|
03739d2b
|
2017-05-29T17:55:14
|
|
Update (#555)
Update:
* new CLI; bro -> brotli; + man page
* JNI wrappers preparation (for bazel build)
* add raw binary dictionary representation `dictionary.bin`
* add ability to side-load brotli RFC dictionary
* decoder persists last error now
* fix `BrotliDecoderDecompress` documentation
* go reader don't block until necessary
* more consistent bazel target names
* Java dictionary data compiled footprint reduced
* Java tests refactoring
|
|
6ece1d87
|
2017-04-23T14:07:08
|
|
Move files & update paths (#541)
* Move files & update paths
* Rename build to scripts.
* Fix paths
* Fix script.
|