|
66495233
|
2024-10-24T13:36:16
|
|
Make Brotli decompression faster
Makes it ~8% faster on my skylake desktop.
PiperOrigin-RevId: 689499172
|
|
350100a5
|
2024-09-19T09:01:50
|
|
Add BrotliCopyPreloadedSymbols function.
Add a single trivial use to avoid complier warning.
PiperOrigin-RevId: 676435629
|
|
39bcecf4
|
2024-07-15T11:26:47
|
|
Fix hasher resolution for long windows.
PiperOrigin-RevId: 652545288
|
|
a528bce9
|
2024-05-31T09:10:52
|
|
Hoist the static bounds check out of the combined if check.
PiperOrigin-RevId: 639054702
|
|
fe754f34
|
2024-05-30T09:50:58
|
|
Use a hash table header and SIMD to speed up hash table operations (similar to [Swiss Tables](https://abseil.io/about/design/swisstables)).
PiperOrigin-RevId: 638686412
|
|
04388304
|
2024-05-09T12:41:57
|
|
Use a hash table header and SIMD to speed up hash table operations (similar to [Swiss Tables](https://abseil.io/about/design/swisstables)).
PiperOrigin-RevId: 632238409
|
|
bb809ac9
|
2024-05-08T17:59:09
|
|
Use a hash table header and SIMD to speed up hash table operations (similar to [Swiss Tables](https://abseil.io/about/design/swisstables)).
PiperOrigin-RevId: 631982664
|
|
d01a4caa
|
2024-04-22T02:06:42
|
|
Internal change
PiperOrigin-RevId: 626960053
|
|
1b3a5ccb
|
2024-04-18T19:59:28
|
|
Prefetch the backreference hashtable bucket.
Place the prefetch before the last distance checks, to give the prefetch enough time to work.
PiperOrigin-RevId: 626228820
|
|
443af10a
|
2024-04-17T04:09:20
|
|
add (assumption) check
PiperOrigin-RevId: 625632989
|
|
c1c76e99
|
2024-04-14T06:35:19
|
|
Don't check `cur_ix_masked` against `ring_buffer_mask`.
`cur_ix_masked` isn't changing from iteration to iteration, and `max_length` ensures we never find a match long enough to walk off the ring buffer.
PiperOrigin-RevId: 624701948
|
|
709c4672
|
2024-04-12T09:15:22
|
|
Fix minor syntax issues.
Missing semicolons.
Move checks below variable declarations for c89.
PiperOrigin-RevId: 624199887
|
|
a76d96e7
|
2024-04-12T06:50:04
|
|
Don't check `cur_ix_masked` against `ring_buffer_mask`.
`cur_ix_masked` isn't changing from iteration to iteration, and `max_length` ensures we never find a match long enough to walk off the ring buffer.
PiperOrigin-RevId: 624162764
|
|
a813a6a1
|
2024-04-11T11:23:08
|
|
Update the `H5` hasher to use the `H6`'s `FN(STORE)`.
PiperOrigin-RevId: 623885589
|
|
f964a1e8
|
2024-04-09T00:18:20
|
|
Internal change
PiperOrigin-RevId: 623073126
|
|
cdbe7fc7
|
2024-04-08T04:29:59
|
|
Internal change
PiperOrigin-RevId: 622802698
|
|
9351fa7f
|
2024-03-20T10:29:20
|
|
Compare 4 bytes when checking if a longer match is possible.
Loading and comparing 4 bytes is ~as fast as 1 byte, but allows us to avoid more full match length calculation.
PiperOrigin-RevId: 617556847
|
|
9717649c
|
2024-03-13T02:47:07
|
|
Use BROTLI_MAX_STATIC_CONTEXTS instead of magic constants in encode.c
PiperOrigin-RevId: 615341475
|
|
d5e697b3
|
2024-01-22T07:24:07
|
|
remove dependency on os-specific defines
PiperOrigin-RevId: 600449944
|
|
3396c67f
|
2024-01-15T12:49:21
|
|
add brcat alias + flag to decompress concatenated streams
PiperOrigin-RevId: 598652401
|
|
033940f9
|
2024-01-11T02:03:59
|
|
add comment (fingerprint) CLI feature
PiperOrigin-RevId: 597489910
|
|
6b6adb7a
|
2024-01-03T02:00:39
|
|
fix build for Microsoft-designed ARM64 ABI
PiperOrigin-RevId: 595334901
|
|
9b83be23
|
2023-10-26T02:02:51
|
|
fix wording
PiperOrigin-RevId: 576788685
|
|
e7313b0c
|
2023-08-28T07:20:13
|
|
tune memory manager for BROTLI_EXPERIMENTAL
PiperOrigin-RevId: 560703386
|
|
c1bd1968
|
2023-08-25T01:06:33
|
|
comb HAVE_UTIMENSAT definition
PiperOrigin-RevId: 560011681
|
|
2a5a088b
|
2023-08-21T06:35:47
|
|
more tuning for BROTLI_EXPERIMENTAL + clean-on-oom
PiperOrigin-RevId: 558771745
|
|
feb6d8bc
|
2023-08-21T03:34:13
|
|
prepare for 1.1.0rc
PiperOrigin-RevId: 558736892
|
|
3ebb2d30
|
2023-08-18T02:55:01
|
|
Move serialized dictionary feature behind the flag.
BROTLI_SHARED_DICTIONARY_SERIALIZED enum value is a part of API,
but it should not be used (will cause failures).
Changing how serialized dictionaries work won't be considered as an API change, until this feature is enabled.
Enabling this feature in the future will be considered as a "compatible" change.
PiperOrigin-RevId: 558091676
|
|
0f2157cc
|
2023-08-16T08:54:37
|
|
Update comment; fixes #1061
PiperOrigin-RevId: 557501089
|
|
8c792304
|
2023-08-09T02:48:12
|
|
reduce amount of padding in decoder structs
PiperOrigin-RevId: 555101669
|
|
a5600898
|
2023-08-03T04:58:16
|
|
speedup q5-9 on large files
PiperOrigin-RevId: 553440457
|
|
117b68b7
|
2023-08-02T03:04:52
|
|
speedup encoder on q5-9 / 1MB+ files
PiperOrigin-RevId: 553087469
|
|
d639a81d
|
2023-07-31T07:18:48
|
|
add option to delete files that are not "compressed"
PiperOrigin-RevId: 552472135
|
|
27a9a809
|
2023-07-30T03:44:38
|
|
simplify CMake build
PiperOrigin-RevId: 552238545
|
|
779a49bf
|
2023-07-20T04:18:18
|
|
bake in runtime constant
PiperOrigin-RevId: 549590409
|
|
c3dc7d03
|
2023-07-17T05:38:37
|
|
more careful bit-reader interruption
PiperOrigin-RevId: 548661043
|
|
2d0947f1
|
2023-07-10T06:00:17
|
|
insert missing fuzz/WORKSPACE content
PiperOrigin-RevId: 546848285
|
|
2e6164d7
|
2023-07-10T11:40:07
|
|
verbose error report in CLI
PiperOrigin-RevId: 546833411
|
|
70e7b1ae
|
2023-07-06T11:56:38
|
|
simplify building of fuzzer
PiperOrigin-RevId: 545950923
|
|
6ee96e29
|
2023-07-03T19:13:24
|
|
Internal changes
PiperOrigin-RevId: 545262005
|
|
e252f1fc
|
2023-05-04T15:09:05
|
|
0.5-2.9% decoder speedup
PiperOrigin-RevId: 529412095
|
|
e1f5788f
|
2023-04-14T15:46:39
|
|
Fix internal buffer reset
PiperOrigin-RevId: 524301253
|
|
e5dba91c
|
2023-03-28T16:17:13
|
|
Add BROTLI_ENABLE_DUMP build option
PiperOrigin-RevId: 520047051
|
|
f29c44ed
|
2023-03-15T13:29:35
|
|
Avoid nullptr with zero offset
PiperOrigin-RevId: 516808122
|
|
cb1ced3a
|
2023-03-15T08:15:19
|
|
speedup decoder by 0.2%-1.2%
PiperOrigin-RevId: 516754779
|
|
57c36a4f
|
2023-03-02T14:49:53
|
|
1.2-2.3% decoder speedup
PiperOrigin-RevId: 513524040
|
|
6db17c87
|
2023-03-01T16:51:03
|
|
0.4-1.5% decoder speedup
PiperOrigin-RevId: 513248503
|
|
bfa15d40
|
2023-06-22T10:27:21
|
|
fuzz: make target resist allocation failures (#1023)
So that fuzzing can go on with simulated allocation failures
|
|
1d8452b7
|
2023-06-20T15:44:23
|
|
Add loongarch64 support (#1022)
|
|
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
|