JIB STATUS · 12 BUILDS · CI RUST 1.75+
REPO DOWNLOAD PARITY MIT
Real-Fruit-Snacks  //  multi-call binary  //  rust port of mainsail

JIB.

binary
~2 MB
applets
78 + jq/http/dig
builds
12 × FULL/SLIM
stack
Rust 1.75+
01 Premise

The Rust sail forward of mainsail.

mainsail is the Python reference — easy to embed, easy to read, easy to extend. The single thing it can't be is small and fast-startup at the same time: every invocation pays the Python cold-start price.

Jib is the leaner Rust companion. Same applet roster (78 at parity count), same flag conventions, same exit codes, same byte-for-byte stdout — verified by a Python↔Rust diff harness in CI. Native on Windows without WSL, Cygwin, or git-bash.

02 Specs

What's in the box.

BINARY
One ~2 MB stripped executable · 545 KB slim build · static via musl.
APPLETS
78 POSIX utilities + jq (subset) + http (HTTPS) + dig (DNS).
BUILDS
12 release binaries — Linux/Windows/macOS · x86_64 + ARM64 · full+slim.
FEATURES
slim · extras · hashing · archives · disk · network · json.
TESTS
29 native integration tests + 76+ parity cases vs Python mainsail.
STACK
Rust 1.75+ · Cargo · rustls for HTTPS · zero-warning clippy gate.
03 Quickstart

Download, dispatch, custom-build.

From a release no toolchain is required. From source: Rust 1.75+. Cargo features gate the applet groups so a --no-default-features --features slim build is 545 KB.

# From a release — no toolchain required
$ curl -LO https://github.com/Real-Fruit-Snacks/jib/releases/latest/download/jib-linux-x64
$ chmod +x jib-linux-x64 && ./jib-linux-x64 --list

# From source — Rust 1.75+
$ git clone https://github.com/Real-Fruit-Snacks/jib && cd jib
$ cargo build --release
$ ./target/release/jib --list

# Multi-call dispatch — symlink any applet name
$ ln -s jib ls && ./ls -la                   # multi-call: argv[0] basename
$ ln -s jib cat && echo hi | ./cat           # works for every applet

# Native Windows — no WSL / Cygwin / git-bash
$ jib dir .                                  :: == ls
$ jib type file.txt                          :: == cat
$ jib copy a.txt b.txt                       :: == cp

# Build subsets via Cargo features
$ cargo build --release                              # full (78 applets, ~2 MB)
$ cargo build --release --no-default-features \
                       --features slim              # 34 POSIX coreutils, ~545 KB
04 Reference

The applet surface.

78 utilities organised by category. Real applets, not stubs — every find, sed, awk, jq implements the common flag set. Per-applet status against the Python upstream in PARITY.md.

FILE OPS

ls · cp · mv · rmList · copy · move · remove
mkdir · touch · findCreate · timestamp · expression-tree walk
chmod · ln · statMode · link · stat fields
truncate · mktemp · ddResize · scratch · block copy

TEXT

cat · tac · revConcat · reverse-line · reverse-byte
grep · head · tail · wc · nlSearch · slice · count · number
sort · uniq · cut · paste · trOrder · dedupe · field · merge · translate
tee · xargs · printf · echoTap · arg builder · format · output
expand · unexpand · split · cmp · commTab/space · partition · compare
diff · join · fmt · od · hexdumpDiff · merge · reflow · binary inspect

HEAVY TEXT  // real engines, not stubs

seds/// d p q = y/// addresses ranges negation -i in-place BRE+ERE
awkBEGIN/END · /regex/ · expressions · ranges · printf · arrays · 12+ builtins

JSON & NETWORK

jqfilters · iterators · constructors · 20+ builtins · -r/-c/-s
httpGET/POST/PUT/DELETE/HEAD · -H · @file · --json · HTTPS via rustls
dig · ncUDP DNS (A/AAAA/MX/TXT/CNAME/NS/SOA/PTR) · TCP connect/listen/scan

HASHING & ARCHIVES

md5sum · sha1/256/512sumPure Rust crates · md-5 · sha1 · sha2
tar · gzip · gunzipcreate / extract / list · -z gzip filter
zip · unzipStored + deflated entries

FILESYSTEM & PATHS

du · dfDisk usage · filesystem free
basename · dirname · realpath · pwd · whichPath components

SYSTEM & CONTROL

uname · hostname · whoamiIdentity
date · env · sleep · getoptHelpers
true · false · yes · seqExit-status / fill / sequence

WINDOWS-NATIVE ALIASES  // no WSL/Cygwin/git-bash

jib dir== ls
jib type== cat
jib copy== cp
jib del== rm
jib where== which

CARGO FEATURES  // gate the applet groups

slim34 applets · POSIX coreutils + grep/sed/awk/find/tr
extras24 applets · BusyBox parity gap-fillers
hashing4 applets · md5/sha1/sha256/sha512sum
archives5 applets · gzip/gunzip/tar/zip/unzip
disk2 applets · du/df
network3 applets · nc/http/dig (HTTPS via rustls)
json1 applet · jq subset
full78 applets · all groups

RELEASE BINARIES  // 12 per release tag

jib-linux-x64Linux glibc 2.35+ · full + -slim
jib-linux-x64-muslAlpine · distroless · scratch
jib-linux-arm64Linux ARM64 · full + -slim
jib-windows-x64.exeWindows Intel · full + -slim
jib-windows-arm64.exeWindows ARM64 · full + -slim
jib-macos-arm64Apple Silicon · full + -slim

DEVELOPMENT

cargo buildDebug build
cargo test29 native integration tests
cargo clippy--all-targets -- -D warnings · zero-warning gate
cargo build --release~2 MB stripped binary
python tests/parity/run.pyPython ↔ Rust diff harness
05 Architecture

Four-layer flow.

Entry → dispatch → registry → applet. Each applet is a Rust module exposing pub const APPLET: Applet.

src/
main.rs           // entry → cli::run → ExitCode
   ↓
cli.rs            // dispatch · argv[0] multi-call + wrapper modes
                  // intercepts --help (long form only)
   ↓
registry.rs       // Applet table + OnceLock<BTreeMap> lookup
                  // indexes canonical names + aliases
   ↓
applets/<name>.rs // pub const APPLET: Applet { name, help, aliases, main }
                  // trailing _ for keyword collisions: env_, sleep_, gzip_

src/
common.rs         // shared helpers · err · filemode · uid_gid
usage.rs          // per-applet --help bodies

tests/
integration/      // 29 native cases
parity/run.py     // Python ↔ Rust diff harness · 76+ cases
06 The Family

Same idea, six languages.

Same applet contract. Same flag conventions. Same exit codes. Different size/portability tradeoffs.

ToolLangSizeNotes
rillASM~34 KBPure NASM · no libc
staysailZig~1 MB8 native targets
moonrakerLua~1.2 MBEmbedded Lua VM
jibRust~2 MB+ jq · http · dig · 12 builds
topsailGo~3.4 MB.deb · .rpm · .apk
mainsailPy~5.5 MBOr ~110 KB .pyz · reference impl
→ START HERE

Same shape as mainsail.
Native everywhere.

Open repo