Skip to content

Linux完全対応、PDeflate Huffman圧縮率向上、GPU堅牢性強化#14

Open
soichi11208 wants to merge 1 commit into
bea4dev:mainfrom
soichi11208:linux-gnome-huffman-improvements
Open

Linux完全対応、PDeflate Huffman圧縮率向上、GPU堅牢性強化#14
soichi11208 wants to merge 1 commit into
bea4dev:mainfrom
soichi11208:linux-gnome-huffman-improvements

Conversation

@soichi11208
Copy link
Copy Markdown
Contributor

@soichi11208 soichi11208 commented May 29, 2026

Summary

  • Linux完全対応: GNOME(Nautilus)/Cinnamon(Nemo)/MATE(Caja) の右クリック Scripts 連携を追加(KDE Dolphin と同等)。Unix 非UTF-8ファイル名(Shift-JIS等)の ZIP 相互運用を双方向で成立させた。install.sh / uninstall.sh を3デスクトップ環境対応に拡張。
  • GPU堅牢性: COZIP_DISABLE_GPU キルスイッチを cozip_deflate / cozip_pdeflate 双方の GPU 初期化経路に追加(ヘッドレス/ドライバ不良/CI で透過的に CPU フォールバック)。
  • PDeflate 圧縮率向上(後方互換): identity LUT(実質無圧縮)だった Huffman 経路を本物の正準 Huffman に配線。チャンク毎に min(huffman, plain) を採用(フラグはチャンク単位=後方互換)。推定利得 ≥5% のチャンクだけ実エンコードするゲートで圧縮速度の劣化を回避し huffman_encode_enabled を既定 ON 化。効果: 偏ったリテラルデータで約8〜17%圧縮率向上、bench データは速度・比率ともベースライン同等。

Changes

  • packaging/linux/filemanager-scripts/ — 新規: GNOME/Nemo/Caja 向け Scripts(5アクション+共通ヘルパー)
  • packaging/linux/install.sh / uninstall.sh — 3デスクトップ環境対応に拡張
  • src/cozip/src/lib.rszip_name_part_from_os_str / decode_unix_filename_bytes を追加しUnix非UTF8パス名を正規化
  • src/cozip_deflate/src/gpu.rsgpu_disabled_by_env()COZIP_DISABLE_GPU チェックを追加
  • src/cozip_pdeflate/src/pdeflate/gpu.rsCOZIP_DISABLE_GPU チェックを追加
  • src/cozip_pdeflate/src/pdeflate/mod.rs — 正準 Huffman 配線、limit_code_lengths、セクション ceil(bits/8) デコード、デフォルト ON 化、関連テスト追加
  • README.md / README.ja.md / docs/context-log.md — ドキュメント更新

ひとまずの動作テストはしてある

## Linux対応
- Unix非UTF8パス名(Shift-JIS等)をZIP作成時にUTF-8へ正規化し、Windows相互運用を双方向で成立させた
- GNOME(Nautilus)/Cinnamon(Nemo)/MATE(Caja) 向けの右クリック Scripts 連携を追加(KDE Dolphinサービスメニューと同等)
- install.sh / uninstall.sh を上記3デスクトップ環境対応に拡張

## GPU堅牢性
- COZIP_DISABLE_GPU キルスイッチをcozip_deflate/cozip_pdeflateの両GPU初期化経路に追加(ヘッドレス/ドライバ不良/CIで確実にCPUへフォールバック)

## PDeflate 圧縮率向上(後方互換)
- identity LUT(実質無圧縮)だったHuffman経路を本物の正準Huffmanに配線
- チャンク毎にHuffman版と素版を比較し小さい方を採用(フラグはチャンク単位=後方互換)
- 推定利得≥5%のチャンクだけ実エンコードするゲートで圧縮速度の劣化を回避
- huffman_encode_enabledを既定ON化
- 効果: 偏ったリテラルデータで約8〜17%圧縮率向上、benchデータは速度・比率ともベースライン同等
@bea4dev
Copy link
Copy Markdown
Owner

bea4dev commented May 30, 2026

ありがとうございます。
ただ、あらかじめ断っておくとPDeflateは今後実装予定のLZMA2の実装がうまく行けば廃止する可能性が高いです。
その点だけご理解ください。
レビューは後ほど行います。
問題なければそのままマージします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants