Введение
Алгоритм сжатия, алгоритм сжатия LZX, является алгоритмом сжатия семейства LZ77 – немного улучшенной версией DEFLATE. Он также используется как название для файлового архиватора с тем же именем. И алгоритм, и архиватор были изобретены Джонатаном Форбсом и Томи Поутаненом в 1990-х годах.
the compression algorithm
LZX is an LZ77 family compression algorithm, a slightly improved version of DEFLATE. It is also the name of a file archiver with the same name. Both were invented by Jonathan Forbes and Tomi Poutanen in the 1990s.
Amiga LZX
LZX был публично выпущен как файловый архиватор для Amiga в 1995 году, когда его авторы учились в Университете Ватерлоо в Канаде. Программа распространялась по модели shareware, что было обычной практикой для программ сжатия в то время. В зарегистрированной версии содержались исправления и улучшения, недоступные в ознакомительной версии. В 1997 году авторы распространили бесплатный ключевой файл, который позволял любому использовать зарегистрированную версию, так как они прекратили разработку архиватора и перестали принимать регистрации.
Файлы Microsoft Cabinet
В 1996 году Форбс начал работать в Microsoft, и встроенный архиватор Microsoft был усовершенствован за счет добавления метода сжатия LZX. Улучшения включали возможность изменения размера окна поиска; для Amiga LZX размер был фиксированным – 64 КБ, а для Microsoft LZX он мог изменяться в пределах степеней двойки от 32 до 2048 килобайт (от 32 768 до 2 097 152 байт). Был добавлен специальный препроцессор для обнаружения инструкций "CALL" процессоров Intel 80x86, который преобразовывал их операнды из относительной адресации в абсолютную. Это приводило к тому, что вызовы одного и того же места в коде генерировали повторяющиеся последовательности, которые компрессор мог эффективно сжимать, улучшая степень сжатия бинарного кода 80x86. (Эта техника впоследствии была обобщена и получила название фильтрации Branch Call Jump [BCJ].)
Файлы сжатой помощи Microsoft HTML (CHM)
Когда Microsoft представила Microsoft Compressed HTML Help, замену своему классическому формату файлов справки, они выбрали алгоритм LZX для сжатия всех данных HTML. Однако, для повышения скорости произвольного доступа, компрессор был модифицирован таким образом, чтобы сбрасываться после каждого интервала в 64 килобайта (65 536 байт) и выравниваться по 16-битной границе после каждого интервала в 32 килобайта. Это позволяло программному обеспечению HTMLHelp сразу переходить к ближайшему интервалу в 64 килобайта и начинать декодирование с этого места, вместо того чтобы каждый раз декодировать с самого начала сжатого потока данных.
Файлы Microsoft Reader (LIT)
Файлы Microsoft LIT для Microsoft Reader — это, по сути, расширение формата файла CHM и, следовательно, также используют сжатие LZX.
Файлы Windows Imaging Format (WIM)
Windows Imaging Format, формат файлов образов установки/диска Windows Vista и Windows 7, использует LZX как один из методов сжатия.
Сжатие файлов CompactOS NTFS
В Windows 10 для новой технологии сжатия файлов CompactOS NTFS используется сжатие LZX из формата Windows Imaging Format.
Аватары Xbox Live
Microsoft использует сжатие LZX для аватаров Xbox Live, чтобы снизить требования к объему дискового пространства и пропускной способности сети.
Декомпрессирование файлов LZX
Программа unlzx и XAD могут распаковывать архивы Amiga LZX. Программа cabextract может распаковывать файлы Microsoft cabinet, использующие метод LZX. Существует множество кроссплатформенных инструментов для декомпиляции или просмотра файлов CHM, как указано в статье о CHM. Файлы LIT можно распаковывать с помощью программы Convert LIT.