Skip to content

Releases: tac0mania/taco

Taco 0.1.0 alpha 1: proof of concept (same bytes on every machine)

Choose a tag to compare

@tac0mania tac0mania released this 19 Oct 19:24

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)

  1. Download taco-demo-0.1.0.zip below. It has the programs for macOS (Apple Silicon), Linux (x86-64) and Windows (x86-64), the model file gpt2.hsm (127 MB) and a one-command demo.
  2. Unpack it and open a terminal in the folder taco-demo-0.1.0.
  3. Run ./try (macOS, Linux) or try.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 fold with the default profile auto (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 text folds on the GPU.
  • A crafted .taco file can use much memory in GPU unfold (finding F2 in docs/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, use taco 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 .taco file one time.
  • Not signed. macOS and Windows can warn about the programs; demo/README.md says 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).