Skip to content

Compression

YadeWira edited this page Oct 21, 2026 · 7 revisions

Compression and levels

Methods

All implemented in Pascal, with no external compression libraries:

storing, lzma, ppmd, grzip, dict, rep, delta, tor (Tornado), lzp, mm, tta, 4x4, exe (x86 BCJ), lz4, dispack070 (DisPack), srep (SREP) and cm (context mixing), alone or chained.

parc a x.parc data -mlzma
parc a x.parc data -m"srep+lzma:64mb:max"
parc a x.parc data -m"exe+dispack070+lzma"

Levels

  • -m0: store.
  • -m1…-m9: FreeArc-style presets, tuned in PArc for better ratio and speed than FreeArc 0.67.1 (see Benchmarks).
  • -mx: maximum ratio with fast decompression; uses PPMd for text and LZMA for binaries. Slightly smaller than -m9 and fast to extract.
  • -mxx: absolute maximum ratio; uses the context-mixing codec (cm) on text and binaries. 8–16% smaller than -mx, but decompression is 5–40× slower.
  • Default: -m4.

GRZip adapts its LZP parameters per block: BWT blocks of 4 MB or more use l64/h22, while small blocks keep the fast defaults. This is stored in the block mode, so existing archives remain readable.

Presets choose a method per file type (text, binary, already compressed, WAV/BMP, etc.) and group files into solid blocks. Without -s, PArc uses automatic 64 MB blocks for -m1…-m3 and 32 MB for -m4…-m9/-mx; -mxx keeps one block for maximum CM ratio. You can control blocking with -s- (non-solid), -se (by extension), -s<N>f (N files) or -s<N>m (minimum size). Independent data blocks are compressed in parallel (workers limited by PARC_THREADS). Extraction also decodes independent blocks in parallel before writing.

What to expect

  • -m1…-m3: fast, good for interactive use.
  • -m4/-m5: balance.
  • -m6…-mx: large text/binary sets; more memory and time. -mxx only when decompression time does not matter.

Local results and methodology are in Benchmarks. FreeArc external compressors (precomp, ECM, JPG, PPMonstr, Durilca, CCM, etc.) are out of scope.

Clone this wiki locally