aboutsummaryrefslogtreecommitdiff
path: root/c
AgeCommit message (Collapse)AuthorFilesLines
2023-01-17Internal changeBrotli1-1/+1
PiperOrigin-RevId: 502401179
2023-01-07Fix BrotliEncoderEstimatePeakMemoryUsage (#1002)Aron Parker1-0/+1
Fixes https://github.com/google/brotli/issues/1001
2023-01-04Fix MSVC warning (#998)Eugene Kliuchnikov1-2/+2
Fix #875
2022-12-22Copy ns time stat (#992)Eugene Kliuchnikov1-10/+35
2022-12-16CMake: Allow using BUILD_SHARED_LIBS to choose static/shared libs (#655)Adrian Perez1-3/+3
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.
2022-11-17UpdateEvgenii Kliuchnikov56-537/+427
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)
2022-10-25Fix -Wstrict-prototypes warnings (#985)Keith Smiley2-2/+2
Envoy builds brotli with -Werror, and these strict prototypes are picked up by newer versions of clang.
2021-12-07Merge pull request #929 from jbms/fix-vla-parameterJyrki Alakuijala3-5/+6
Fix -Werror=vla-parameter errors with GCC 11.2.0
2021-11-10Prepare for copybara (#939)Eugene Kliuchnikov25-60/+306
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
2021-09-14Fix -Werror=vla-parameter errors with GCC 11.2.0Jeremy Maitin-Shepard3-5/+6
2021-09-08Strip "./" in includes (#925)Eugene Kliuchnikov55-230/+230
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
2021-08-31Migrate to github actions (#920)Eugene Kliuchnikov1-1/+1
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>
2021-08-18Update (#918)Eugene Kliuchnikov3-5/+6
Prepare to use copybara worklow.
2021-08-04Merge-in SharedDictionary feature (#916)Eugene Kliuchnikov21-38/+2630
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
2021-07-29Update (#914)Eugene Kliuchnikov19-493/+624
* 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
2021-06-23Fix VLA parameter warning (#893)Adrián Herrera Arcila2-4/+7
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>
2021-06-23Fix typo in hash_composite_inc.h (#903)Ikko Ashimine1-1/+1
defered -> deferred
2021-06-23Update (#908)Eugene Kliuchnikov1-20/+30
* re-enable Js build/test * improve decoder performance * rewrite dictionary data in Java/Js to a shorter uncompressed form * improve dictionary generation tool
2021-01-18Update (#852)Eugene Kliuchnikov10-97/+179
* Update * comments and clarifications in block_splitter * power-of-2 aligned allocations for Hasher * refresh decode.js from Java sources * disable JS build
2020-09-21Fix VC C++ 12.0 BROTLI_MSVC_VERSION_CHECK calls (#843)Gabriel1-3/+3
2020-09-07add execution time (#834)Pavel Rosický1-0/+8
2020-09-07Fix clang-10 compilation issue (#839)Dmitry Rozhkov1-1/+1
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.
2020-08-27Re-releasev1.0.9Evgenii Kliuchnikov1-2/+2
2020-08-26New version: 1.0.8 (#827)Eugene Kliuchnikov1-2/+2
2020-08-26Update (#826)Eugene Kliuchnikov19-331/+402
* 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
2020-07-09Fix output parameter type for _BitScanReverse (#819)recompressionEugene Kliuchnikov1-2/+2
Fix #811
2020-07-02Mute strerror/strcpy warnings is MSVC build. (#815)Eugene Kliuchnikov1-0/+5
2020-07-02Add workaround for lying feof. (#814)Eugene Kliuchnikov1-1/+5
Should fix #812
2020-06-30Update platform.h (#813)fisherwky1-1/+1
fix compile error (platform.h:362: error: cast discards qualifiers from pointer target type)
2020-05-15Update (#807)Eugene Kliuchnikov17-12/+17
- 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
2020-03-19Move TZCNT and BSR intrinsics to platform.h, add MSVC versions (#636)Clinton Ingram3-7/+38
2020-03-19Add HAVE_LOG2 build macro (#783)Cristi Vîjdea1-4/+11
* Add HAVE_LOG2 build macro Fixes #781 * Rename macro to BROTLI_HAVE_LOG2 and move comment for visibility
2020-02-14Make types of variable match (#796)shenglei101-2/+2
2019-12-20Add missing "const" to a couple of kConstants (#780)agrieve2-2/+11
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.
2019-07-30Fix include for EMCC build (#765)Eugene Kliuchnikov1-1/+1
2019-07-22More careful sanitizer detection (#764)Eugene Kliuchnikov2-4/+17
2019-07-17Update (#762)Eugene Kliuchnikov1-3/+3
* put LICENSE file into .jar * fix typo * add clarification comment in PY wrapper
2019-05-03Update (#753)Eugene Kliuchnikov14-67/+103
* fix executable mode of decode.js * explain clang-analyser about non-nullability * fix "dead assignment" * rename proguard.cfg -> proguard.pgcfg
2019-04-12Update (#749)Eugene Kliuchnikov34-1963/+3236
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
2018-10-24Verbose CLI + start pulling "Shared-Brotli" (#722)Eugene Kliuchnikov9-24/+127
* 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"
2018-10-23Ramp up version to 1.0.7v1.0.7Eugene Kliuchnikov1-2/+2
2018-10-19Fix #698Eugene Kliuchnikov1-1/+1
2018-10-16Fix `<arm_neon.h>` inclusion guard. (#717)Eugene Kliuchnikov1-4/+4
2018-10-16Fix typo / minor formatting (#716)Eugene Kliuchnikov12-113/+111
* Fix typo / minor formatting / pull computable constant to the place of use.
2018-10-08decode: fix NEON inclusion (#714)Stephen Kyle2-2/+6
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.)
2018-10-02tools/brotli: improve window size autodetect (#710)Alexey Ivanov1-3/+2
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
2018-09-27decode: faster huffman code loading on 32-bit Arm (#703)Stephen Kyle4-84/+139
* 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
2018-09-13Update (#706)Eugene Kliuchnikov3-7/+36
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
2018-07-25platform: fix unaligned 64-bit accesses on AArch32 (#702)Stephen Kyle1-10/+31
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.
2018-07-24Revert "platform: fix unaligned 64-bit accesses on AArch32 (#699)" (#701)Eugene Kliuchnikov1-35/+10
This reverts commit 6d027d1648d957c5fee92e535a66420413fd6537.