Skip to content

Releases: plokijuter/7zip

7-Zip 26.02 + Transpose filter (allocated ID 04 F7 13 01)

Choose a tag to compare

@plokijuter plokijuter released this 05 Sep 20:41

7-Zip 26.02 with an added Transpose filter for data made of fixed-size records:
sensor logs, struct arrays, PCM audio, numeric tables.

Method ID 04 F7 13 01, allocated by Igor Pavlov. This replaces the short ID 0C
used by the previous release,
which was reserved for the 7-Zip and xz developers and should not have been taken.
Archives written by that release are not readable by this one, and vice versa.

What is new since v26.02-transpose-1

  • allocated method ID 04 F7 13 01 instead of the reserved 0C
  • the GUI now offers anyz2 (Transpose) under Preprocessing, separate from the
    compressor choice, so the dictionary and order settings go to LZMA2 / LZMA / PPMd
    instead of being applied to a filter that has no such parameters
  • full Windows package (7zFM.exe, 7zG.exe, 7z.exe, 7z.dll), not just the CLI

Usage

7z a -t7z -m0=Transpose -m1=PPMd:o=16 archive.7z file    # R detected automatically
7z a -t7z -m0=Transpose:15 -m1=PPMd:o=16 archive.7z file # R forced

The filter is a preprocessor: pair it with a real coder (PPMd, LZMA, LZMA2) as -m1.
Archives are only readable by a build that has this filter.

In the GUI, pick anyz2 (Transpose) in Preprocessing and the compressor separately.

Verification

  • 12 288 stream round trips: every R from 1 to 256, block boundaries, three read/write modes
  • 58 archives across LZMA2 and PPMd, plus an AES/BCJ control, all extracting byte-identical
  • GUI checked under Wine: an archive created from the dialog reports
    Method = Transpose PPMD:o16:mem22 and extracts identical to the original
  • compiles clean under -Werror -Wall -Wextra

Files

file
7zip-anyz2-windows-x64.zip Windows x64, run 7zFM.exe
7z-linux-x64, 7z-linux-x64.so Linux x64 CLI and codec library
transpose-integration.patch the integration commit alone
transpose-filter.patch the whole branch against upstream main
SHA256SUMS checksums of the above

Upstream pull request: ip7z/7zip#245.

7-Zip 26.02 + Transpose filter (OBSOLETE — used the reserved ID 0C)

Choose a tag to compare

@plokijuter plokijuter released this 30 Aug 22:38

⚠️ Obsolete release — do not use these binaries

They register the filter at the short ID 0C, which is reserved for the 7-Zip and
xz developers. That was my mistake. Igor Pavlov has since allocated
04 F7 13 01 for this filter, and the current code uses it.

Archives written by these binaries are readable only by these binaries. Keep them
if you have such archives; do not create new ones. Current work is on the
transpose-filter branch.

7-Zip 26.02 with an added Transpose filter (method 0Creserved ID, see warning above) for data made of fixed-size records: sensor logs, struct arrays, PCM audio, numeric tables.

Measured with PPMd:o=16 behind the filter:

data PPMd alone with filter
int32 ascending array (240 KB) 98 450 2 442 40x
16-byte struct records (800 KB) 298 654 8 583 35x
fixed-record .dat file (450 KB) 76 019 20 975 3.6x
4x float32 sensor log (48 MB) 41 876 772 11 721 960 3.6x
random data / text identity, untouched

On the 48 MB sensor log that is 39% smaller than xz -9e and 66% smaller than zstd -19.

Usage

7zz a -t7z -m0=Transpose -m1=PPMd:o=16 archive.7z file    # R detected automatically
7zz a -t7z -m0=Transpose:15 -m1=PPMd:o=16 archive.7z file # R forced

The filter is a preprocessor; pair it with a real coder as -m1. Archives are only readable by a build that has this filter — a stock 7-Zip answers ERROR: Unsupported Method. Method ID 0C is an unassigned slot claimed by this fork, not an official allocation.

Assets

file
7zz-linux-x64 Linux x86-64, built with gcc
7zz-windows-x64.exe Windows x86-64, cross-compiled with mingw-w64, static
transpose-filter.patch the complete diff against upstream 26.02 (git apply)
commits.tar.gz the same work as two git am-able commits
SHA256SUMS checksums for all of the above

Source: branch transpose-filter · diff main...transpose-filter · upstream PR ip7z/7zip#245

Verification

60 real files of assorted types, forced R from 2 to 256, sizes 0/1/100/4095/4096/65535/65536/200000, a 48 MB stream, and archives written by an earlier property-format build: all extract byte-identical. Archives written on Linux extract on Windows and back, verified by SHA-256. Compiles clean under -Werror -Wall -Wextra.