Skip to content

Releases

v0.2.0 — Linux aarch64 (arm64) port

Choose a tag to compare

@thooams thooams released this 17 Jul 18:37

Linux aarch64 (arm64) port

The full UOLT suite — 35 core tools + the column extra — now builds fully static for Linux aarch64 and passes the entire test suite under qemu-user, alongside the existing Linux x86_64 and Intel macOS targets.

  • Same tools, second architecture. Every libuolt primitive, syscall wrapper, and tool body is re-authored in AArch64 assembly. The aarch64 Linux syscall set (the *at family) is absorbed in sys/linux/arm64/ so the internal API signatures stay identical (Principle V).
  • Size discipline held. aarch64 suite ≈ 51 KB (avg ~1.5 KB/tool; true/false 368 B). Byte counts differ from x86_64 by instruction encoding.
  • Guarded by CI. A linux-arm64 job cross-builds on the x86_64 runner and runs the full make test under binfmt/qemu-user, failing independently of x86_64 (the trace layer is skipped under qemu; the no-heap guarantee stays structural).
  • Packaging. AUR (arch=(x86_64 aarch64)) and Nix (x86_64-linux, aarch64-linux) now cover Linux arm64; Homebrew builds on Linux arm too. macOS on Apple Silicon stays out of scope (its direct-syscall model is incompatible).

Build it with make ARCH=arm64 (auto-selected from uname -m on a native arm64 host).

🤖 Generated with Claude Code

UOLT v0.1.0

Choose a tag to compare

@thooams thooams released this 16 Jul 07:28

First tagged release of UOLT — 34 everyday Unix / POSIX tools hand-written in x86_64 assembly. No libc, no heap, direct syscalls.

  • Whole suite is ~44 KB on Linux (static ELF) — smaller than a single stock grep, ~49× smaller than the equivalent coreutils combined.
  • Each tool is checked byte-for-byte against the system tool (differential) plus unit / POSIX / fuzz / syscall-trace layers, on Linux (GNU) and macOS (BSD).
  • Tools: true false echo pwd cat head tail wc yes basename dirname sleep mkdir rmdir touch ln rm mv cp chmod ls seq grep find sort tee uniq env cut tr comm printf test expr.
  • sort / tail / uniq handle unbounded input via explicit mmap regions (no silent truncation).
  • Install: Nix flake, Homebrew tap, AUR, or make. Binaries install as uolt-<name> (no accidental coreutils shadow); make install sets up a reversible PATH shadow.

x86_64 only for now (Linux and Intel macOS); arm64 is planned. MIT licensed.