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>
Dara Adedeji committed on 10/6/2026, 4:10:35 AMparent0fca2d1
Checks
- SuccessfulCodeRabbitGitHub
Review rate limited
- Successfulwindows-buildGitHub
- Successfulpresence-workerGitHub
- Successfulnative-bridgeGitHub
- Successfullinux-buildGitHub
- SuccessfulconvexGitHub
- Successfulclient-contractGitHub
- Successfulwindows-testGitHub
- SuccessfulGreptile ReviewGitHub
- SuccessfulchangesGitHub
- Successfultest (shard 1)GitHub
- SuccessfulwebGitHub
- Successfultest (shard 0)GitHub
- Successfulnative-replayGitHub
- SuccessfulanalyzeGitHub
5 files changedLine totals unavailable