aboutsummaryrefslogtreecommitdiff
path: root/docs
AgeCommit message (Collapse)AuthorFilesLines
2024-01-15add brcat alias + flag to decompress concatenated streamsEvgenii Kliuchnikov1-1/+11
PiperOrigin-RevId: 598652401
2023-07-30simplify CMake buildEvgenii Kliuchnikov2-2/+2
PiperOrigin-RevId: 552238545
2023-01-31Decoder API: added API to attach metadata blocks callbacksEvgenii Kliuchnikov1-0/+57
PiperOrigin-RevId: 505734532
2023-01-17Internal changeBrotli1-1/+1
PiperOrigin-RevId: 502401179
2022-11-17UpdateEvgenii Kliuchnikov1-130/+123
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)
2021-09-08Strip "./" in includes (#925)Eugene Kliuchnikov1-1/+1
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
2021-08-31Migrate to github actions (#920)Eugene Kliuchnikov5-5/+86
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>
2020-10-08Shorten docs/brotli.svgEvgenii Kliuchnikov1-1/+1
Kudos to @alrra
2020-09-24Add brotli logo (#845)Eugene Kliuchnikov1-0/+1
Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
2020-05-15Update (#807)Eugene Kliuchnikov1-0/+47
- 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
2019-04-12Update (#749)Eugene Kliuchnikov1-1/+15
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-03-20Update (#651)Eugene Kliuchnikov1-0/+10
* 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
2018-02-26New feature: "Large Window Brotli" (#640)Eugene Kliuchnikov4-4/+14
* 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.
2017-12-12Update (#630)Eugene Kliuchnikov2-7/+7
* 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`
2017-10-13Update (#617)Eugene Kliuchnikov1-1/+1
* 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`
2017-10-10Fix permissions of various files in project (#613)Tomáš Popela4-0/+0
Move from 755 to 644.
2017-09-20Fix API documentation + theoretical NPEs (#602)v1.0.0Eugene Kliuchnikov1-3/+3
2017-08-04Update API, and more (#581)Eugene Kliuchnikov4-85/+4
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
2017-06-13Update (#560)Eugene Kliuchnikov1-1/+45
Update: * add decoder API to avoid ringbuffer reallocation * fix MSVC warnings * remove dead code
2017-05-29Update (#555)Eugene Kliuchnikov2-3/+139
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
2017-02-28Move `java/` to `java/org/brotli/` to fix `sources.jar` structure (#517)Eugene Kliuchnikov3-0/+1117
Also added man pages to `docs/`
2016-08-02Update the spec reference to RFC 7932, remove the old internet draft.Zoltan Szabadka2-13069/+0
2016-05-26Update the spec to latest published version.Zoltan Szabadka2-262/+273
2016-05-26Create -11 version of the spec.Zoltan Szabadka2-0/+0
2016-05-04Address the DISCUSS ballot position from the IESG review of the spec.Zoltan Szabadka2-1002/+1040
2016-05-04Create -10 version of the specification.Zoltan Szabadka2-0/+0
2016-04-20Address review comments in the specification.Zoltan Szabadka2-1032/+1438
This commit updates the draft to the ietf -09 version: https://www.ietf.org/id/draft-alakuijala-brotli-09.txt In this version review comments from Jean-loup Gailly and the ietf secdir review were addressed.
2016-04-20Create -09 version of the draft.Zoltan Szabadka2-0/+0
2016-01-11Change the title and the expiration date of the -08 draft.Zoltan Szabadka2-247/+247
2016-01-11Create -08 version of the draft.Zoltan Szabadka2-0/+0
2015-12-10Add Robert Obryk to the Acknowledgements section of the specZoltan Szabadka2-92/+93
for his work on the first version of the spec in designing the format of the compressed prefix codes.
2015-11-10Fix 72-char line length violatorJoe Tsai2-605/+662
2015-11-10Merge pull request #255 from ende76/masterszabadka2-10/+10
FIX: Typo in reference to NBLTYPESL, Minor: added missing word _lengths_ to insert-and-copy lengths
2015-11-10Fixed accidental plural plural wordingThomas Pickert2-6/+6
2015-11-10Rearranged wording to stay under 72 character limitEnde2-6/+6
2015-11-07Fixed two references to wrong NBLTYPESxEnde2-4/+4
2015-11-06Minor: added missing word _lengths_ to insert-and-copy lengthsEnde2-2/+2
2015-11-04Update the Acknowledgments section of the spec.Zoltan Szabadka2-7/+8
2015-11-03Update .txt version of the spec.Zoltan Szabadka1-1060/+1060
2015-11-02Revert accidental deletion in Section 10.Joe Tsai1-0/+1
2015-11-02Clarify pseudo-code in Section 10.Joe Tsai1-10/+15
2015-11-02fix formatting of Section 12.Joe Tsai1-5/+5
2015-11-02Fix formatting, section references, and grammarJoe Tsai1-29/+57
* Add .nf and .fi tags everywhere they were missing * Consistently use Section X.X. instead of the following: Paragraph X.X. section X * Fix minor grammar issues
2015-11-01Fix grammar in Section 2.Joe Tsai1-1/+1
s/copy length determine /copy length determines /g
2015-11-01Minor capitalization fixJoe Tsai1-3/+3
2015-11-01Clarify simple and complex prefix codesJoe Tsai1-8/+10
* At the beginning of the simple prefix code section, telling us that "a value of 1 indicates the number of leading zeros" is not very helpful. Instead, it should indicate that it means a complex prefix code and point the reader to the relevant section (which repeats this information in more detail) * Clearly indicate that reusing a value is an error! This seems to be the behavior of the of the reference implementation. * Clarify what the termination conditions are while reading the prefix codes. Also, indicate that it is an error if the prefix tree is over-subscribed or under-subscribed. * Clearly state what is the maximum number of individual symbols that may be read. This ensures that it is forbidden to an stream that continually says that the symbols have zero length.
2015-11-01Minor formatting changesJoe Tsai1-93/+97
* In the description about "three categories", explicitly number them instead of using a giant paragraph that is harder to follow. * Switch lists of items to consistently use American style commas. The American style lists is better for clarity purposes. Consider the following: -Each category of value (insert and copy lengths, literals and distances) +Each category of value (insert and copy lengths, literals, and distances) * Make sure not to break a hyphenated phrase with a newline. When the nroff file is processed, "insert-\nand-copy" becomes "insert- and-copy", making it inconsistent with other uses of the hyphenated phrase. * Consistently use the same hyphenated phrase if referred to as a single unit. "insert and copy" -> "insert-and-copy" "least significant" -> "least-significant" "most significant" -> "most-significant" "fixed length" -> "fixed-length" "block switch" -> "block-switch". * Consistently use "indexes" instead of "indices"
2015-11-01Minor formatting of Section 9.2. and Section 9.3.Joe Tsai1-32/+32
Many of the fields are copy-pastes of each other, but differ slightly in placement of words, capitalization, or other random oddities. This commit makes it so that if you simply do a search replace on these following passages, you get the same thing: s/NBLTYPESX/(NBLTYPESI|NBLTYPESL|NBLTYPESD)/g s/CATEGORY/(insert-and-copy|literal|distance)/g >>> 1-11 bits: NBLTYPESX, # of CATEGORY block types, encoded with the same variable length code as above Prefix code over the block type code alphabet for CATEGORY block types, appears only if NBLTYPESX >= 2 Prefix code over the block count code alphabet for CATEGORY block counts, appears only if NBLTYPESX >= 2 Block count code + Extra bits for first CATEGORY block count, appears only if NBLTYPESX >= 2 <<< >>> Block type code for next CATEGORY block type, appears only if NBLTYPESX >= 2 and the previous CATEGORY block count is zero Block count code + extra bits for next CATEGORY block count, appears only if NBLTYPESX >= 2 and the previous CATEGORY block count is zero <<<
2015-10-29Clarify Section 7.3Joe Tsai1-10/+19
* Acknowledge the fact that the context map is conceptually really a two-dimensional matrix with 2 different keys, but in reality stored as a one-dimensional array. * Mention that InverseMoveToFrontTransform will not cause the context map to have invalid indexes. This gives someone implementing a decoder sanity that they do not have to go through the context map again and check that all values are less than NTREES.
2015-10-29Clarify Section 8.Joe Tsai1-5/+4
* The phrase "difference between these distances" can either refer to the conceptual difference (i.e. they hae different semantic meaning) or to the mathematical difference (i.e. use substraction for the two). Instead, just remove the sentence since the equations below make it clear what we're supposed to do here.