世界を動かす技術を、日本語で。

Windows用の「7-Zip」が圧縮に64以上のCPUスレッドを使用できるようになりました

概要

  • 7-Zipは 圧縮・解凍ソフトウェア であり、定期的に多くの機能追加・バグ修正が行われている。
  • マルチスレッド対応強化 や圧縮速度の向上、辞書サイズの拡大など、パフォーマンスと互換性が進化。
  • 新しい 圧縮形式やフィルタ、ハッシュアルゴリズムへの対応が継続的に追加。
  • ユーザーインターフェースやファイル管理機能も 改良 されている。
  • セキュリティ修正 や安定性向上も随時対応。

7-Zip 主なバージョンアップ履歴

  • 25.00 (2025-07-05)

    • Windows版で 64スレッド超のCPU 利用対応。複数プロセッサグループ対応。
    • bzip2圧縮速度 が15~40%向上。
    • deflate(zip/gz)圧縮速度 が1~3%向上。
    • zip, cpio, fatアーカイブの サポート改善
    • バグ・脆弱性修正
  • 24.09 (2024-11-29)

    • LZMA/LZMA2のデフォルト辞書サイズ 拡大。64bit版は最大256MBまで対応。
    • SHA-512, SHA-384, SHA3-256, MD5 のハッシュ計算対応。
    • APM, HFS サポート強化。
    • 一時フォルダ利用時の 進捗表示 改善。
    • Zone.Identifier ストリーム伝播バグ修正。
    • その他バグ修正。
  • 24.08 (2024-08-11)

    • zipアーカイブ作成時の余分なゼロバイト出力バグ修正
    • GDIオブジェクトリーク の修正。
    • ファイルアイコン表示の 最適化
    • CVE-2024-11612 対応。
  • 24.07 (2024-06-19)

    • 一部不正なZSTDアーカイブでの クラッシュバグ修正 (CVE-2024-11477)。
  • 24.06 (2024-05-26)

    • 一部ZSTDアーカイブが 解凍できないバグ修正
  • 24.05 (2024-05-14)

    • -myv={MMNN} スイッチで7zアーカイブのデコーダ互換バージョン指定可能。
    • -myfa, -myfd スイッチで特定フィルタの使用可否を指定可能。
    • バグ修正。
  • 24.04 (2024-04-05)

    • ファイルマネージャーに 「一時ファイル削除」メニュー 追加。
  • 24.03 (2024-03-23)

    • RISCVフィルタ でRISC-V向け実行ファイルの圧縮率向上。
    • ARM64版Windowsで LZMA/LZMA2復号速度 20~60%向上。
    • メモリ使用上限指定や RAR大辞書サイズ対応
    • XXH64, BLAKE2sp ハッシュメニュー表示。
    • タイムスタンプの UTC表示切替
    • Linuxパスセパレータ 表示対応。
    • バグ修正。
  • 24.01 (2024-01-31)

    • ZSTDアーカイブ (.zst)解凍対応。
    • ZIP, SquashFS, RPMの ZSTD圧縮対応
    • XXH64 ハッシュ対応。
    • WinRAR 7.00の 4GB超辞書RAR 解凍対応。
    • DMGのXZ圧縮 対応。
    • NTFS, MBR, GPT イメージ対応強化。
    • アーカイブ解凍・ハッシュ計算の 速度最適化
    • Linux版の マルチボリューム作成バグ修正
    • その他バグ修正。
  • 23.01 (2023-06-20)

    • 翻訳情報表示 機能追加。
    • バグ修正。
  • 23.00 (2023-05-07)

    • ARM64フィルタ でARM64実行ファイル圧縮率向上。
    • exe/dll判別による 自動フィルタ選択
    • BCJ2フィルタのデフォルトセクションサイズ拡大
    • UDF, cpio, WIM サポート強化。
    • マルチボリュームアーカイブの 同時オープンファイル数削減
    • エクスプローラーコンテキストメニュー最適化
    • ドラッグ&ドロップ操作改善
    • 複数のバグ修正。
  • 22.01 (2022-07-15)

    • UDF 2.60 サポート。
    • HFS, APFS サポート強化。
  • 22.00 (2022-06-15)

    • APFS抽出対応
    • POSIX(pax)形式TARアーカイブ作成
    • 高精度タイムスタンプ 記録対応。
    • Linux版で 所有者/グループID・名記録スイッチ 追加。
    • Zone.Identifier伝播 オプション追加。
    • アーカイブ作成時の メタデータ選択機能
    • バグ修正。
  • 21.07 (2021-12-26)

    • VHDXディスクイメージ 抽出対応。
    • ディレクトリ除外スイッチ -spm, -im! 追加。
    • アーカイブ内のファイルソート順改善。
    • TARアーカイブの GNU TAR互換性向上
  • 21.06 (2021-11-24)

    • 「アーカイブ追加」ウィンドウで RAM使用上限設定 可能。
    • -mmemuse スイッチで圧縮/解凍時のRAM上限指定。
    • ディレクトリ属性未設定バグ修正。
    • バグ修正。
  • 21.04 beta (2021-11-02)

    • RAM不足時のスレッド数自動調整
    • sha256sum互換ファイル作成・検証 対応。
    • -shd スイッチで検証用ディレクトリ指定。
    • -xtd スイッチでディレクトリメタデータ除外。
  • 21.03 beta (2021-07-20)

    • LZMA/LZMA2最大辞書サイズ4GB に拡大。
    • 圧縮速度の小規模最適化。
  • 21.02 alpha (2021-05-06)

    • zipアーカイブに UTF-8ファイル名フィールド追加
    • macOS版コマンドライン リリース。
    • ARM64版で LZMA/LZMA2復号速度向上

今後の展望

  • マルチコア・大容量メモリ環境 への最適化が進行中。
  • 新しい圧縮形式やフィルタ への対応が続く見込み。
  • セキュリティ・安定性 の強化は今後も重点。
  • ユーザビリティ向上 のための機能追加・改善が期待される。

この履歴は、7-Zipの 進化の流れ と、ユーザーの利便性・パフォーマンス・セキュリティ向上への継続的な取り組みを示す内容。

Hackerたちの意見

Windowsに制限があるのはなんで?Linuxにはそんな制限見当たらないんだけど。

これ、一般的なWindowsの仕様みたいだね。https://learn.microsoft.com/en-us/windows/win32/procthread/p...によると、64CPU以上で動かしたいアプリは、そのための専用サポートが必要らしいよ。

Windowsにはプロセッサグループって概念があって、最大64個の(ハードウェア)スレッドを持てるんだ。7zipが複数のプロセッサグループをサポートするようにアップデートされたんじゃないかな。

リンク先のプロセッサグループのドキュメントにも書いてあるね。> 「プロセッサアフィニティマスクやプロセッサ番号を使う関数を呼ばないアプリケーションは、プロセッサの数に関係なくすべてのシステムで正しく動作します。」7zipが直面した制限は、システムに論理プロセッサがいくつあるかをチェックする方法にあったんじゃないかな。GetActiveProcessorCountを使えば、ALL_PROCESSOR_GROUPSを渡すことでシステムの論理プロセッサ数がわかるけど、このAPIはWindows 7で追加されたんだよね(それも15年以上前の話だけど、もう少し早く条件付き呼び出しを追加してテストする時間があったんじゃないかな)。

もしかしてWaitForMultipleObjectsの64(MAXIMUM_WAIT_OBJECTS)の制限が関係してるのかな?最初はLinuxの同等品より優れているように見えるAPIなのに、ちょっと残念な制限だね。

NTカーネルの多くの同期プリミティブは、CPUセットのレジスタ幅ビットマスクに基づいているから、64ビットシステムでは64個のハードウェアスレッドの集まりがそれぞれ独自のスケジューラインスタンスで動いている感じなんだ。残念ながら、これらの操作はマクロやインライン関数として実装されているから、ドライバーABIの一部でもあるんだよね。そのせいで、ソフトウェアスレッドを別のプロセッサグループに移すのは、ユーザースペースで管理しなきゃいけない手動プロセスになっちゃう。

WindowsはひどいOSだよね。

WaitForMultipleObjectsは64に制限されてるし…ずっと前からそうだよ。

zstdサポートがないせいで7-Zipが relevanceを失うんじゃないかと心配してる。zlibのパフォーマンスは大きなファイルには耐えられないし、zlib-ngのSIMD実装もほんの少ししか役に立たない。残念だな、7-Zipは暗号化やファイル分割機能があって、かなり素晴らしいコンテナフォーマットなのに。

https://github.com/mcmilk/7-Zip-zstd

zstdに興味がある人はあんまりいないと思う。ほとんどの7-zipユーザーは、GUIの便利さを重視してるんじゃないかな。

ちょっと速くなったり効率が良くなったりしても、ほとんどの人は乗り換えないよ。7zは素晴らしいユーザー体験(便利なGUIと多くのフォーマットに対応)を提供してるから、みんな使い続けるんだよね。

効率が大事なプログラミングの仕事ではZSTDをたくさん使ってる。でも、他の人とファイルを共有する時はZIPがやっぱり王様だね。7zやRARはニッチだし。みんなZIPファイルは開けるし、ファイルが数MB大きくてもあんまり気にしないよ。

7-Zip Zstdを探してるんだね: https://github.com/mcmilk/7-Zip-Zstd 使い方は分からないけど、結構ニッチな感じだね。

WindowsチームがOSに詰め込むものより、7-Zipの方がいい仕事してるから安心だね。最新のWindows 11でも、7-Zipが数秒でやることに数分かかるからね。あのレトコードの面接がどれだけ役に立つか、証明してるよね。

Windows 11が2023年10月にlibarchiveを取り入れたから、Windowsで7-zipを使う理由が減ったね。友達の中でzipファイルが何か知ってる人がいるかも怪しいし、zstdなんて知らないだろうな。

zstdサポートのある7zipに似たツールがたくさんあるよ(実質プラグインみたいなもん)。企業向けのWindowsならNanaZipがいいかな、Windowsストアで手に入るし。他の環境では、直接zstdかtarを使うのがオススメ。

7-zipはWindowsでのデファクトツールで、長い間そうだったね。99%の人の使い方には十分速くて圧縮もバッチリ。しばらくはなくならないよ。むしろ、Windowsがzipやunzipの基本的なサポートを持つようになったから、7-zipの重要性が薄れるかもしれないね。EDIT: 他のフォーマット*も含めて。

なんでzstdを採用しないの?

macOSに移ってから、7-zipが恋しい。

PeaZipはどう?

ターミナルで使うプログラムのことを言ってるなら、homebrewでインストールできるよ。

Kekaもめっちゃいいよ! https://www.keka.io/

もう重要じゃないプログラムが、もう重要じゃないプラットフォームでほんの少しだけ強化されたって、64個以上のリアルコアを持つWindowsユーザーのためになってるだけだね。そんな大きなアーカイブを圧縮するために、64セクション以上に分けても圧縮率が大きく下がらない人たちに。これをhnに投稿するのに使った人間の労力は、説明してることが時間の終わりまでに節約するものよりも多いよ。

7zipユーザーの1%に対する1%の速度改善は、君のコメントより何倍も生産的だよ。

https://xkcd.com/619/

7zipはモバイルのlimbo x86でめっちゃ便利だよ。termuxのqemu-utilsでqcow2パーティションをIMGに変換すれば、7zipがIMGファイルを読めるから。エミュレートしたWindowsから抽出できるか、試してみて!

pbzip2を使ったことがあるけど、7zipが取ってるのと同じ並列ブロック圧縮のアプローチだね(AIが変化を分析してる)。理論的には圧縮効率は低いけど、実際には違いに気づいてないな。

これが関連する質問かは分からないけど、「zip」って言葉はzipディスクドライブと同じ由来なの?

いや、zipフォーマットはzipディスクよりずっと前からあるよ。

最初はNanaZipに移行したけど、今はWindowsが7zフォーマットをネイティブでサポートしてるから、もう必要ないかも。

それってどういうこと?圧縮サイズが分かる前にディスクに書き込むことはできないよね。もし書き込むならデータ記述子を使うけど、同時に書き込むことはできない。おそらく、圧縮ストリームをRAMにバッファリングしてからzipに書き込んでるんだと思う。もしzipを安定させたい(同じ入力に対して常に同じ出力を得るためには)、RAMに必要以上に少し長く保持する必要があるんだよね。

圧縮に使うスレッドの数によって、できる圧縮ファイルが変わると思うよ。