blob: ebd9d9dbd158fc787e759c7fecc03a6cbb03bd5c [file] [log] [blame]
Rob Landley349ff522014-01-04 13:09:42 -06001<html><head><title>toybox news</title>
Rob Landley589f5cd2010-01-05 10:41:52 -06002<!--#include file="header.html" -->
3
Rob Landley5cab9942013-09-18 10:50:38 -05004<p>Toybox combines common Linux command line utilities together
Rob Landleye566f3a2013-06-16 20:02:38 -05005into a single BSD-licensed executable that's simple, small, fast,
6reasonably standards-compliant, and powerful enough to turn Android into
Rob Landley49f8d6f2013-07-26 13:04:21 -05007a development environment. See the links on the left for details.</p>
8
9<h2>News</h2>
Rob Landley78663502013-11-19 09:44:48 -060010<hr><b>November 18, 2013</b>
11<blockquote><p>"Space," it says, "is big. Really big. You just won't believe how vastly, hugely, mindbogglingly big it is. I mean, you may think it's a long way down the street to the chemist's, but that's just peanuts to space." -
12The Hitchhiker's Guide to the Galaxy.</p></blockquote>
13
Rob Landley4d886d62014-03-08 19:26:33 -060014<p><a href=downloads/toybox-0.4.7.tar.bz2>Toybox 0.4.7</a> is based on
Rob Landley78663502013-11-19 09:44:48 -060015<a href=http://landley.net/hg/toybox/shortlog/1122>commit 1122</a>.</p>
16
17<p>New commands: Brad Conroy submitted blkid. Elie De Brauwer submitted
18reboot, halt, and poweroff. Strake's nl got cleaned up and promoted from
19pending to posix. In addition, the existing chvt and vconfig got some
20cleanup.</p>
21
22<p>That said, I haven't nearly kept up with the flood of new commands going
23into pending: Ashwini Sharma's team submitted
24dd, dumpleases, traceroute, top, useradd, groupadd, mkpasswd, tftpd, and
25an fsck wrapper (with no filesystem drivers yet). Isaac Dunham sent in cpio.</p>
26
27<p>Bugfixes: Jeroen van Rijn added a user count to uptime. Elie De Brauwer
28added -e to watch, removed a memory leak, and fixed a terminal size problem.
29William Haddon made xargs call its command line once even with blank input
30(the standard is vague, but builds expect it), and fixed an off by one bug
31where grep didn't malloc enough space with -E (leading to a segfault).
32I fixed a glitch in bunzip2 (same one as went into busybox since they're using
33the code I wrote), in od to fix -t co, -J, and -c options. Add uname -o as a
34synonym for -s. Build fix to never use $CC without prefixing it with
35$CROSS_COMPILE (since $HOSTCC could be different). Anca Emanuel spotted
36a typo in the web page.</p>
37
38<p>The compile-time command line option parsing got rewritten (ported from
39bash to C), which should speed up builds a bit and allow code controlled by
40--longopts to drop out properly when disabled in the configuration. Terminal
41querying got refactored. Patch's -x option is now more informative (a
42debug thing if you're trying to figure out why a patch didn't apply).
43The "toynet.h" file got folded into toys.h since musl supports it and
44micromanging uClibc options isn't very interesting anymore. The test suite
45now uses scripts/single.sh when testing a single command.</p>
46
Rob Landley5cab9942013-09-18 10:50:38 -050047<hr><b>September 17, 2013</b>
48<blockquote><p>"Think of a number," said the computer, "any number."
49Arthur told the computer the telephone number of King's Cross railway
50station passenger inquiries, on the grounds that it must have some function,
51and this might turn out to be it. - The Hitchhiker's Guide to the Galaxy</p>
52</blockquote>
53
54<p><a href=downloads/toybox-0.4.6.tar.bz2>Toybox 0.4.6</a> is based on
55<a href=http://landley.net/hg/toybox/shortlog/1068>commit 1068</a>.</p>
56
57<p>This release adds
58several new commands: Felix Janda wrote paste and fallocate, Kyungwan Han
59submitted eject, Strake contributed grep, Ashwini Sharma added pmap (and
60a testsuite entry for grep), Lukasz Skalski sent pwdx, Isaac Dunham posted
61acpi, and I did timeout and umount.</p>
62
63<p>The ls command now has a --color=auto option (suggested by Rich Felker).
64The multiplexer now has a --help option so you can say "./toybox --help blah"
65instead of using the built-in "help" command. (Which is a shell built-in.
66Try it on your command line, it's like man for shell builtins. But a certain
67other project has conditioned people to expect --help, so...) I forget who
68heehooman at gmail is but they pointed out unshare needed PID and UID
69namespace support.</p>
70
71<h3>Pending</h3>
72
73<p>A lot of new commands in toys/pending, to the point the next release should
74probably just focus on cleanup and review of this backlog. We've got klogd,
75dhcp, dhcpd, watch, route, and ps from
Rob Landleyd2774142013-10-04 14:32:39 -050076Ashwini Sharma (and an fsck wrapper but no fsck.fstype engines yet),
Rob Landley5cab9942013-09-18 10:50:38 -050077syslogd, pgrep, and pkill from Madhur Verma, netstat by Ranjan Kumar,
78test by Felix Janda, lspci by Isaac Dunham, nl, su, and renice by strake (I.E.
79M. Farkas-Dyck), and sysvinit by Kyungwan Han.</p>
80
81<p>Some cleanup work on existing pending commands that aren't
82ready to promote yet: I did a few more rounds on ifconfig
83and Isaac Dunham's did several cleanups to xzcat, Felix Janda cleaned up
84logger and syslogd...</p>
85
86<p>Also some cleanup work on commands that predate the pending directory,
87but weren't quite polished when they went in, most prominently du,
88expand, and touch.</p>
89
90<h3>Infrastructure</h3>
91
92<p>The new scripts/single.sh builds a standalone command without the
93multiplexer, although not all commands can be built that way yet (NEWTOY yes,
94OLDTOY no) and the space savings aren't anything to write home about. (If a
95command needs the option parsing logic at all, it needs all of it.) If
96you're curious, you can do:</p>
97
98<blockquote><pre>
99make defconfig
100make
101mkdir singles
102for i in $(./toybox)
103do
104 echo $i
105 PREFIX=singles/ scripts/single.sh $i || break
106done
107</pre>
108<p>(And then wait a long time and watch almost half the builds fail.)</p>
109</blockquote>
110
111<p>There is now libbuf analogous to toybuf, another global 4k buffer this
112time for use by lib/ code instead of command code.</p>
113
114<p>The lib directory got split up a bit, lib/pending.c contains functions
115not yet used by anything outside of toys/pending/*, and lib/xwrap.c contains
116functions that wrap other functions and handle failures (via error_exit).
117This leaves lib/lib.c containing actual new functions.</p>
118
119<p>General improvements and bug fixes to argument parsing. The [-abc] exclude
120logic should now clear arguments slots when disabling options. Bare --longopts
121should work now and be able to report errors using their name, the new ;
122option allows optional arguments to longopts only suppliable with = (I.E.
123--color and --color=auto but not --color auto).</p>
124
125<p>I'm gradually weaning the code off of itoa()/utoa() because sprintf
126does this already. In this case "simple" probably means "let libc do it
127for us".</p>
128
129<p>Rewrote for_each_pid_with_name_in() and renamed it to just names_to_pid().
130It shouldn't get confused trying to compare absolute and relative paths quite
131so much anymore.</p>
132
133<p>lib/llist.c grew a new dlist_pop() function for removing a doubly
134linked list entry while maintaining a circular list; tail and patch are
135using it now.</p>
136
137<p>The musl guys suggested a new optimization flag
138(-fno-asynchronous-unwind-tables)
139that shaves about 10% off the binary size by removing a C++ism that crept
140into gcc's idea of C. While I don't normally try to micromanage the compiler,
141"-fstop-being-stupid" is a thing you have to hit gcc with from time to time.</p>
142
143<h3>Bugfixes</h3>
144
145<p>Felix Janda and I did a largeish rewrite of tail to
146finally make it work right (we think). Still need to implement tail -f
147someday (the tricky bit is making -f follow multiple files at once).
148Felix also reported a bug in xpidfile.</p>
149
150<p>Juhani Haverinen pointed out that
151python 3 doesn't work with config2help.py, so the detection logic looks
152for python2 (until I get around to rewriting that in C). Elie De Brauwer
153then fixed our first attempt at this, and also fixed uname's help string.</p>
154
155<p>Ashwini Sharma
156pointed out the build was making a FLAG_ macro for " " which broke some
157configurations. (That's a control character, not a command line option.)</p>
158
159<p>Jacek Bukarewicz pointed out a bug in chdir permission handling, and
160a way to make env segfault. Both should be fixed now.</p>
161
162<p>The new function xexec_optargs()
163replaces calls to xexec(toys.optargs) to avoid freeing and reusing optargs
164during option parsing screwing stuff up (such as netcat's exec mode).</p>
165
166<p>The stat command's %a output was padded with leading zeroes, which
167didn't match anybody else's behavior and thus made the test suite hiccup
168between TEST_HOST and testing toybox. (If you go "TEST_HOST=1 scripts/test.sh
169command" it sanity checks the tests against the host implementation.)</p>
170
171<p>Last release, "mkdir sub/sub && chmod 007 sub/sub && rm -rf sub" didn't
172delete sub and didn't exit with an error either. Neither was correct, rm
173should now be fixed.</p>
174
175<p>
Rob Landley49f8d6f2013-07-26 13:04:21 -0500176<hr><b>July 26, 2013</b>
177<p>Georgi Chorbadzhiyski maintains a <a href=https://github.com/gfto/toybox>git
178mirror</a> of the repository on github, automatically updated from the
179mercurial every 6 hours. The mirror is read only, but you can generate patches
180against it and post them to the list.</p>
Rob Landleye566f3a2013-06-16 20:02:38 -0500181
Isaac Dunhamc810f9f2013-07-06 11:26:15 -0500182<hr><b>July 2, 2013</b>
183<blockquote><p>"Time is an illusion. Lunchtime doubly so." "Very deep. You
184should send that in to the Reader's Digest. They've got a page for people
185like you." -
186The Hitchhiker's Guide to the Galaxy.</p></blockquote>
187
188<p><a href=downloads/toybox-0.4.5.tar.bz2>Toybox 0.4.5</a> is based on
189<a href=http://landley.net/hg/toybox/shortlog/941>commit 941</a>. It adds
190uuencode and uudecode from Erich Plondke, and enables Luis Morales' "who" by
191default. Felix Janda and I cleaned up last year's "stat" submission and
192enabled it. Ivo van Poorten added "groups".
193Andre Renaud added "lsusb". I implemented "split", "pivot_root", and "mv".
194</p>
195
196<p>The "help" command is implemented differently now (lib/help.c) and
197each command can now understand --help (including both "toybox --help"
198and "toybox --help command" in the multiplexer).</p>
199
200<p>The "pending" directory has several commands (find, xzcat, nbd-client,
201logger, expr) which work but are not enabled by default pending further cleanup.
202Ifconfig is enabled, but still in pending because it's only 2/3 cleaned up.
203(It's an awkward halfway state but I'm not holding up the release for it.)</p>
204
205<p>I'm <a href=cleanup.html>documenting the cleanups</a> to teach
206more people to do it, but the writeups aren't caught up yet. The
207<a href=roadmap.html>roadmap</a> also got updated a bit with further analysis
208of other projects, and the README and about pages got updated.</p>
209
210<p>Fixed _another_ "ls -C" segfault when terminal size can't be detected,
211condensed the ls help text to fit on one page, implented --color, and taught
212-l to print the major, minor numbers when showing block/char devices.
213Argument parsing now handles "--" properly (to end option checking),
214and the infrastructure can now handle bare --longopts that have no
215corresponding short option (both were implemented before but didn't work).
216Fixed an old bug in "patch", chmod grew -f, who grew -a. Isaac Dunham
217fixed "-" vs "_" handling in modinfo, added a "firmware" output
218field, added -b and -k support, and taught it that the ".ko" extension means
219to look for the file at the specified path instead of under /lib. Felix Janda
220moved file permission display code to lib so ls and
221stat could share it. Ashwini Sharma spotted a bug in xabspath when the
222last path component exists but we haven't got permissions to open it
223(ala readlink -f /dev/sda as a normal user).
224</p>
225
226<p>In the build infrastructure, scripts/findglobals.sh finds leaked global
227variables. (Leaked means they aren't part of the global union: Other than glibc
228debris, toybox should define "this", "toy_list", "toybuf", and "toys", and
229that's it; the rest add memory footprint to every command for the benefit of
230just one command; use GLOBALS() to stick 'em in the union.) Static linking
231against libraries other than the host's libc now applies to feature probes
232for unshare and such. Neuter stupid internationalization support that makes
233various host "sort" commands put things in an order other than alphabetical
234(breaking the multiplexer's binary search on command names).
235
236<p>You should now be able to build from a source control snapshot on a build
237system that hasn't got python: if you disable CONFIG_TOYBOX_HELP. (The
238release tarballs ship generated/help.h, but it's not in source control.
239Eventually I should rewrite that python script in C.)</p>
240</p>
241
242<p><b>LICENSE TWEAK</b>: After <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-March/000794.html>discussion</a> on the mailing list the "2 clause
243BSD" <a href=license.html>license</a> got slightly simplified so the first
244paragraph now says:</p>
245
246<blockquote><p>Permission to use, copy, modify, and/or distribute this
247software for any purpose with or without fee is hereby granted.</p></blockquote>
248
249<p>It used to continue "provided that the above copyright notice and this
250permission notice appear in all copies", but A) what's the point? B) does "all
251copies" mean binaries, or just source code, or what? C) lots of projects
252that consider BSD and GPL compatible have <a href=https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/crypto/aes_generic.c>files with
253both license notices</a> on them (sometimes at <a href=http://git.busybox.net/busybox/tree/shell/ash.c>opposite ends of the file</a> to make the conflict
254less obvious) because "all copies must include this function" would violate
255the GPL but "all copies must include this magic text blob" somehow don't?</p>
256
257<p>I don't want to have to care about this anymore. The tweaked version is more
258or less public domain with a liability disclaimer, but we're still calling it
259BSD (sometimes "0 clause BSD") to avoid explaining.</p>
260
Rob Landley6f5ef6f2013-03-21 20:21:12 -0500261<hr><b>March 21, 2013</b>
262<p>Video of my ELC talk
Rob Landleye566f3a2013-06-16 20:02:38 -0500263"<a href=http://youtu.be/SGmtP5Lg_t0>Why is Toybox?</a>"
Rob Landley6f5ef6f2013-03-21 20:21:12 -0500264is up on youtube. Related materials include the
265<a href=http://landley.net/talks/celf-2013.txt>talk outline</a> and an
266<a href=/aboriginal/about.html#selfhost>android self-hosting writeup</a>.</p>
267
Rob Landleye566f3a2013-06-16 20:02:38 -0500268<p>[Updated June 4] The following links jump to specific topics in the video. (Sorry about
269the ads, it's The Linux Foundation.)</p>
270
271<ul>
272<li>0m29s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=0m29s>The smartphone is replacing the PC</a></li>
273 <ul>
274 <li>4m22s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=4m22s>Software needed to become self-hosting</a></li>
275 <li>6m20s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=6m20s>Do we care if android or iphone wins?</a></li>
276 </ul>
277<li>9m45s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=9m45s>Android not vanilla: oppose or accept?</a></li>
278 <ul>
279 <li>11m30s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=11m30s>Open source can't do User Interfaces</a></li>
280 </ul>
281<li>15m09s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=15m09s>Android is not copyleft: oppose or accept?</a></li>
282<li>18m23s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=18m23s>Security issues</a></li>
283<li>21m15s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=21m15s>Solutions to the software problems</a></li>
284 <ul>
285 <li>22m55s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=22m55s>What toybox needs to be/do</a></li>
286 <li>28m17s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=28m17s>What is toybox?</a></li>
287 <ul>
288 <li>28m58s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=28m58s>Why toybox started...</a></li>
289 <li>37m50s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=37m50s>What does toybox actually implement?</a></li>
290 </ul>
291 </ul>
292</ul>
293</span>
294
295
Rob Landley6f5ef6f2013-03-21 20:21:12 -0500296<hr><b>March 14, 2013</b>
297<blockquote><p>"Ford, you're turning into a penguin. Stop it." -
298The Hitchhiker's Guide to the Galaxy.</p></blockquote>
299
300<p><a href=downloads/toybox-0.4.4.tar.bz2>Toybox 0.4.4</a> is based on
301<a href=http://landley.net/hg/toybox/shortlog/813>commit 813</a>, adding
302the "time" and "readahead" commands, plus some bugfixes.</p>
303
304<p>The "cp" command now implements the -s symlink option, plus bugfixes
305getting various corner cases right as used in actual package builds.
306"id -Gn root" should now print root's groups
307instead of the current user's. Several build fixes so toybox builds under
308Ubuntu 8.04 again (which is about as old a build environment as you
309can expect to find posix-2008 features in).</p>
310
311<p>Unfinished commands have generally been moved to "toys/pending".
312Everything else should "default y" to participate in make defconfig.
313Several of those pending commands got some basic cleanup so allyesconfig
314should at least compile (although defconfig is still what's useful).</p>
315
316<p>Significant roadmap updates, checking several other multicall binaries
317(klibc, sash, sbase, s6...) to see what commands they include.</p>
318
Rob Landley9a69a922013-02-23 18:32:08 -0600319<hr><b>January 18, 2013</b>
320<blockquote><p>This must be Thursday. I never could get the hang of Thursdays. - The Hitchhiker's Guide to the Galaxy.</p></blockquote>
321
322<p><a href=downloads/toybox-0.4.3.tar.bz2>Toybox 0.4.3</a> is based on
323<a href=http://landley.net/hg/toybox/shortlog/793>commit 793</a>. There
324are now exactly 100 commands in defconfig (of a little over 220 on the
325<a href=roadmap.html>todo list</a>).</p>
326
327<p>Elie De Brauwer added the rev command, cleaned up tac, implemented the -s
328and -f flags for seq, added -v and -i to killall (and fixed killall not to
329kill itself before finishing its pid list), and added to the test suite.
330Felix Janda added -m to mkdir, pwd -L and -P, and more test suite entries.</p>
331
332<p>Rob Landley added the losetup command, and fixed the existing ls, cp, and
333readlink commands. The segfault in ls
334happened when it couldn't determine the screen size (last release changed the
335default to -C and a screen size of 0 made column view unhappy), and cp got an
336extensive rewrite bringing it up to date with the dirtree changes and fixing
337a number of things it never did right in the first place. The xabspath()
338code in the library now handles a symlink after ".." properly (and the test
339suite checks for it).</p>
340
341<p>Infrastructure-wise the code is better about automatically setting the
342error return code properly. Now error_msg() sets the exit code to 1 if it's
343still defaulting to 0, and the global exit path does a fflush(NULL) with error
344bit check rather than trying to be quite so granular about flushing. (That
345means if we use printf() instead of xprintf() it still exits with the right
346error code, it just doesn't end the program early on an output error.)
347Minor bugfix so TOYBOX_DEBUG
348doesn't always warn about the lack of suid bit when toybox is built with
349at least one STAYROOT command. Bugfix for the option [grouping] logic
350(and then further fixes to the error reporting pointed out by Ashwini Sharma).
351dirtree_handle_callback() now has a prefix like the rest of the dirtree
352functions. A lot of stuff doing manual path handling was switched to using
353libc basename() (including, embarassingly, the basename command), which means
354it now correctly detects "/trailing/slash/" which the previous code didn't.</p>
355
356<p>Also, last release included some accidentally checked in debug code that
357disabled compiler optimization, so the binary size bloated a bit. It's back
358to -Os by default now.</p>
359
Rob Landley8390c652012-12-19 09:16:45 -0600360<hr><b>December 15, 2012</b>
361<blockquote><p>"The major difference between a thing that might go wrong and a
362thing that cannot possibly go wrong is that when a thing that cannot possibly
363go wrong goes wrong it usually turns out to be impossible to get at or repair."
364</p><p>- The Hitchhiker's Guide to the Galaxy.</p></blockquote>
365
366<p><a href=downloads/toybox-0.4.2.tar.bz2>Toybox 0.4.2</a> is based on
367<a href=http://landley.net/hg/toybox/shortlog/749>commit 749</a> and is
368just a resync. Linux 3.7 came out, meaning it's time to do an Aboriginal
369Linux release, and that should use a stable version of toybox. So here's
370a new stable version.</p>
371
372<p>The new commands are cut (from Jason Kyungwan Han), touch
373(from Choubey Ji), expand (from Jonathan Clairembault, and he fixed a
374bug in login), and rm (from Rob Landley). Felix Janda added UTF-8
375support infrastructure (for non-ascii character sets) with a config option.
376Elie De Brauwer added tests for cat and sha1sum, and -so options to pidof.
377The "ls" command defaults to -C (column view) now, and "readlink" now supports
378-fenq.</p>
379
380<p>Portability work: toybox should now build against the musl C library,
381and against older glibc versions (circa 2008, much before that and kernel
382features we depend on start to drop out).</p>
383
384<p>The whole codebase got reindented from "one tab" to "two spaces" per
385level. The option parsing logic now understands [groups] of commands (when more
386than one in a group is selected it can switch the others off, or error out,
387or other things). The error_exit() infrastructure can now longjmp back to an
388earlier point instead of exiting. Each toys/* directory now has a README,
389the first line of which is the fancy name menuconfig uses for the directory
390(so no more hardwired directory list in scripts/genconfig.sh).</p>
391
392<p>Fixed a filehandle leak in getmountlist().
393Pass parent pointer to dirtree_add_node() so it can give error messages with
394full path. The yesno() function now always reads from stdin and writes to
395stderr (we can retry tty checking complexity once we've got commands needing
396it).</p>
397
398<p>The open group broke their website so the
399<a href=http://opengroup.org/onlinepubs/9699919799>old links</a> to POSIX 2008
400now <a href=http://pubs.opengroup.org/onlinepubs/9699919799>need to start with
401pubs</a>. Some of the links in the tree have been updated, others haven't while
402I wait to see if their webmaster notices and fixes it.</p>
403
404<p>(I note that the current rm implementation is not technically posix compliant
405because the standard requires infinite recursion depth and the current
406implementation uses one filehandle per level. I can add a config option
407to do it Posix's way, which is more brittle and needs extra security checks,
408but am waiting for somebody to complain first. The default "ulimit -n" is 1024
409filehandles, so drilling down over 1000 nested subdirectories).</p>
410
Rob Landley571b0702012-11-13 16:13:45 -0600411<hr><b>November 13, 2012</b>
412<blockquote><p>"Rule Six: The winning team shall be the first team that wins."
413- The Hitchhiker's Guide to the Galaxy.</p></blockquote>
414
415<p><a href=downloads/toybox-0.4.1.tar.bz2>Toybox 0.4.1</a> is based on
416<a href=http://landley.net/hg/toybox/shortlog/691>commit 691</a>.</p>
417
418<p>Elie De Brauwer contributed usleep, Ashwini Kumar contributed du, and
419Kyungwan Han contributed vconfig. Other new commands include switch_root and
420md5sum, and the remaining shell wrappers are now proper commands (dos2unix,
421unix2dos).</p>
422
423<p>The patch command now supports -l, and gethostname is now enabled by
424default. The df command follows symlinks to get the actual device name.
425Felix Janda added -m support to wc (for utf8).</p>
426
427<p>On the infrastructure side, the commands have now been grouped into
428"posix", "lsb", and "other" subdirectories (for things required by Posix-2008,
429the Linux Standard Base 4.1, and commands in neither). This affects menuconfig
430and the actual source layout (toys/cp.c is now toys/posix/cp.c, and so on).
431An android directory is planned (see the updated
432<a href=roadmap.html#android>android roadmap analysis</a>).</p>
433
434<p>The FLAG_ macros for command option parsing and TT alias for the command's
435global block are now automatically generated, commands should
436#define FOR_commandname before #including <toys.h> to get the macros for that
437command.</p>
438
439<p>An upgrade to the build infrastructure now allows commands with _ and -
440in them, such as switch_root.</p>
441
442<p>Bugfixes: Avery Pennarun spotted a case where ls showed uid twice instead of
443uid and gid, and that nice was using the wrong range of numbers.
444The ls command also recursed inappropriately last time (not quite
445properly converted for the dirtree changes last release), and now it's
446fixed. Roy Tam pointed out a glitch in sh, and fixed df's percentage
447calculation to match the POSIX spec. The kernel build didn't like our mktemp
448and it does now. The wc command wasn't quite posix compliant (trailing spaces
449break stuff). The ls command recursed inappropriately last time (not quite
450properly converted for the dirtree changes last release), and now it's
451fixed. The catv command wasn't displaying byte 255 correctly. Some lib
452fixes (thinko in xpidfile). Fixed uname -m when running a 32 bit x86 binary
453on an x86-64 host (it lies and says the system is i686, i586, or i486 depending
454on what the toolchain that built the binary supported. This makes builds in
455a 32 bit chroot on a 64 bit kernel break less.) The df command was checking
456partitions in the wrong order (displaying undermounts instead of overmounts:
457this used to work but some library code changed out from under it and it
458wasn't updated to match until now). Felix Janda filled out the test suite
459some more. The patch file creation logic got tweaked several times to
460successfully apply more patches. Support for older (pre 2.10) glibc
461versions was added to portability.h.</p>
462
463<p>Miscelaneous cleanups all around (mknod, sha1sum, logname), including a
464rewrite of taskset to be less dependent on libc getting the headers right. All
465the command headers should now point to the current relevant standards
466document, where applicable.</p>
467
468<p>This news page had old news entries from before the relaunch moved into
469a separate <a href=oldnews.html>oldnews</a> page.</p>
470
471<p>I forgot to create <a href=bin>static binaries</a> last time, but they're
472back now.</p>
473</span>
474
Rob Landley31103f92012-08-25 11:51:25 -0500475<hr><b>July 23, 2012</b>
476<blockquote><p>"Ford", Arthur said. "There's an infinite number of monkeys
477out here who want to talk to us about this script for Hamlet they've worked
478out." - The Hitchhiker's Guide to the Galaxy.</p></blockquote>
479
Rob Landley571b0702012-11-13 16:13:45 -0600480<p><a href=downloads/toybox-0.4.0.tar.bz2>Toybox 0.4.0</a> is based on
481<a href=http://landley.net/hg/toybox/shortlog/640>commit 640</a>.</p>
Rob Landley31103f92012-08-25 11:51:25 -0500482
483<p>The new <a href=status.html>status page</a> is calculated from
484the roadmap info, and should be easier to keep up to date in future.</p>
485
486<p>Andre Renaud contributed od and modinfo. Elie De Brauwer contributed
487taskset, bugfixes to cmp and tail, and tests for sort and tail. Kyungwan Han
488contributed passwd. Gaurang Shastri contributed w. Ashwini Sharma spotted a
489case where dirtree was adding extra slashes to a path.</p>
490
491<p>I rewrote od, cleaned up comm, documented the
492<a href=code.html#lib_llist>llist</a> and
493<a href=code.html#lib_dirtree>dirtree</a> infrastructure, added an -r option
494to date (and fixed a bug where -u wouldn't override /etc/localtime),
495fixed bugs in chmod +stw, fixed ls to show suid bits properly when the
496corresponding executable bit wasn't set, and worked around a longstanding
497glibc bug where static linking prevents stdout from automatically flushing
498pending output on exit.</p>
499
Rob Landleyb1cc1d12012-06-25 06:42:24 -0500500<hr><b>June 25, 2012</b>
501<blockquote><p>"For a moment, nothing happened. Then, after a second or so, nothing continued to happen." - The Hitchhiker's Guide to the Galaxy.</p></blockquote>
502
503<p><a href=downloads/toybox-0.3.1.tar.bz2>Toybox 0.3.1</a> is based on commit
504<a href=http://landley.net/hg/toybox/shortlog/607>commit 607</a>. It's
505mostly a bugfix release for ls -l (which was unhappy on targets other than
506x86-64), plus a new "date" from Andre Renaud and rewritten chgrp/chown which
507now support the full set of posix flags, plus a little work on the test
508suite and some more header tweaks towards eventual compatability with the
509musl libc.</p>
510
511<p>The todo list runneth over, but "release early, release often", so here
512it is. The roadmap and documentation are a bit behind, and I've got ~40
513pending submissions to review. I need to catch up...</p>
514</span>
515
516<hr><b>June 12, 2012</b>
517<blockquote><p>"For instance, on the planet Earth, man had always assumed that
518he was more intelligent than dolphins because he had achieved so much - the
519wheel, New York, wars and so on - whilst all the dolphins had ever done was
520muck about in the water having a good time. But conversely, the dolphins had
521always believed that they were far more intelligent than man - for precisely
522the same reasons." - The Hitchhiker's Guide to the Galaxy.</p></blockquote>
523
524<p>It's well past time for <a href=downloads/toybox-0.3.0.tar.bz2>toybox 0.3.0</a>,
525so here it is, based
526on <a href=http://landley.net/hg/toybox/shortlog/595>commit 595</a>, and the
527statically linked <a href=downloads/binaries>prebuilt binaries</a> should
528actually be statically linked this time (thanks Ashwini Sharma for spotting
529that).</p>
530
531<p>It's hard to figure out where to cut a release, because development
532doesn't stop. "Long before now" is the obviuos answer, of course.
533The project's maintainer also moved house during this development cycle, which
534threw things off for a bit (so many boxes). Releases should hopefully be a bit
535more frequent from here on.</p>
536
537<p>The big things Rob worked on this time were the new dirtree (directory
538tree traversal) infrastructure, and a complete rewrite of ls using that
539which should now implement all 26 posix options.</p>
540
541<p>Georgi Chorbadzhiyski added printenv, whoami, mkdir, mkfifo, chmod, chown,
542chgrp, and uniq. He also added fraction and extension support to sleep (so if
543you need a quarter-second sleep, it can do that now), and fixed a build bug
544on slackware.</p>
545
546<p>Daniel Walter contributed a string to mode_t parser (in use by chmod and
547mkdir -m). Ilya Kuzmich contributed comm. Elie De Brauwer added mountpoint,
548vmstat, logname, login, and mktemp. Kevin Chase did some portability cleanups.
549Pere Orga fixed some documentation.</p>
550
551<p>The "tac" and "clear" commands are now normal commands instead of shell
552wrappers, and the header #includes have been cleaned up a bit to remove
553deprecated functions and attempt to increase compatability with the bionic and
554musl C libraries, "tail" should now use lseek() for large files, and "id" got
555some cleanups and bugfixes.</p>
556
557<p>The new TOYBOX_FLOAT configuration option selects whether or not
558to include floating point support (for embedded targets where that's
559problematic).</p>
560
561<p>Several random bugfixes: unshare() might actually build portably now,
562yes 'n' | cp -i should no longer bypass stdin and prompt via the tty, the
563SUID support no longer drops permissions going through the toybox
564multiplexer command, and a bugfix to xargs -0 means it should no longer
565segfault. (I have a pending bug report about xargs not doing the full
566posix whitespace handling that -0 obsoleted, but I'll deal with that next
567release.)</p>
568
569<p>The build infrastructure is now automatically generating FLAG_ macros
570for the options, but currently with the wrong names. Some more macro glue
571is necessary, which I haven't quite figured out how to do yet.</p>
572
573<p>A defconfig toybox at the start of the $PATH has successfully built
574Linux From Scratch (in my Aboriginal Linux project). The commands that
575'default n' in the config are often still broken, cleanup is ongoing.
576(The new dirtree stuff broke several of them that haven't been converted
577yet, but if I wait until everything works we won't have a release before
5781.0, so here's a checkpoint.)</p>
579
580
Rob Landleyed6ed622012-03-06 20:49:03 -0600581<hr><b>March 3, 2012</b>
582
583<blockquote><p>"They went unnoticed at Goonhilly, passed over Cape Canaveral
584without a blip, and Woomera and Jodrell Bank looked straight through them.
585Which was a pity, because it was exactly the sort of thing they'd been looking
586for all these years."</p></p>- The Hitchhiker's Guide to the Galaxy.</p>
587</p></blockquote>
588
589<p>Here's <a href=downloads/toybox-0.2.1.tar.bz2>toybox 0.2.1</a> based
590on <a href=http://landley.net/hg/toybox/shortlog/512>commit 512</a>. This
591time around, there are statically linked <a href=downloads/binaries>prebuilt
592binaries</a> for various embedded targets.</p>
593
594<p>It's been a busy few weeks, almost entirely due to new contributors. (I
595have not quite been keeping up.)</p>
596
597<p>Elie De Brauwer contributed free, uptime, swapon, swapoff, lsmod, mknod,
598insmod, rmmod, and fixed a bug in basename. Andre Renaud contributed ls, ln,
599realpath, and hostname. Andres Heck contributed pidof and killall. Daniel
600Walter wrote kill and extended id. Timothy Elliott contributed tail and tests
601for cmp. Frank Bergmann sent a warning fix. Bryce Fricke added -i to cp.
602Nathan McSween pointed out an optimization. Georgi Chorbadzhiyski fixed
603cross compiling to work more reliably.</p>
604
605<p>(My own contribution this time around was just tightening up other people's
606code, a build fix to unshare, some random bugfixes, and so on. My only new
607code this time around was writing a bash replacement for the existing python
608bloat-o-meter.)</p>
609
610<p>Last time (the 0.2.0 release) included the first pass at an id command from
611Tim Bird, env and basename from Tryn Mirell, cmp and head from Timothy Elliott,
612more bugfixes from Nathan McSween and Elie De Brauwer, and Luis Felipe Strano
613Moraes did a first pass at the who command plus other bugfixes and
614optimizations.</p>
615
616<p>(For that release I did xargs, cal, truncate, unlink, nohup, tty, wc, link,
617dirname, unshare, and various infrastructure tweaks, but it took me 3 months
618and those guys did their stuff in a week or so.)</p>
619
Rob Landleye258af32008-01-05 18:09:49 -0600620
Rob Landleyd11ac702012-02-13 21:16:03 -0600621<hr><b>February 12, 2012</b>
622<blockquote><p>
623"for though it has many omissions and contains much that is apocryphal, or at
624least wildly inaccurate, it scores over the older, more pedestrian work in two
625important respects..."</p>
626<p> - The Hitchhiker's Guide to the Galaxy</p></blockquote>
627
628<p>Here's the first BSD licensed release,
629<a href=downloads/toybox-0.2.0.tar.bz2>toybox-0.2.0</a>, more a synchronization
630point than anything particularly useful. 47 commands in a reasonably
631ready-to-use state (what "make defconfig" builds), another ten or so partially
632finished stubs ("make allyesconfig"), and several
633patches pending on the mailing list I need to review and merge.</p>
634
635<p>More to come...</p>
636
Rob Landleyce8a2672012-02-02 07:27:05 -0600637<hr>
638<p><b>November 15, 2011</b> - Back from the dead, Toybox is now under a 2
639clause BSD license, and aiming to become the default command line
640implementation of Android systems everywhere.</p>
641
642<p>More to come...</p>
643
644<hr>
Rob Landley589f5cd2010-01-05 10:41:52 -0600645
Rob Landleyaba51702012-08-26 16:33:06 -0500646<p><a href=oldnews.html>Old news</a> from before the relaunch.</p>
Rob Landley589f5cd2010-01-05 10:41:52 -0600647
648<!--#include file="footer.html" -->