docs


Log

Author Commit Date CI Message
Evgenii Kliuchnikov 3396c67f 2024-01-15T12:49:21 add brcat alias + flag to decompress concatenated streams PiperOrigin-RevId: 598652401
Evgenii Kliuchnikov 27a9a809 2023-07-30T03:44:38 simplify CMake build PiperOrigin-RevId: 552238545
Evgenii Kliuchnikov b2c86d18 2023-01-30T18:34:24 Decoder API: added API to attach metadata blocks callbacks PiperOrigin-RevId: 505734532
Brotli 36533a86 2023-01-16T18:04:35 Internal change PiperOrigin-RevId: 502401179
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 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>
Evgenii Kliuchnikov fcda9db7 2020-10-08T14:50:33 Shorten docs/brotli.svg Kudos to @alrra
Eugene Kliuchnikov f6b3aa6d 2020-09-24T13:43:44 Add brotli logo (#845) Co-authored-by: Eugene Kliuchnikov <eustas@chromium.org>
Eugene Kliuchnikov 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
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 631fe194 2018-03-20T17:37:41 Update (#651) * 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
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 3e58ea5f 2017-10-13T14:50:51 Update (#617) * 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`
Tomáš Popela a0c7dafe 2017-10-10T11:24:13 Fix permissions of various files in project (#613) Move from 755 to 644.
Eugene Kliuchnikov c6056359 2017-09-20T15:02:01 Fix API documentation + theoretical NPEs (#602)
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 05d5f3d7 2017-06-13T12:52:56 Update (#560) Update: * add decoder API to avoid ringbuffer reallocation * fix MSVC warnings * remove dead code
Eugene Kliuchnikov 03739d2b 2017-05-29T17:55:14 Update (#555) 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
Eugene Kliuchnikov c931e576 2017-02-28T16:59:52 Move `java/` to `java/org/brotli/` to fix `sources.jar` structure (#517) Also added man pages to `docs/`
Zoltan Szabadka af176847 2016-08-02T13:27:29 Update the spec reference to RFC 7932, remove the old internet draft.
Zoltan Szabadka 5f02d612 2016-05-26T12:20:42 Update the spec to latest published version.
Zoltan Szabadka 1841f7cc 2016-05-26T12:19:31 Create -11 version of the spec.
Zoltan Szabadka 3a9032ba 2016-05-04T21:27:56 Address the DISCUSS ballot position from the IESG review of the spec.
Zoltan Szabadka 136d39bd 2016-05-04T21:25:37 Create -10 version of the specification.
Zoltan Szabadka e96d5b29 2016-04-20T10:48:14 Address review comments in the specification. 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.
Zoltan Szabadka 26cf47f3 2016-04-20T10:45:40 Create -09 version of the draft.
Zoltan Szabadka 6a92849c 2016-01-11T13:36:41 Change the title and the expiration date of the -08 draft.
Zoltan Szabadka 8ef0a202 2016-01-11T13:35:30 Create -08 version of the draft.
Zoltan Szabadka 3178f4bc 2015-12-10T11:03:22 Add Robert Obryk to the Acknowledgements section of the spec for his work on the first version of the spec in designing the format of the compressed prefix codes.
Joe Tsai 3fe5c247 2015-11-10T15:09:40 Fix 72-char line length violator
szabadka 77db683f 2015-11-10T16:06:47 Merge pull request #255 from ende76/master FIX: Typo in reference to NBLTYPESL, Minor: added missing word _lengths_ to insert-and-copy lengths
Thomas Pickert 0e3329d5 2015-11-10T09:52:10 Fixed accidental plural plural wording
Ende e33ff0a6 2015-11-10T05:32:50 Rearranged wording to stay under 72 character limit
Ende 1b8b8010 2015-11-07T17:55:22 Fixed two references to wrong NBLTYPESx
Ende 9bb41938 2015-11-06T14:14:18 Minor: added missing word _lengths_ to insert-and-copy lengths
Zoltan Szabadka 652ca06b 2015-11-04T14:54:59 Update the Acknowledgments section of the spec.
Zoltan Szabadka af61a513 2015-11-03T17:22:53 Update .txt version of the spec.
Joe Tsai ce2bb01f 2015-11-02T09:39:11 Revert accidental deletion in Section 10.
Joe Tsai 2421ed92 2015-11-02T03:34:42 Clarify pseudo-code in Section 10.
Joe Tsai 1a50dc9b 2015-11-02T03:30:21 fix formatting of Section 12.
Joe Tsai 902e8159 2015-11-02T03:27:27 Fix formatting, section references, and grammar * 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
Joe Tsai 3ab98536 2015-11-01T23:00:07 Fix grammar in Section 2. s/copy length determine /copy length determines /g
Joe Tsai e57dbc0f 2015-11-01T18:23:20 Minor capitalization fix
Joe Tsai 5c869c9d 2015-11-01T17:01:38 Clarify simple and complex prefix codes * 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.
Joe Tsai c5b6b5c7 2015-11-01T16:50:13 Minor formatting changes * 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"
Joe Tsai 166edb02 2015-11-01T16:28:11 Minor formatting of Section 9.2. and Section 9.3. 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 <<<
Joe Tsai 542a8b77 2015-10-29T09:50:19 Clarify Section 7.3 * 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.
Joe Tsai ff3897df 2015-10-29T09:44:23 Clarify Section 8. * 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.
Joe Tsai 2ffe45bd 2015-10-29T09:42:00 Clarify Section 4. * If NDIRECT is zero, then the paragraph reads "from 16 to 15", which doesn't make much sense. Thus, add a conditional to avoid this minor oddity.
Joe Tsai 185cb9ea 2015-10-29T09:40:41 Define the maximum number of bytes transforms may add to a word * This value is useful in implementing the decoder since we can know ahead-of-time what size buffer is needed to contain the output of a transformed word.
Joe Tsai 6d2575ea 2015-10-29T09:39:06 Use consistent bit convention in Section 5. * Rather than say "lower 3 bits" in one sentence and "bits 3-5" in the sentence right after, just consistently use the same convention and say "0-2" and "3-5".
Joe Tsai 0e4cb52a 2015-10-29T08:32:11 Clarify Section 7.1. * Provide exhaustive list of all the ways the last two bytes can be sourced from. * Also make a clear connection in this section that there are only 64 context IDs for literals. This is important for the indexing math in context maps to make sense.
szabadka 8523d36e 2015-10-27T12:19:53 Merge pull request #242 from ende76/spec_suggest_block_switch Added note about invalid block type value in block switch commands
Ende 11286539 2015-10-27T07:04:38 Removed previous change, fixed typo NBLTYPES -> NBLTYPESL #242
Ende d1cd34f6 2015-10-27T06:35:30 Moved not about invalid distances up to 0-15 section
Ende e544a185 2015-10-26T16:22:28 Added note about invalid block type value
Ende a05fa625 2015-10-26T16:00:20 Added note about invalid distance values
Zoltan Szabadka ae04a34c 2015-10-26T12:06:29 Generate new .txt version of the spec. Based on the changes in the .nroff source in PR #231.
szabadka 816153cc 2015-10-26T12:02:36 Merge pull request #231 from dsnet/master Use consistent bit ordering and variable names
Joe Tsai ec8756d7 2015-10-23T15:38:45 Remove note at end of section 3.1 about switching prefix conventions
Joe Tsai 0a9f65aa 2015-10-22T09:13:59 s/static prefix code/variable length code/g
Joe Tsai efeb59c4 2015-10-22T09:11:04 Placed explicit bit pattern table for MNIBBLES to avoid any doubts
Joe Tsai c996c06e 2015-10-20T14:54:51 Use consistent bit ordering and variable names If bit-orderings are to be parsed from left-to-right, then make the bit-strings left-justified. If bit-orderings are to be parsed from right-to-left, then make the bit-strings right-justified. Section 3.1, which describes how prefix codes work shows prefix codes that are "left-to-right", which is better for demonstrating how the work. However, most of the rest of the document uses a "right-to-left" convention. We should distinctly say at the end of section 3.1 that we are switching conventions. Thus, change the prefix code in section 3.5 to be "right-to-left" to be consistent with sections 9.1 and 9.2. Also, change the variable names in section 7.3 to be consistent with those used in section 10. Also, change the description of MNIBBLES to be "MNIBBLES - 4", similar to the convention of saying "MLEN - 1". Beforehand, the phrase "If MNIBBLES is 0, then ..." was unclear whether it meant MNIBBLES before the "plus 4" or after.
Zoltan Szabadka 676bc91c 2015-10-20T12:27:09 Generate new .txt version of the spec. Based on the changes in the .nroff source in PR #229
Joe Tsai 4f1fce16 2015-10-20T03:02:55 Make code and paragraph both use 3-space indents
Joe Tsai f908a4eb 2015-10-20T02:43:25 Fix spelling of "Acknowledgments" Made tab-space of code snippet to be 3-space instead of 2-space
Joe Tsai fa1c60e3 2015-10-20T02:39:09 Addressed comments about whitespace
Joe Tsai 1486df76 2015-10-19T13:53:24 Fixed minor whitespace formatting and ordering of elements Fixed minor whitespacing issues that caused print-out to be slightly confusing. Biggest change is in section 9.2, where an indent seemed to indicate that some fields were part of the previous field, when they were not related. Also, changed the order that transforms are described in section 8 to match the enumeration values that are explicitly defined in Appendix B.
Zoltan Szabadka e92afe07 2015-10-19T13:50:23 Add a summary table of alphabet sizes to the spec. Based on a suggestion from Thomas Pickert.
Zoltan Szabadka 2c3d8eae 2015-10-19T12:16:00 Change the title and the expiration date of the -07 draft.
Zoltan Szabadka 9bc4008f 2015-10-19T12:15:05 Create -07 version of the draft.
Zoltan Szabadka c4f439db 2015-10-06T16:54:04 Change the content encoding type from "bro" to "br".
Zoltan Szabadka 4d7de651 2015-10-06T15:22:18 Fix the introduction part of the specification. - window bits can be 10 to 24 - meta block can have 0 length
Zoltan Szabadka 534072ad 2015-10-02T14:40:56 Add brotli comparison study to the docs.
Zoltan Szabadka 100a2382 2015-10-02T13:08:43 Update the spec with IANA Considerations.
Zoltan Szabadka 2faed4ab 2015-10-02T13:08:10 Create -06 version of the spec.
Zoltan Szabadka cacd294e 2015-09-21T13:29:47 Change the expiration date and title of the -05 draft.
Zoltan Szabadka d1341bdd 2015-09-21T13:27:22 Create -05 version of the draft.
Zoltan Szabadka e9edf7eb 2015-09-21T13:26:17 Fix typo in the specification.
Zoltan Szabadka 075b3ad5 2015-09-15T15:35:48 Clarifications to the spec regarding when the stream should be rejected as invalid. Based on Mark Adler's review findings.
Zoltan Szabadka ea359368 2015-05-11T17:04:13 Change the expiration date and title of the -04 draft.
Zoltan Szabadka 14ea2b58 2015-05-11T17:03:35 Create -04 version of the draft.
Zoltan Szabadka 78350a91 2015-05-07T20:10:22 Add an Acknowledgements section to the spec.
Zoltan Szabadka 54f69c9e 2015-05-07T17:44:33 Support window bits 10 - 15 in the decoder. The previous window bit value 17 is used to extend the range, since it has not been used in any previous encoders.
Zoltan Szabadka 94bc27d8 2015-04-27T18:25:59 Fix the year on the copyright message.
Zoltan Szabadka fd4a0481 2015-04-27T18:12:09 Change the expiration date and title of the -03 draft.
Zoltan Szabadka 98bd8841 2015-04-27T17:52:21 Create -03 version of the internet draft.
Zoltan Szabadka 2d8b2ec1 2015-04-22T12:41:57 Support empty meta-blocks with optional ignored metadata. This is a partially backward incompatible format change, that makes previously valid brotli streams that contain larger than 16MB meta-blocks invalid. The impact of this should be minimal, since the 'bro' command-line tool does not create larger than 2MB meta-blocks, so the only streams this change could break are those created by a custom brotli encoder. This commit contains only the specification update, implementation in the decoder and encoder will follow in later commits.
Zoltan Szabadka 5b80ef0f 2015-04-22T12:08:16 Change the specification to be less strict in some cases. In the following three cases we allow more choices for the compressor, which can potentially lead to less compressed bits. (1) Allow brotli streams where the block counts do not count down to exactly zero at the end of the meta-block. This makes it possible for compressors to sometimes choose a block count which can be represented with less bits than the exact block count. (2) Remove the restriction that prefix code descriptions with exactly one non-zero length symbol in the code length alphabet must have 1 bit depth. This is because bit depth 1 requires the most bits to encode. (3) Allow any copy length value in the last command where the copy part is ignored. This makes it possible for a compressor to choose a copy length which can be represented with the least amount of bits. In addition to the changes above, this commit also has a wording clarification in the overview section where the use of the 'context ID' expression is changed to be consistent with the rest of the specification, i.e. that it is a function of the last two literals or the copy length.
Zoltan Szabadka 206d067c 2015-04-22T11:55:29 Use consistent sentence spacing in the specification. All sentence spacing was changed to one space, except in the boilerplate which must be preserved verbatim.
Zoltan Szabadka e9fd1a4f 2015-04-22T11:33:38 Add Mark Adler's edits to the specification. The specification source is changed in this commit to exactly mirror the specification edited by Mark Adler: https://github.com/madler/brotli/blob/master/brotli-02-edit.nroff (version 70e53d7)
Zoltan Szabadka f80ccecd 2015-04-08T16:15:09 Spec clarifications for Section 7. Based on Mark Adler's review comments.
Zoltan Szabadka dcdc68e6 2015-04-08T11:07:00 Spec clarifications for Section 8. Based on Mark Adler's review comments.
Zoltan Szabadka 92b55173 2015-04-07T17:23:37 Some wording changes to Section 2 of the spec.
Zoltan Szabadka 707b78ae 2015-04-07T16:58:07 Add the current version of the brotli specification. Add the .nroff source file and a python script to generate the .txt version (requires the nroff command).