Repository navigation
PJA 0.8.0
Ten new codecs in the zpaq-std plugin: every decoder -sa uses, 3 to 8% smaller and 2 to 6% faster in zpaq 7.15.
- The 8 codecs.
pja78,pjax78,pjals8,pjall8,pjalsx8and their z (pja7z8,pjax7z8,pjalsz8,pjallz8,pjalsxz8) are the codec named without the 8, with the same streams, the same files and the same memory, and a ZPAQL decoder compiled with the compiler's newopt=3: functions inlined where that saves bytes, one operand passed through a register in place of a temporary, and return values kept in a register. Every zpaq-std block carries its decoder, so the saving repeats in each block.
| codec | ZPAQL before | 8 |
|---|---|---|
| pja7 / pja78 | 35,104 | 32,954 |
| pja7z / pja7z8 | 35,829 | 33,603 |
| pjax7 / pjax78 | 35,211 | 33,197 |
| pjax7z / pjax7z8 | 35,987 | 33,949 |
| pjalso / pjals8 | 24,076 | 22,430 |
| pjalszo / pjalsz8 | 24,724 | 23,046 |
| pjallo / pjall8 | 15,058 | 13,901 |
| pjallzo / pjallz8 | 15,693 | 14,517 |
| pjalsxo / pjalsx8 | 25,623 | 24,611 |
| pjalsxzo / pjalsxz8 | 26,278 | 25,244 |
- Faster without the plugin. libzpaq (zpaq 7.15's engine) on the same data: 30 photos 69.3 -> 68.0 s, 18 MPO and 12-bit JPEGs 216.4 -> 206.2 s, 67 subsampled JPEG-LS 180.8 -> 170.4 s; every file back.
- Checked on Windows XP: the original zpaq 7.15 (32-bit, no plugin) extracts archives written with pja78, pjax78, pjals8, pjall8 and pjalsx8 byte for byte, and the x86 plugin round-trips every file with each of the ten.
- Nothing else changes. zpaq-std's
-satakes the 8 codecs in place of pja7, pjax7, pjall, pjals, pjalsx (and their z, and the o codecs) once it ships this plugin; those stay to read older archives. The.pjaformat and the streams are 0.7.0's: the command writes the same bytes. The wiki's zpaq-std plugin page has the codec families and names.
Downloads
| platform | the pja command |
the zpaq-std plugin | libpja (C library, 7-Zip plugin) |
|---|---|---|---|
| Linux x86-64 | pja-0.8.0-linux-x86_64.tar.gz |
pja-0.8.0-zpaqstd-plugin-linux-x86_64.tar.gz |
pja-0.8.0-lib-linux-x86_64.tar.gz |
| Linux x86 (32-bit) | pja-0.8.0-linux-x86.tar.gz |
pja-0.8.0-zpaqstd-plugin-linux-x86.tar.gz |
pja-0.8.0-lib-linux-x86.tar.gz |
| Linux arm64 | pja-0.8.0-linux-arm64.tar.gz |
pja-0.8.0-zpaqstd-plugin-linux-arm64.tar.gz |
pja-0.8.0-lib-linux-arm64.tar.gz |
| macOS arm64 | pja-0.8.0-macos-arm64.tar.gz |
pja-0.8.0-zpaqstd-plugin-macos-arm64.tar.gz |
pja-0.8.0-lib-macos-arm64.tar.gz |
| Windows x64 (7 and later) | pja-0.8.0-windows-x64.zip |
pja-0.8.0-zpaqstd-plugin-windows-x64.zip |
pja-0.8.0-lib-windows-x64.zip |
| Windows x86 (XP and later) | pja-0.8.0-windows-x86.zip |
pja-0.8.0-zpaqstd-plugin-windows-x86.zip |
pja-0.8.0-lib-windows-x86.zip |
pja-0.8.0-zpaqstd.tar.gz holds the plugin's sources as zpaq-std vendors them, with VENDOR.md. CI builds and checks every binary on its own platform (.github/workflows/release.yml); libpja is checked with its C test and, on Linux x86-64, through a real 7-Zip. SHA256SUMS has the checksums. The Linux builds need glibc 2.34 or later. The macOS ones are not signed: run xattr -d com.apple.quarantine after unpacking.