Skip to content

Step 12: the brotli decoder #6

Description

@c4milo

Design §8 step 12, from docs/design.md as the owner ruled it on 2026-09-25. The step's entry in design §8 records what each check printed when it passes; this issue tracks the work.

Step 12: the brotli decoder. The static dictionary generated from RFC 7932 Appendix A and the transforms from Appendix B; the checked path, then the fast path (claims B1 to B3), with Google's brotli as the oracle.

Check: the dictionary's length and CRC-32, 122,784 octets and 0x5136cb04, pinned by a comptime assert; the exact table budget of decision 12 computed and pinned; decision 15 against Google's brotli; the large-window signature refused as error.LargeWindow; then as step 7; mutations.

Waits on: step 2.

Activity

  1. c4milo commented on Oct 4, 2026

    @c4milo
    OwnerAuthor

    Closed on the owner's instruction of 2026-10-04. The owner ruled the decoder's speed goal met the same day; design §8 step 12 records the ruling (5da4397).

    Where the decoder stands at f855d98, against Google's brotli decoder on streams of quality 11 and window 22. Each number is stdx's speed over Google's for one corpus file. No file decodes below Google's speed in any of ten reports.

    CPU Jobs Median Lowest file
    Neoverse N2 2 1.39 shuffled/dickens-1m, 1.13 and 1.12
    AMD EPYC 7763 1 1.29 js-1k, 1.07
    AMD EPYC 9V45 1 1.33 js-1k, 1.09
    AMD EPYC 9V74 6 1.21 to 1.25 js-1k, 1.05 to 1.06 in five jobs and 1.003 in one
    • The runs are 37201487229, 37201492713 and 37201465574. The reports are in bench/results/, dated 2026-10-04, "main".
    • js-1k on the EPYC 9V74 holds the thinnest margin. It read 0.998 there before the five changes of 2026-10-04.
    • The Xeon 8573C, 8370C and 6973P-C were last measured in the paired runs of those changes, before main held all five. No file decoded below Google's speed there.
    • zig build differential-brotli -Doracles at the same sources: stdx and Google's decoder decode 726 streams of 39 files to the same octets, and give the same verdict on 170,865 corrupted inputs, 6 of them through verdict entries. It ran natively on aarch64 and for x86-64 under Rosetta.
    • CI passed at 5da4397, run 37215191286.

    One record is still to write: the step's "Check passed" entry in design §8, which steps 0 to 11 have.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions