Skip to content

ARCHITECTURE · 02

The pipeline.

How an official Ruby release becomes a runtime package, and how a runtime package becomes your single executable — across the tamatebako fleet, each repo shipping its own versioned artifact.

ruby-lang.orgofficial Ruby source tarballsrelease monitor · daily crontamatebako/rubycanonical patches + versions.ymlrelease-src → tfs-ruby-<v>-src-<scenario>.tar.gzv0.2.1 · 76 scenario assets · SHIPPEDrepository_dispatchtebako-runtime-rubybuilds in tebako-ci-containers · links libtfs→ executable + .tfs image (rolling out)v0.15.9 · 114 packages + manifest.json · SHIPPEDresolve via manifest.jsonpress · gem + tebako-cliimage the app · bundle bootstrap + slots+ trailer — golden byte-parity, both packagerslean / fat / classic · SHIPPEDsingle executableone file · zero dependenciesdwarfs-tthrift-free DwarFS fork · C++high-compression read-only FSfoundation · SHIPPEDlibtfstebako_fs_* ABI · 24 exports · multi-mountmkdwarfs · tebakofs binariesv0.13.0 · SHIPPEDlinksmkdwarfs · tebakofstebako-bootstrapthe C99 launcher — part A of thethree-part packagev0.2.0 · 6 platforms · SHIPPEDEvery arrow crosses a repository boundary — each stage consumes the previous stage's published release,never its source tree. Windows runtime legs ship once the msys scenario source (already published) is consumed.

Stage by stage.

Each row names the artifact you can download and verify today — or marks the gap as planned.

STAGEREPOWHAT IT SHIPSSTATUS
Upstreamruby-lang.orgOfficial Ruby source tarballs — the ultimate input of the whole chain.EXTERNAL
Release monitortamatebako/ruby · release-monitor.ymlDaily cron: diffs official releases against versions.yml, onboards new rubies (lint → PR → tag → src release → runtime dispatch), files a named issue when a patch drifts.SHIPPED
Patched sourcetamatebako/rubyv0.2.1: 76 scenario src tarballs — 19 rubies × { linux-gnu (unsuffixed), linux-musl, msys-pass1, msys-pass2 } — plus SHA256SUMS. The only place patches are ever applied.SHIPPED
Runtime factorytebako-runtime-rubyv0.15.9: 114 runtime packages (19 rubies × 6 POSIX platforms) + manifest.json + SHA256SUMS.txt. Builds patched source in tebako-ci-containers, links prebuilt libtfs, embeds the modern-API entry driver. Rolling out: a .tfs runtime image published alongside each executable (the runtime-as-image split).SHIPPED
VFS enginelibtfsv0.13.0: modern-only tebako_fs_* ABI (24 exports, multi-mount), pluggable dwarfs/squashfs/zip backends, and the mkdwarfs + tebakofs binaries — now also the parity oracle for the Rust tfs crate.SHIPPED
Compression foundationdwarfs-tThe thrift-free DwarFS fork underneath libtfs. C++ forever by decision; never archived — it is the foundation, not a legacy repo.SHIPPED
Bootstraptebako-bootstrapv0.2.0: six platform launchers (32 KB – 908 KB) — part A of every lean/fat package.SHIPPED
Build infrastructuretebako-ci-containersThe container images the runtime matrix builds in.SHIPPED
Packagertebako gempress (lean/fat/classic), scenario + Gemfile handling, runtime/bootstrap resolution, cache CLI. The reference implementation of press semantics — retires at 0.15.x once the Rust CLI ships releases.SHIPPED
Packager (Rust)tebako-rs · tebako-cliThe self-hosting CLI: lean/fat press + cache, golden byte-parity with the gem, everything in-process (tebako-http downloads, dwarfs-t Writer images). Code shipped; distribution arrives with the tebako-rs release pipeline.SHIPPED
Cross-repo dispatchlibtfs → tebako-runtime-rubyToday only ruby → src → runtime is automated (the monitor). A libtfs release triggering runtime rebuilds is designed but not yet wired.PLANNED

Why so many repos?

Because each artifact has its own cadence and its own contract. Patched Ruby source changes when Ruby changes; runtimes change when libtfs or the source changes; the gem changes when press semantics change. Versioned releases at every boundary mean any stage can be rebuilt, pinned, or audited without touching the others — and the manifest.json contract means the packager never hardcodes a runtime matrix.