Lightweight file archiver designed for maximum portability — from an 8088 PC running DOS to a modern x86-64 Linux box, including AmigaOS, Atari TOS, Classic Mac OS, RISC OS, Haiku, Plan 9, z/OS, and many more.
The archive core is strict ANSI C89 and compiles on virtually any system with a C compiler. Platform-specific concerns (file I/O, encoding, GUI) live in isolated frontends.
BoltPack is intended to run on real vintage hardware as well as modern systems, to ease data transfer and archival between platforms.
On AI assistance: this project was written with substantial help from AI tooling. Without it, the 40-platform scope would not have been reachable for a single author. The archive format, architecture, and portability rules are the author's; much of the implementation work was AI-assisted.
Pre-built binaries for the current release (v1.4) are below. Every release
also ships SHA256SUMS.txt for verification.
Source kits for platforms that require a native build (macOS, Solaris, IRIX, HP-UX, AIX, OpenBSD, RISC OS, MorphOS, AROS, Sinclair QL, Sharp X68000, Haiku, and others) are attached to the same release.
Verify a download against the release checksums:
sha256sum -c SHA256SUMS.txt --ignore-missingmake
./build/linux/boltpack c archive.bolt myfiles/ # create
./build/linux/boltpack l archive.bolt # list
./build/linux/boltpack x archive.bolt # extractFor maximum compression on a modern machine:
make modern
./build/linux/boltpack c -F archive.bolt myfiles/Run boltpack help for the full command list, or boltpack help advanced for
expert tuning switches.
| Flag | Method | ID | Description |
|---|---|---|---|
| — | miniLZO | 2 | Default — fast general-purpose compression |
-0 |
Stored | 0 | No compression; raw byte copy |
-1 |
LZSS | 1 | Small-memory LZ77; suited for 16-bit targets |
-F |
Fluff | 3 | High compression ratio; LZ77 + FSE/tANS |
-Z |
zstd | 4 | Best compression ratio; modern 32/64-bit only; zstd 1.5.7 |
Fluff supports compression levels 1–9 via -l N (default 8). When -F is used
without -b, block size is set to 256 KB automatically.
On OpenMP-enabled modern builds, selecting Fluff auto-enables multi-processor
compression for larger workloads. Use --single-thread to force the sequential
path; -j N and -g N tune thread count and grouping (see
boltpack help advanced). The Linux/Windows FLTK, macOS Cocoa, and Haiku GUIs
expose the same feature as a Use Multi-threaded Fluff toggle.
BoltPack targets over 40 platforms across 8 CPU families:
Linux · Windows · macOS · Classic Mac OS · AmigaOS · Atari TOS/MiNT · MS-DOS · CP/M-86 · OS/2 · RISC OS · Haiku/BeOS · Plan 9 · FreeBSD · NetBSD · OpenBSD · Solaris/Illumos · IRIX · HP-UX · AIX · Tru64 · NeXTSTEP/OPENSTEP · QNX · Hurd · OpenVMS · z/OS · MorphOS · AROS · AmigaOS 4 · Sinclair QL · Sharp X68000 · WebAssembly · and more
See docs/portability.md for the full platform table, CPU families, compiler requirements, and C89 coding constraints.
make # Linux x86-64 (default)
make modern # OpenMP-enabled Fluff encoder
make arm64 # Linux ARM64
make musl # static binary (musl libc)
make linux-gui # FLTK GUI
make win32 # Windows 32-bit (cross-compiled from Linux)
make win64 # Windows 64-bit (cross-compiled from Linux)
make cross-all # all cross-compilation targets
make cleanSee docs/BUILD.md for native build instructions across all platforms and cross-compilation details.
make test # unit tests + CLI integration tests
make unit-test # unit tests only
python3 test/check_boltpack.py --verbose # integration tests, verbose| File | Purpose |
|---|---|
| docs/architecture.md | Layer boundaries, core interfaces, and error codes |
| docs/specification-1.0.md | Normative archive and codec rules |
| docs/format.md | Concise .bolt / .blt archive format overview |
| docs/algorithms.md | LZSS, miniLZO, and Fluff implementation details |
| docs/portability.md | Supported platforms, C89 constraints, and toolchain notes |
| docs/frontends.md | Frontend responsibilities and platform integration guide |
| docs/BUILD.md | Native build procedures and platform-specific caveats |
| docs/mini.md | 16-bit mini variant architecture and capability limits |
docs/README.md is the documentation index. RELEASE-NOTES.md records what changed in each version.
src/core/ Archive core + compression layer (strict C89)
src/core/mini/ 16-bit mini variant core
src/frontend/ One frontend per platform
lib/ Vendored miniLZO 2.10 and zstd 1.5.7
docs/ Full documentation set
test/ Unit tests, integration tests, and fixtures
scripts/ Build, packaging, and release scripts
packaging/ Installer and package definitions
encodings/ Codepage conversion tables
magic/ file(1) magic definitions for .bolt archives
templates/ SDK and frontend templates
Bug reports, portability fixes, and new platform frontends are welcome. See
CONTRIBUTING.md for build and test steps, the non-negotiable
C89 rules for src/core/, and pull request expectations.
To report a security issue, see SECURITY.md — please do not open a public issue for vulnerabilities.
See CONTRIBUTORS.md for the project author and attributions for the third-party algorithms and libraries incorporated into BoltPack.
BoltPack is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License v2 — see LICENSE.md.
This distribution includes miniLZO 2.10 by Markus F.X.J. Oberhumer, also
licensed under GPL v2 (lib/minilzo-2.10/COPYING), and zstd 1.5.7 by Meta
Platforms / Yann Collet under the BSD 2-Clause license (lib/zstd/).
