Zstandard
作者 | Yann Collet |
---|---|
開発元 | Yann Collet, Przemysław Skibiński (inikep) |
初版 | 2015年1月23日 |
最新版 |
1.5.4
/ 2023年2月10日[1] |
リポジトリ | |
プログラミング 言語 | C言語 |
対応OS | クロスプラットホーム |
プラットフォーム | ポータブル |
サポート状況 | 開発中 |
種別 | データ圧縮 |
ライセンス | BSDライセンスとGPLv2のデュアルライセンス |
公式サイト |
facebook |
拡張子 | .zst |
---|---|
MIMEタイプ | application/zstd |
種別 | データ圧縮 |
国際標準 | RFC 8878 |
オープン フォーマット | Yes |
ウェブサイト | facebook |
Zstandard (zstd) は、圧縮・展開が速いことを特徴とする可逆圧縮アルゴリズムである[2]。またC言語で書かれた前述のアルゴリズムのリファレンス実装の名前でもある。Metaに所属しているYann Colletによって2015年から開発されている。
この実装のバージョン1.0.0は2016年8月31日にフリーソフトウェアとして公開された[3][4]。2018年10月に RFC 8478 で規格化され、2021年2月に RFC 8878 に更新された。メディアタイプは application/zstd
[5]。英語発音はズィースタンダード(zee standard)[5]。
特徴[編集]
Zstandardは、デフォルトの圧縮レベル3の場合、現在主流であるDeflate (ZIP, gzip) アルゴリズムとほぼ同じ圧縮率だが、より高速に圧縮と解凍が行えるように設計されている[2][6]。
圧縮レベルは正の側は1~22が指定可能で、圧縮レベルを上げると圧縮率は上がり、幅広いレンジの圧縮率に対応している。Arch Linuxのパッケージ圧縮はZstandardを採用しているが、圧縮レベル20を採用していて[7]、xzと比較してサイズの増加は0.8%に留まり、解凍は14倍高速である[8]。圧縮レベルは-1以下も存在し、コマンドライン版では --fast=# で指定することが可能で、Zstandardの開発者による調査だと --fast=2 は QuickLZ や Snappy 相当、--fast=3 は LZO 相当、--fast=4 は LZ4 相当である[9]。
Zstandardは大きな検索窓の辞書式圧縮アルゴリズム (LZ77) とエントロピー符号化を併用しており、エントロピー符号化ステージで有限状態エントロピー(FSE)のtANS あるいはハフマン符号化を使用している[10]。Zstandardの実装で特徴的なのはエントロピー復号時に逆方向から読み取ることである。
デフォルトでは利用しないが、並列圧縮・解凍にも対応していて、コマンドライン版は-T#で指定する。#に並列度を入れ、0の場合はCPUのコア数となる。
ライセンス[編集]
リファレンス実装はBSDライセンスでGitHubにおいて公開されている。1.0以降のバージョンにおいては関連する特許の使用を認める追加ライセンス[11] も付属している。
バージョン1.3.1 [12] から、この特許条項は削除され、ライセンスはBSD + GPLv2デュアルライセンスに変更された[13]。
利用例[編集]
Linuxカーネルには2017年11月(バージョン4.14)からZstandardが含まれており、btrfsやsquashfsファイルシステムでの圧縮方法として利用可能となっている。また、2020年10月(バージョン5.9)からカーネルイメージの圧縮方法として利用可能となった。
FreeBSDカーネルには2017年からZstandardが含まれており、コアダンプ(ユーザープログラムとカーネルパニックの両方)の圧縮オプションとして利用可能となっている。
Ubuntu 18.04[14] や2019年12月27日以降のArch Linux[8]等、一部のLinuxディストリビューションでパッケージ圧縮方式としてZstandardが利用できるようになった。Ubuntu 21.10 より Zstandard がパッケージ圧縮方式のデフォルトとなった[15]。Ubuntuでは圧縮レベル19[14]、Arch Linuxでは圧縮レベル20[7]を採用したが、xzの圧縮レベル6に比べて、Zstandardの圧縮レベル19では6%[14]、圧縮レベル20では0.8%[8]パッケージのサイズが増加するが、展開速度は格段に高速になる[8]。
GNU tar は2019年1月2日にリリースされた 1.31 から対応している。拡張子は .tar.zst もしくは .tzst 。bsdtar (libarchive) は2019年4月11日にリリースされた 3.3.3 から対応している。[16][17]
参照[編集]
- LZ77
- Asymmetric Numeral Systems
- Brotli
- LZFSE - AppleがiOS 9とOS X 10.11以降に使用し2016年1月にオープンソース化した類似のアルゴリズム
参考文献[編集]
- ^ “Releases - facebook/zstd”. 2022年11月28日閲覧。
- ^ a b Zstandard - Real-time data compression algorithm
- ^ Sergio De Simone, Facebook Open-Sources New Compression Algorithm Outperforming Zlib / InfoQ, Sep 02, 2016
- ^ “Life imitates satire: Facebook touts zlib killer just like Silicon Valley's Pied Piper”. The Register. (2016年8月31日) 2016年9月6日閲覧。
- ^ a b RFC 8878
- ^ Smaller and faster data compression with Zstandard - Engineering at Meta
- ^ a b arch-dev-public RFC: (devtools) Changing default compression method to zstd
- ^ a b c d Arch Linux - News: Now using Zstandard instead of xz for package compression
- ^ Release Zstandard v1.3.4 - faster everything · facebook/zstd
- ^ https://github.com/facebook/zstd/blob/master/doc/zstd_compression_format.md#entropy-encoding
- ^ zstd/PATENTS "Additional Grant of Patent Rights Version 2", Facebook
- ^ "Zstd v1.3.1 release", GitHub
- ^ "New license", GitHub
- ^ a b c zstd compression for packages - ubuntu devel
- ^ Hello zstd compressed .debs in Ubuntu! | Obsessed with reality
- ^ tar-1.31 released stable
- ^ Release Feature and Security Release · libarchive/libarchive
外部リンク[編集]
- 公式ウェブサイト
- zstd - GitHub
- RFC 8878
- Zstandard Overview - Zstandard アルゴリズムの概要(英語)
- Smaller and faster data compression with Zstandard Facebook Announcement(英語) - "Zstandardによるより小さく、速い圧縮"
- 英ガーディアン紙はzlibの代わりにZStandardを使用している旨の記事