Skip to content

Add support for Zstandard to System.IO.Compression #59591

Open
@carlossanlop

Description

@carlossanlop

Zstandard (or Zstd) is a fast compression algorithm that was published by Facebook in 2015, and had its first stable release in May 2021.

Their official repo offers a C implementation. https://github.com/facebook/zstd

Data compression mechanism specification: https://datatracker.ietf.org/doc/html/rfc8478

Features:

  • It is faster than Deflate, especially in decompression, while offering a similar compression ratio.
  • It's maximum compression level is similar to that of lzma and performs better than lza and bzip2.
  • It reached the Pareto Frontier, as it decompresses faster than any other currently-available algorithm with similar or worse compression ratio.
  • It supports multi-threading.
  • It can be saved to a *.zst file.
  • It has a dual BSD+GPLv2 license. We would be using the BSD license.

It's used by:

  • The Linux Kernel as a compression option for btrfs and SquashFS since 2017.
  • FreeBSD for coredumps.
  • AWS RedShift for databases.
  • Canonical, Fedora and ArchLinux for their package managers.
  • Nintendo Switch to compress its files.

We could offer a stream-based class, like we do for Deflate with DeflateStream or GZipStream, but we should also consider offering a stream-less static class, since it's a common request.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions