Inflate map sightline data with the browser's gzip on the web

Opening a map on the web froze the page for 0.6 to 1.7 s. Most of that
was the pure-Dart gzip inflate and CRC-32 from package:archive, which on
the web run on the UI thread (compute does not leave it there): about
0.4 s per side on Bind.

inflateWorldGzip now hands the bytes to the browser's DecompressionStream,
which inflates Bind's 19 MB side in about 50 ms. Desktop is unchanged: it
still calls decodeWorldGzip (native zlib) inside its background isolate.
Browsers without DecompressionStream (Firefox before 113, Safari before
16.4) also keep decodeWorldGzip.

The integrity contract holds. The browser rejects a wrong CRC-32 or
length, a stream cut before its footer, and bytes after it; the header
and the footer length are still checked here, and any failure is the
same FormatException as before. Navigation charts read through the same
function, so they get the same speedup.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2b20a0f2b7Dara Adedeji committed on 10/6/2026, 4:10:35 AMparent0fca2d1

Checks

All checks passed
5 files changedLine totals unavailable