Skip to content

Quickstart Strange Things

Franco Corbelli edited this page Sep 3, 2023 · 1 revision

WARNINGS

Some strange warnings with some compilers (too old, or too new), not MY fault

STRANGE THINGS

NOTE1: -, not -- (into switch)

NOTE2: switches ARE case sensitive. -maxsize <> -MAXSIZE

THE JIT (just-in-time)

zpaqfranz can translate ZPAQL opcodes into "real" Intel (amd64 or x86+SSE2) code, by default
On other systems a -DNOJIT (arm CPUs for example) will enforce software interpration

SHA-1 HARDWARE ACCELERATION

Some CPUs does have SHA instructions (typically AMD, not very widespread on Intel).
So you can use a piece of 7-zip by Igor Pavlov (I am sure you know 7z) that is
not really useful, but just for fun (faster BUT with higher latency).
For performances reason, no run-time CPU compatibility checks, must be turn on
via optional -hw switch
On AMD 5950X runs ~1.86 GB/s vs ~951 MB/s
The obj can be assembled from the fixed source code with asmc64
https://github.com/nidud/asmc
asmc64.exe sha1ugo.asm Then link the .obj and compile with -DHWSHA1
Short version: not worth the effort for the GA release
From build 58+ there is a new -DHWSHA2, without linking of asm, that accelerate SHA256 too

STATIC LINKING

I like -static very much, there are a thousand arguments as to whether it is good or not. There are strengths and weaknesses. Normally I prefer it, you do as you prefer.

TO BE NATIVE OR NOT TO BE?

The -march=native is a switch that asks the compiler to activate all possible optimizations for the CPU on which zpaqfranz is being compiled. This is to obtain the maximum possible performance, while binding the executable to the processor. It should not be used if you intend, for some reason, to transfer the object program to a different system. If you are compiling from source you can safely use it.

DEBIAN (and derivates)

Debian does not "like" anything embedded https://wiki.debian.org/EmbeddedCopies zpaqfranz (on Windows) have two SFX modules (32 and 64)
and (every platform) a testfile (sha256.zpaq) for extraction autotest
(aka: weird CPUs)
It is possible to make a Debian-package-compliant source code
with some sed (or a single sed -e) (of course remove the |)

sed -i "/DEBIAN|START/,/\/\/\/DEBIA|NEND/d"  zpaqfranz.cpp
sed -i "s/\/\/\/char ext|ract_test1/char ext|ract_test1/g" zpaqfranz.cpp

Arch Linux

I strongly advise against using zpaqfranz on this Linux distro(s).
There is a bizarre policy on compiling executables.
Obviously no one forbids it (runs fine), but just don't ask for help.

Clone this wiki locally