Repository navigation
Releases: tac0mania/taco
Release list
Taco 0.1.0 alpha 1: proof of concept (same bytes on every machine)
Taco 0.1.0, alpha: a proof of concept. A lossless compressor with a language model (GPT-2) whose engine uses integer arithmetic only, so every CPU and GPU makes the same bits, and a file that one machine folds unfolds on every other machine.
Warning
This is an experiment. It is slow, and it is not a replacement for zstd or xz. Keep a second copy of each file that you fold.
Try it (nothing to build, nothing else to download)
- Download
taco-demo-0.1.0.zipbelow. It has the programs for macOS (Apple Silicon), Linux (x86-64) and Windows (x86-64), the model filegpt2.hsm(127 MB) and a one-command demo. - Unpack it and open a terminal in the folder
taco-demo-0.1.0. - Run
./try(macOS, Linux) ortry.cmd(Windows).
The demo folds and unfolds a short English text (3,672 bytes → 648 bytes) and prints the SHA-256 of the .taco file. It must be:
2fab1ef7a1c70cd4e39ddfd88a8d66389ae07a403111db131326ae425460652e
The proof: the same bytes on 7 backends
This release is about one property: the same bits on every machine. Speed and ratio come second. These programs folded and unfolded the demo sample on each backend below. Every fold gave the identical file, and every unfold restored the sample byte for byte (measured):
| Machine | System | Backend | .taco SHA-256 |
|---|---|---|---|
| Apple M2 | macOS (ARM) | CPU (NEON) | 2fab1ef7…652e |
| Apple M2 | macOS (ARM) | GPU (Metal) | 2fab1ef7…652e |
| AMD Ryzen 7 5800H | Linux x86-64 | CPU (AVX2) | 2fab1ef7…652e |
| NVIDIA RTX 3060 Laptop | Linux x86-64 | CUDA | 2fab1ef7…652e |
| AMD Ryzen 7 5800H | Windows x86-64 | CPU (AVX2) | 2fab1ef7…652e |
| NVIDIA RTX 3060 Laptop | Windows x86-64 | CUDA | 2fab1ef7…652e |
| NVIDIA RTX 3060 Laptop | Windows x86-64 | GPU (Vulkan) | 2fab1ef7…652e |
Run ./try on your machine and compare. A different hash is a bug: please open an issue with the output of ./taco --version.
To use your own files: ./taco fold notes.txt and ./taco unfold notes.txt.taco (Windows: taco.cmd).
Files
| File | Contents |
|---|---|
taco-demo-0.1.0.zip |
Everything: the three programs, the model, the demo, the licences |
taco-0.1.0-<target>.tar.gz / .zip |
One program only, with its man page, BUILDINFO and licences; no model file |
SHA256SUMS |
The SHA-256 of each file |
To build the same program from source and check that it gives the same hash, see "Try it, B" in the README.
Known issues in alpha.1 (fixed on main, not in these programs)
- The default fold uses the CPU.
taco foldwith the default profileauto(and--profile logs) folds on the CPU even when a GPU is present. The output bytes are the same; only the speed differs (a 171 KB log: 209 s here, 4.5 s with the fix). For text,--profile textfolds on the GPU. - A crafted
.tacofile can use much memory in GPU unfold (finding F2 indocs/security.md): about 11 GB, until the system stops the program. Normal files do not do this, and no data is lost. For files from sources that you do not trust, usetaco unfold --backend cpu.
Known limits
- Slow. With a GPU (RTX 3060): fold 85 to 129 KB/s, unfold 26 to 31 KB/s for English. CPU only: fold 0.3 to 2 KB/s, unfold 0.1 to 0.5 KB/s (measured).
- Not the best ratio. On
alice29.txt, ts_zip is 44 % smaller than Taco (published). Taco's point is the open, integer-only specification that tests show gives the same bits on every machine. - English only. Binary files are stored with zstd or raw.
- The checksum finds an error; it cannot repair one. Keep the original until you have unfolded the
.tacofile one time. - Not signed. macOS and Windows can warn about the programs;
demo/README.mdsays what to do.
How this was made
Most of the code, the tests and the documents were written by Claude (an AI model by Anthropic) with Claude Code, under the direction of the author, to get to results faster. The tests are the evidence: conformance vectors, the cross-machine check, fuzzing, and the comparison of each fast path with the reference path.
Programs built from commit 38e4145 (BUILDINFO in each archive records it); later commits change only documents and demo scripts. Licences: Apache-2.0 (Taco); the model is converted from GPT-2 by OpenAI (Modified MIT License, in MODEL-LICENSE.txt).