This compressor is based on fpaq0. It uses virtual machine to execute predictor. There are only linux executable files (x86), no soruce yet. fpaqvmnojit and fpaqvmjit. First one will execute user provided config file in virtual machine. File is translated into bytecode and then executed in vm. Second executable file translates input config file into bytecode and then emits x86 opcode and executes it.
There are two config files. test1.cfg uses fpaq0 model. test2.cfg uses fpaqc model. test1.cfg is identical to original compressor. Second one is not. There are some differences in encoder etc.
Config file language is subset of c.
Code:
$ ./fpaq0 c calgary.tar calgary.tar.fpaq0
calgary.tar (3152896 bytes) -> calgary.tar.fpaq0 (1903024 bytes) in 1.02 s.
$ ./fpaqvmjit c test1.cfg calgary.tar calgary.tar.fpaqvmjit
calgary.tar (3152896 bytes) -> calgary.tar (1903024 bytes) in 2.74 s.
$ ./fpaqvmjit c test2.cfg calgary.tar calgary.tar.fpaqvmjit
calgary.tar (3152896 bytes) -> calgary.tar (1682796 bytes) in 1.79 s.
$ ./fpaqvmnojit c test1.cfg calgary.tar calgary.tar.fpaqvmnojit
calgary.tar (3152896 bytes) -> calgary.tar (1903024 bytes) in 53.29 s.
$ ./fpaqvmnojit c test2.cfg calgary.tar calgary.tar.fpaqvmnojit
calgary.tar (3152896 bytes) -> calgary.tar (1682796 bytes) in 35.59 s.