Что случилось с bzip1?


40

bzip2 был стандартом де-факто для довольно сильного сжатия на протяжении многих лет. bzip2До сих пор я сам набирал команду тысячи раз, что заставляет меня задуматься - что случилось с bzip или bzip1? Google, кажется, не говорит мне много об этом, и похоже, что это может быть интересным уроком истории.

Ответы:


32

Похоже, что оригинал bzipбыл извлечен примерно в 1998 году из-за патентных проблем с арифметическим сжатием, использованным в нем. Немного копания (на самом деле только чтение Википедии) обнаруживает заархивированную ссылку на bzip2сайт примерно в это время .

Вот соответствующий раздел подробно это и другие различия:

Как это связано с вашим предыдущим предложением (bzip-0.21)?

bzip2 - это переписанная и переработанная версия 0.21. Это выглядит внешне довольно похоже, но было почти полностью переписано (несколько раз :-). Важными отличиями являются:

  • Патентно-бесплатно! (Надеюсь; см. Утверждение выше). bzip-0.21 используется арифметическое кодирование; bzip2 использует кодирование Хаффмана, которое, как правило, считается проблематичным с точки зрения патента. Обе программы основаны на преобразовании Берроуза-Уилера, но, насколько мне известно, это также не запатентовано.

  • Быстрее, особенно при декомпрессии. bzip2 распаковывает более чем на 50% быстрее, чем 0,21, в основном из-за использования кодирования Хаффмана. Я также улучшил скорость сжатия, хотя и не так сильно - возможно, он сжимается на 30% быстрее, чем 0,21.

  • Восстановление от ошибок носителя. Обе программы сжимают данные в блоки по умолчанию длиной 900 КБ. С bzip2 каждый блок обрабатывается полностью независимо, имеет свою собственную контрольную сумму и ограничен 48-битной последовательностью. Таким образом, если у вас есть поврежденный сжатый файл, bzip2 может извлечь сжатые блоки, определить, какие из них не повреждены, и распаковать их.

  • Тестовый режим. Вы можете проверить целостность сжатых файлов, не распаковывая их. Я должен был поставить это в 0.21, правда, но было слишком лениво (+ сгорело от взлома к тому времени, как я его выпустил).

  • Обрабатывает очень повторяющиеся файлы гораздо лучше. Такие файлы являются худшим случаем для любого компрессора с сортировкой блоков. bzip2 работает примерно в десять раз быстрее, чем 0,21 для таких файлов.

  • Поддержка для небольших машин. bzip2 может распаковать любой файл, который он создает в 2300k, что означает, что вы можете распаковать файлы на 4-мегабайтных компьютерах. Пиковое использование памяти во время сжатия также уменьшено примерно на 900 КБ по сравнению с 0,21 до 6400 КБ.

  • Лучшая обработка флага. В частности, поддерживаются длинные флаги (--like --this), что упрощает использование.

  • Однострочное стартовое сообщение, которое напечатано в 0.21, пропало. Это была самая популярная особенность 0,21. Это даже беспокоит меня в наши дни.

Я больше не распространяю 0.21, потому что это увековечивает проблемы с патентами, что гарантирует, что программа никогда не будет широко использоваться. Это позор, потому что это полезная программа, и многим людям это нравится. Если вы уже используете 0.21, пожалуйста, обновитесь до bzip2. К сожалению, я не могу сделать так, чтобы bzip2 мог распаковывать файлы .bz 0,21, поскольку это сделало бы уклонение от патентов бессмысленным. Я знаю, что изменение форматов файлов является болезненным; с этого момента я постараюсь вносить любые дальнейшие изменения обратно совместимым способом.

Это также ссылка на версию bzipисходного кода только для декомпрессии для всех, кто хочет поиграть с ней.


5
Вероятно, у меня есть оригинальный bzip в некоторых архивах резервных копий. Я использовал его широко, и нашел переключение на bzip2 раздражает. В большинстве файлов bzip обеспечивает лучшую степень сжатия.
Жюль

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.