📦klauspost / compress
← 返回首页
Optimized Go Compression Packages
⚖️ NOASSERTION#zstd#gzip#compression#decompression#snappy📅 创建于 2015-07-21🔄 更新于 2026-10-29

📄 仓库 README

在 GitHub 查看 ↗
来自 GitHub 仓库自述文件 · 版权归原作者所有

compress

This package provides various compression algorithms.

  • zstandard compression and decompression in pure Go.
  • S2 is a high performance replacement for Snappy.
  • Optimized deflate packages which can be used as a dropin replacement for gzip, zip and zlib.
  • snappy is a drop-in replacement for github.com/golang/snappy offering better compression and concurrent streams.
  • lzw is a drop-in replacement for compress/lzw with 1.4-4x faster decompression and 1.1-2.7x faster compression, depending on the data.
  • huff0 and FSE implementations for raw entropy encoding.
  • Xpress decompression of the Microsoft XPRESS (MS-XCA) plain LZ77 and LZ77+Huffman formats (the LZ77+Huffman variant is the one used in WIM images and Windows Compact OS / WOF data).
  • gzhttp Provides client and server wrappers for handling gzipped/zstd HTTP requests efficiently.
  • pgzip is a separate package that provides a very fast parallel gzip implementation.

Go Reference Go Sourcegraph Badge

package usage

Use go get github.com/klauspost/compress@latest to add it to your project.

This package will support the current Go version and 2 versions back.

  • Use the nounsafe tag to disable all use of the "unsafe" package.
  • Use the noasm tag to disable all assembly across packages.

Use the links above for more information on each.

changelog

  • Sep 25th, 2026 1.20.1

    • zstd: Apply reset options to reused frame decoders by @pellared in https://github.com/klauspost/compress/pull/1226
    • flate: Report unexpected EOF for truncated Huffman extra bits by @rupayon123 in https://github.com/klauspost/compress/pull/1229
    • flate: Avoid FMA in EstimatedBits for portable rounding by @malt3 in https://github.com/klauspost/compress/pull/1224
    • gzhttp: Preserve caller request headers in Transport by @jakezwang in https://github.com/klauspost/compress/pull/1225
    • gzhttp: Only decompress a request when gzip is the outermost coding by @youdie006 in https://github.com/klauspost/compress/pull/1223
    • zstd/huff0: Optimizations by @lizthegrey in https://github.com/klauspost/compress/pull/1203 https://github.com/klauspost/compress/pull/1205 https://github.com/klauspost/compress/pull/1207 https://github.com/klauspost/compress/pull/1204 https://github.com/klauspost/compress/pull/1208 https://github.com/klauspost/compress/pull/1211 https://github.com/klauspost/compress/pull/1209 https://github.com/klauspost/compress/pull/1210
    • flate: Speed improvements by @alex in https://github.com/klauspost/compress/pull/1220 https://github.com/klauspost/compress/pull/1218 https://github.com/klauspost/compress/pull/1216 https://github.com/klauspost/compress/pull/1215 https://github.com/klauspost/compress/pull/1214 https://github.com/klauspost/compress/pull/1217
  • Sep 2nd, 2026 1.20.0

    • lzw: Add lzw reader/writer in https://github.com/klauspost/compress/pull/1189
    • xpress: Add Microsoft XPRESS (MS-XCA) decompression by @MP-GOWTHAM in https://github.com/klauspost/compress/pull/1195
    • s2: arm64 assembly encoders by @lizthegrey in https://github.com/klauspost/compress/pull/1187
    • zstd, huff0: Improved arm64 assembly by @lizthegrey in https://github.com/klauspost/compress/pull/1175 https://github.com/klauspost/compress/pull/1199 https://github.com/klauspost/compress/pull/1197
    • flate: Writer L7-9 with dictionary can emit the dictionary to stream in https://github.com/klauspost/compress/pull/1201
    • gzhttp: Limit jitter hash to jitterBuffer bytes by @VedantMadane in https://github.com/klauspost/compress/pull/1192
    • s2: Clamp the Go EncodeBetter skip to match the assembly by @lizthegrey in https://github.com/klauspost/compress/pull/1190
    • xxhash: Bound input of non-preemptive assembly by @AskAlexSharov in https://github.com/klauspost/compress/pull/1196
  • Aug 6th, 2026 1.19.2

    • huff0: Add arm64 assembly for Decompress4X/1X by @lizthegrey in https://github.com/klauspost/compress/pull/1172
    • zstd: Re-enable unsafe decodeSync memory copies by @lizthegrey in https://github.com/klauspost/compress/pull/1171
    • zstd: Fix arm64 asm frame offsets placing locals on the saved LR slot by @lizthegrey in https://github.com/klauspost/compress/pull/1176
    • zstd: Avoid racing MaxDecodedSize write on shared dict litEnc by @zanarellidev in https://github.com/klauspost/compress/pull/1182
    • zstd: Keep BuildDict recent-offsets positive and loadable by @zanarellidev in https://github.com/klauspost/compress/pull/1184
    • zstd: Handle zero-literal BuildDict corpus by @cyphercodes in https://github.com/klauspost/compress/pull/1178
    • zstd: Don't clear the registered dictionary when decoding past the window by @sueun-dev in https://github.com/klauspost/compress/pull/1177
  • Jul 20th, 2026 1.19.1

    • zstd: Validate SnappyConverter literal copies in https://github.com/klauspost/compress/pull/1170
    • flate: Use Peek instead of ReadByte for the bufio.Reader decode path by @joechenrh in https://github.com/klauspost/compress/pull/1169
    • zstd: Bump avo pin, regenerate arm64 asm by @lizthegrey in https://github.com/klauspost/compress/pull/1167
  • Jul 1st, 2026 1.19.0

    • zstd: Add true concurrent stream encoding in https://github.com/klauspost/compress/pull/1136
    • zstd: arm64 decoder asm by @lizthegrey in https://github.com/klauspost/compress/pull/1160
    • flate: Add inflate checkpoints in https://github.com/klauspost/compress/pull/1154
    • zstd: avoid unused BuildDict encoder allocation by @snissn in https://github.com/klauspost/compress/pull/1147
    • snappy/s2: Limit length of varint in decodedLen by @eustas in https://github.com/klauspost/compress/pull/1148
    • gzhttp: match qvalue parameter case-insensitively (RFC 7231) by @z9z in https://github.com/klauspost/compress/pull/1149
    • zip: add NameDecoder callback for legacy encoding rewrite by @SAY-5 in https://github.com/klauspost/compress/pull/1150
    • huff0: Allow building tables from histogram in https://github.com/klauspost/compress/pull/1155
    • huff0: Allow building table from oversized histogram in https://github.com/klauspost/compress/pull/1156
    • s2sx: Clean symlink targets in https://github.com/klauspost/compress/pull/1163
See changes to v1.18.x * Jun 30th, 2026 [1.18.7](https://github.com/klauspost/compress/releases/tag/v1.18.7) * s2: Fix `NewDict` out-of-bounds read. Security release without other changes. * Apr 30th, 2026 [1.18.6](https://github.com/klauspost/compress/releases/tag/v1.18.6) * s2: Fix amd64 stack frame corruption in https://github.com/klauspost/compress/pull/1145 * gzhttp: Canonicalize ETag header by @justinmayhew in https://github.com/klauspost/compress/pull/1139 * Pool hash tables in Go encode paths to reduce allocations by @huynhanx03 in https://github.com/klauspost/compress/pull/1143 * Mar 20th, 2026 [1.18.5](https://github.com/klauspost/compress/releases/tag/v1.18.5) * zstd: Fix crash when changing encoder dictionary with same ID in https://github.com/klauspost/compress/pull/1135 * zstd: Default to full zero frames in https://github.com/klauspost/compress/pull/1134 * flate: Clean up histogram order in https://github.com/klauspost/compress/pull/1133 * Feb 9th, 2026 [1.18.4](https://github.com/klauspost/compress/releases/tag/v1.18.4) * gzhttp: Add zstandard to server handler wrapper https://github.com/klauspost/compress/pull/1121 * zstd: Add ResetWithOptions to encoder/decoder https://github.com/klauspost/compress/pull/1122 * gzhttp: preserve qvalue when extra parameters follow in Accept-Encoding by @analytically in https://github.com/klauspost/compress/pull/1116 * Jan 16th, 2026 [1.18.3](https://github.com/klauspost/compress/releases/tag/v1.18.3) * Downstream CVE-2025-61728. See [golang/go#77102](https://github.com/golang/go/issues/77102). * Dec 1st, 2025 - [1.18.2](https://github.com/klauspost/compress/releases/tag/v1.18.2) * flate: Fix invalid encoding on level 9 with single value input in https://github.com/klauspost/compress/pull/1115 * flate: reduce stateless allocations by @RXamzin in https://github.com/klauspost/compress/pull/1106 * Oct 20, 2025 - [1.18.1](https://github.com/klauspost/compress/releases/tag/v1.18.1) - RETRACTED * zstd: Add simple zstd EncodeTo/DecodeTo functions https://github.com/klauspost/compress/pull/1079 * zstd: Fix incorrect buffer size in dictionary encodes https://github.com/klauspost/compress/pull/1059 * s2: check for cap, not len of buffer in EncodeBetter/Best by @vdarulis in https://github.com/klauspost/compress/pull/1080 * zlib: Avoiding extra allocation in zlib.reader.Reset by @travelpolicy in https://github.com/klauspost/compress/pull/1086 * gzhttp: remove redundant err check in zstdReader by @ryanfowler in https://github.com/klauspost/compress/pull/1090 * flate: Faster load+store https://github.com/klauspost/compress/pull/1104 * flate: Simplify matchlen https://github.com/klauspost/compress/pull/1101 * flate: Use exact sizes for huffman tables https://github.com/klauspost/compress/pull/1103 * Feb 19th, 2025 - [1.18.0](https://github.com/klauspost/compress/releases/tag/v1.18.0) * Add unsafe little endian loaders https://github.com/klauspost/compress/pull/1036 * fix: check `r.err != nil` but return a nil value error `err` by @alingse in https://github.com/klauspost/compress/pull/1028 * flate: Simplify L4-6 loading https://github.com/klauspost/compress/pull/1043 * flate: Simplify matchlen (remove asm) https://github.com/klauspost/compress/pull/1045 * s2: Improve small bl

📈 近 7 天 Star 趋势

每日新增 Star(柱)与累计 Star(线)· 数据来自 GitHub

🏆 排名变化趋势

在各榜单中的排名历史(数字越小越靠前)

📋 历史上榜记录

每次快照的详细数据
日期 榜单 排名 周期新增 总 STAR