Stackpack is a program to build compresion pipelines and create your own file formats.
Currently unavailable as bsc_m03_sys hasn't been released (by me) yet.
stackpack has a very rich CLI. Basic commands include:
# process a single file
$ stackpack encode <input> <output> [ --using "pipeline -> string" | --from_file <path to pipeline file> | --preset <preset name> ]
# undo process a single file
$ stackpack decode <input> <output> [ --using "pipeline -> string" | --from_file <path to pipeline file> | --preset <preset name> ]
# test roundtrip process of single file
$ stackpack test [ --using "pipeline -> string" | --from_file <path to pipeline file> | --preset <preset name> ]
# test rountrip of many files
$ stackpack corpus <path>
# pipeline management
$ stackpack pipeline [ --list-compressors | --list-plugins ]Stackpack currently ships with 5 built-in compressors and a plugin system allowing you to make your own plugins. An example plugin can be found in the sample_plugin directory. Currently, the only requirements are the 4 static symbols for name, description, encode and decode implementations.
Already implemented compressors are:
- Arithmetic Coding
- Burrows Wheeler Transform by Ilya Grabnov (using libsais)
- Bsc-m03 by Ilya Grebnov
- Move-to-Front transform
- implement generic bytestream decoders to work with things easier
- image decoders for custom image formats
- embedding pipelines in files (semantic versioned, hash of the dynamic library or something?)
- compressors that already have bindings in rust, feature gated