c/enc/hash.h


Log

Author Commit Date CI Message
Evgenii Kliuchnikov 8a7201c6 2025-08-05T02:49:08 fix some includes PiperOrigin-RevId: 791124445
Evgenii Kliuchnikov 12203bb5 2025-08-04T23:29:38 Extract Hash14/15 to hash_base PiperOrigin-RevId: 791061237
Andreas Deininger 93d0ac53 2025-05-27T09:47:01 Fix typos (#1242) Co-authored-by: Eugene Kliuchnikov <eustas.ru@gmail.com>
Jeremy Koritzinsky aa548219 2024-08-27T14:25:33 Fix C4224 warnings when building with MSVC
Brotli 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
Brotli 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
Brotli 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
Evgenii Kliuchnikov 443af10a 2024-04-17T04:09:20 add (assumption) check PiperOrigin-RevId: 625632989
Evgenii Kliuchnikov 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
Brotli 709c4672 2024-04-12T09:15:22 Fix minor syntax issues. Missing semicolons. Move checks below variable declarations for c89. PiperOrigin-RevId: 624199887
Brotli 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
Brotli 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
Evgenii Kliuchnikov 117b68b7 2023-08-02T03:04:52 speedup encoder on q5-9 / 1MB+ files PiperOrigin-RevId: 553087469
Evgenii Kliuchnikov 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)
Eugene Kliuchnikov 62662f87 2021-09-08T09:18:45 Strip "./" in includes (#925) Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
Eugene Kliuchnikov 19d86fb9 2021-08-04T14:42:02 Merge-in SharedDictionary feature (#916) Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
Eugene Kliuchnikov 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
Eugene Kliuchnikov 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
Eugene Kliuchnikov 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
Eugene Kliuchnikov 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
Eugene Kliuchnikov f7cbc97c 2018-10-16T16:46:54 Fix typo / minor formatting (#716) * Fix typo / minor formatting / pull computable constant to the place of use.
Eugene Kliuchnikov eb12ec04 2018-06-20T15:14:10 Update (#688) * add rolling-composite-hasher for large-window mode * make API methods explicitly public
Eugene Kliuchnikov 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
Eugene Kliuchnikov 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.
Eugene Kliuchnikov 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`
Eugene Kliuchnikov 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
Eugene Kliuchnikov 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
Eugene Kliuchnikov 6ece1d87 2017-04-23T14:07:08 Move files & update paths (#541) * Move files & update paths * Rename build to scripts. * Fix paths * Fix script.