[PR #640] [MERGED] New feature: "Large Window Brotli" #1287

Open
opened 2026-01-29 20:53:21 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/google/brotli/pull/640
Author: @eustas
Created: 2/23/2018
Status: Merged
Merged: 2/26/2018
Merged by: @eustas

Base: masterHead: upd02b


📝 Commits (9)

  • 5de45f5 New feature: "Large Window Brotli"
  • 9ba406d Add dictionaryless compressed dictionary
  • 4bf1f21 Fix sources.lst
  • 353f349 Fix sources.lst and add a note that libtool is also required.
  • 7388be3 Update setup.py
  • c568d2e Fix EagerStreamTest
  • d852c0a Fix BUILD file
  • cbf150f Add missing libdivsufsort dependency
  • a71e63e Fix "unused parameter" warning.

📊 Changes

92 files changed (+3613 additions, -1793 deletions)

View changed files

📝 .gitmodules (+3 -0)
📝 WORKSPACE (+6 -0)
📝 bootstrap (+2 -0)
📝 c/common/constants.h (+13 -6)
📝 c/common/context.h (+182 -172)
c/common/dictionary.bin.br (+0 -0)
📝 c/common/platform.h (+20 -2)
c/common/transform.c (+236 -0)
c/common/transform.h (+80 -0)
📝 c/dec/bit_reader.h (+18 -15)
📝 c/dec/decode.c (+280 -175)
📝 c/dec/huffman.c (+10 -12)
📝 c/dec/huffman.h (+12 -8)
📝 c/dec/prefix.h (+3 -4)
📝 c/dec/state.c (+14 -23)
📝 c/dec/state.h (+25 -22)
c/dec/transform.h (+0 -300)
📝 c/enc/backward_references.c (+7 -14)
📝 c/enc/backward_references.h (+0 -1)
📝 c/enc/backward_references_hq.c (+56 -35)

...and 72 more files

📄 Description

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

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/google/brotli/pull/640 **Author:** [@eustas](https://github.com/eustas) **Created:** 2/23/2018 **Status:** ✅ Merged **Merged:** 2/26/2018 **Merged by:** [@eustas](https://github.com/eustas) **Base:** `master` ← **Head:** `upd02b` --- ### 📝 Commits (9) - [`5de45f5`](https://github.com/google/brotli/commit/5de45f54bc9ac1187e34e9dbf725c730e8741d30) New feature: "Large Window Brotli" - [`9ba406d`](https://github.com/google/brotli/commit/9ba406d785e86c68b1dafdf20ee3981a52e88b07) Add dictionaryless compressed dictionary - [`4bf1f21`](https://github.com/google/brotli/commit/4bf1f214307ec68134c7c38641977b0479a66721) Fix `sources.lst` - [`353f349`](https://github.com/google/brotli/commit/353f34963c56f2a8f31020741018c7038ef30825) Fix `sources.lst` and add a note that `libtool` is also required. - [`7388be3`](https://github.com/google/brotli/commit/7388be319d9356fe01f069ba727347ebfb8584bd) Update setup.py - [`c568d2e`](https://github.com/google/brotli/commit/c568d2ee9b3da0cf637a7b66ccdd9ddd08cc0be0) Fix `EagerStreamTest` - [`d852c0a`](https://github.com/google/brotli/commit/d852c0a909f8da4f75b3eb5797758bff41c4e42f) Fix BUILD file - [`cbf150f`](https://github.com/google/brotli/commit/cbf150fc91eb3177da1f252de408f1a8d7ef4dc6) Add missing `libdivsufsort` dependency - [`a71e63e`](https://github.com/google/brotli/commit/a71e63edceb0a4d3b05921870aba37f3209befcd) Fix "unused parameter" warning. ### 📊 Changes **92 files changed** (+3613 additions, -1793 deletions) <details> <summary>View changed files</summary> 📝 `.gitmodules` (+3 -0) 📝 `WORKSPACE` (+6 -0) 📝 `bootstrap` (+2 -0) 📝 `c/common/constants.h` (+13 -6) 📝 `c/common/context.h` (+182 -172) ➕ `c/common/dictionary.bin.br` (+0 -0) 📝 `c/common/platform.h` (+20 -2) ➕ `c/common/transform.c` (+236 -0) ➕ `c/common/transform.h` (+80 -0) 📝 `c/dec/bit_reader.h` (+18 -15) 📝 `c/dec/decode.c` (+280 -175) 📝 `c/dec/huffman.c` (+10 -12) 📝 `c/dec/huffman.h` (+12 -8) 📝 `c/dec/prefix.h` (+3 -4) 📝 `c/dec/state.c` (+14 -23) 📝 `c/dec/state.h` (+25 -22) ➖ `c/dec/transform.h` (+0 -300) 📝 `c/enc/backward_references.c` (+7 -14) 📝 `c/enc/backward_references.h` (+0 -1) 📝 `c/enc/backward_references_hq.c` (+56 -35) _...and 72 more files_ </details> ### 📄 Description 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 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-29 20:53:21 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/brotli#1287