web-dev-qa-db-ja.com

bzip1はどうなりましたか?

bzip2は、すでに何年にもわたって非常に強力な圧縮のデファクト標準でした。私自身はbzip2これまでに何千回もコマンドを実行しているので、bzipまたはbzip1はどうなったのでしょうか。グーグルはそれについて私に多くを話さないようで、それは興味深い歴史のレッスンであるように思えます。

40
d33tah

オリジナルのbzipは、使用されている算術圧縮の特許問題のために1998年頃に引っ張られたようです。少し掘り下げて(実際にはWikipediaだけを読んで)、アーカイブされたリンクを bzip2この時期のウェブサイト

これは、このセクションとその他の違いの詳細を示す関連セクションです。

以前の製品(bzip-0.21)とどのように関連していますか?

bzip2は、0.21の書き直しおよび再設計されたバージョンです。見た目はかなり似ていますが、ほぼ完全に書き直されています(数回:-)。重要な違いは次のとおりです。

  • 特許なし! (私は願っています。上記の説明を参照してください)。 bzip-0.21は算術コーディングを使用しました。 bzip2はハフマンコーディングを使用します。これは、一般的に特許の観点から問題のないものと見なされています。どちらのプログラムもBurrows-Wheeler変換に基づいていますが、私の知る限り、それも特許を取得していません。

  • 特に解凍時に、より高速です。 bzip2は、主にハフマンコーディングを使用しているため、0.21よりも50%以上速く解凍されます。それほどではありませんが、圧縮速度も改善しました。おそらく、0.21よりも30%速く圧縮されます。

  • メディアエラーからの回復。どちらのプログラムも、デフォルトで900kの長さのブロック単位でデータを圧縮します。 bzip2を使用すると、各ブロックは完全に独立して処理され、独自のチェックサムを持ち、48ビットのシーケンスで区切られます。したがって、圧縮ファイルが破損している場合、bzip2は圧縮ブロックを抽出し、破損していないブロックを検出して解凍します。

  • テストモード。圧縮ファイルを解凍することなく、整合性をテストできます。私はこれを0.21に入れるべきだったのですが、あまりにも怠惰でした(+それをリリースするまでにハッキングで燃え尽きました)。

  • 非常に繰り返しの多いファイルをより適切に処理します。このようなファイルは、ブロック分類コンプレッサーにとって最悪のケースです。このようなファイルでは、bzip2は0.21の約10倍の速度で実行されます。

  • 小型マシンのサポート。 bzip2は、2300kで作成したファイルを解凍できます。つまり、4メガのマシンでファイルを解凍できます。圧縮中のピークメモリ使用量も、0.21と比較して約900k削減され、約6400kになります。

  • フラグ処理の改善。特に、長いフラグ(--thisなど)がサポートされているため、使いやすくなっています。

  • 0.21が出力していた1行の起動メッセージが表示されなくなりました。これは0.21の最も不満の多い機能でした。最近ではバグmeも発生します。

0.21を配布することはもうありません。配布すると、特許に関する問題が永続化し、プログラムが広く使用されることがなくなるためです。便利なプログラムで、多くの人が気に入っているようです。すでに0.21を使用している場合は、bzip2にアップグレードしてください。残念ながら、bzip2が0.21の.bzファイルを解凍できるようにすることはできません。これは、特許回避の練習が無意味になるためです。ファイル形式を変更するのは大変です。これからは、下位互換性のある方法でさらに変更を加えてみます。

これは、bzipソースコードの解凍専用バージョンへの link でもあります。

32
Graeme