1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<html><title>toybox</title>
<body>
<p>Warning: lots of this page is about what I plan to do, not what I've
already done. See <a href="#status>status</a> or <a href="/notes.html>my
development blog</a>.</p>
<h2><a name="what" />What is ToyBox?</h2>
<p>The Toybox project is creating simple implementations of all the Linux
command line utilities. Other goals are small size (the produced binaries
should total less than a megabyte, uncompressed), speed of execution, and
correctness of implementation (which is related to standards compliance, but
isn't quite the same thing).
Click for <a href="design.html">more about the design goals</a></p>
<p>Toybox has configurable levels of functionality, and should scale from tiny
embedded systems up to full general purpose desktop and development
environments. The author plans to run it on his laptop, and the
<a href=/code/firmware>Firmware Linux</a> project is trying to get a complete
Linux system to rebuild itself from source code using toybox.</p>
<p>Toybox is <a href=license.html>Licensed under GPL version 2</a>.</p>
<p>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.</p>
<h2><a name="commands" />Which commands are planned?</h2>
<b><h3>Relevant Standards</h3></b>
<p>Most commands are implemented according to
<a href=http://www.opengroup.org/onlinepubs/009695399/idx/utilities.html>The
Single Unix Specification version 3</a>. 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.</p>
<p>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).</p>
<b><h3>Command Shell</h3></b>
<p>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,
<a href="http://www.opengroup.org/onlinepubs/009695399/utilities/alias.html">alias</a>,
export, set, unset, read, trap, and exec.</p>
<b><h3>General Purpose Commands:</h3></b>
<p>[TODO]</p>
<b><h3>Development tools:</h3></b>
<p>Commands: ar, make [TODO]</p>
<b><h2><a name="status />What commands are implemented?</h2></b>
<p>Toybox is a work in progress, and nowhere near a 1.0 release. The first
commit was September 27, 2006, and work is ongoing.</p>
<p>Partial (in progress): sh/toysh (cd, exit), df, which.</p>
<p>Complete: hello, pwd.</p>
<p>Infrastructure:</p>
<ul>
<li>main: toy_list[], toy_find(), toy_exec(), main/toybox_main().</li>
<ul>lib: llist, getmountlist(), error_msg/error_exit, xmalloc(),
strlcpy(), xexec(), xopen()/xread(), xgetcwd(), xabspath(), find_in_path(),
itoa().</li>
<b><h2><a name="download" />Download</h2></b>
<p>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 <a href=download>the download directory</a> for release tarballs.
</p>
<p>My <a href=/notes.html>development log</a> 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...</p>
|