What is ToyBox?

Toybox aims to implement all the Linux command line utilities in under one megabyte. This project aims for small, simple, and efficient implementations, with configurable levels of functionality. It should scale from tiny embedded systems up to full fledged desktop and development environments.

The project is Licensed under GPL version 2.

Toybox can be built as a single "swiss army knife" executable (ala BusyBox or Red Hat's Nash), or each command can be built as a traditional independent executable.

Which commands are planned?

Relevant Standards

Most commands are implemented according to The Single Unix Specification version 3. This does not mean that Toybox is implementing every SUSv3 utility: some such as SCCS and ed are obsolete, while others such as c99 are outside the scope of the project. Toybox also isn't implementing full internationalization support: it should be 8-bit clean and handle UTF-8, but otherwise we leave this to X11 and higher layers.

The other major sources of commands are the Linux man pages, and testing the behavior of existing commands (although not generally looking at their source code).

Command Shell

The Toybox Shell aims to be a reasonable bash replacement. It implements the "sh" and "toysh" commands, plus the built-in commands "cd" and "exit". The following additional commands may be built into the shell (but not as separate executables): cd, exit, if, while, for, function, fg, bg, jobs, source, alias, export, set, unset, read, trap, and exec.

General Purpose Commands:

[TODO]

Development tools:

Commands: ar, make [TODO]

What commands are implemented?

Toybox is a work in progress, and nowhere near a 1.0 release. The first commit was September 27, 2006, and work is ongoing.

Partial (in progress): sh/toysh (cd, exit), df, which.

Complete: hello, pwd.

Infrastructure:

Download

This project is maintained as a mercurial archive. To get a copy of the current development version, "hg clone static-http://landley.net/code/toybox", or check the download directory for release tarballs.

My development log is currently the best way to track what's going on with this project. When I get this moved to my new server, I need to put up a mailing list and repository browser, make this a real web page, add toybox.landley.net as a virtual domain...