comparison www/news.html @ 1709:8d6203ecfb88 draft

0.5.2 release notes.
author Rob Landley <rob@landley.net>
date Fri, 27 Feb 2015 08:13:24 -0600
parents 44e86486a57d
children
comparison
equal deleted inserted replaced
1708:3746a6d29d87 1709:8d6203ecfb88
5 into a single BSD-licensed executable that's simple, small, fast, 5 into a single BSD-licensed executable that's simple, small, fast,
6 reasonably standards-compliant, and powerful enough to turn Android into 6 reasonably standards-compliant, and powerful enough to turn Android into
7 a development environment. See the links on the left for details.</p> 7 a development environment. See the links on the left for details.</p>
8 8
9 <h2>News</h2> 9 <h2>News</h2>
10
11 <hr><b>February 25, 2015</b>
12 <blockquote><p>"A common mistake that people make when trying to design
13 something completely foolproof is to underestimate the ingenuity of
14 complete fools."</p><p>- The Hitchhiker's Guide to the Galaxy.</p></blockquote>
15
16 <p><a href=downloads/toybox-0.5.2.tar.gz>Toybox 0.5.2</a>
17 (<a href=/hg/toybox/shortlog/1702>commit 1702</a>) is out.</p>
18
19 <p>New promoted commands: sed (finally fixed enough it builds Linux From
20 Scratch), printf (cleaned up and promoted), shred and
21 base64 (the Tizen guys wanted them), getenforce, setenforce, and chcon (android),
22 mix (promoted with fixes from Isaac Dunham), nsenter (from
23 Andy Lutomirski, merged into unshare).</p>
24
25 <p>Elliott Hughes submited a bunch of patches to support Android (to
26 both toybox and Bionic libc, which he maintains). On toybox's end this
27 involved a lot of fixups to portability.[ch] and fixes to over a dozen
28 commands, plus several new ones. Other portability fixes included working
29 with buildroot's uclibc fork and building for nommu targets.</p>
30
31 <p>The new "make change" target builds each toybox command as a standalone
32 binary. Rather a lot of commands that didn't build by themselves (mv depending
33 on cp and so on) were hit with a large rock until they built standalone.
34 This involved rewriting bits of option parsing, more elaborate dependency
35 generation, making each command have its own config
36 symbol and main() function (even when it's just a wrapper calling another
37 command's main()), and so on. Also, some commands can't be built standalone
38 at a conceptual level: "help" describes other enabled commands and "sh"
39 has a number of bulitin commands (cd, exit, set) that require the
40 multiplexer infrastructure, so "make change" filters them out.</p>
41
42 <p>The mailing list's web archive is still screwed up. Dreamhost has
43 been trying to fix it since approximately September. There are
44 <a href=http://www.mail-archive.com/toybox@lists.landley.net/>two</a>
45 <a href=http://news.gmane.org/gmane.linux.toybox>other</a> less broken
46 archives, but neither has quite the same UI as mailman.</p>
47
48 <h3>Bugfixes and tweaks</h3>
49
50 <p>Cynt Rynt sent in tests for ifconfig,
51 Robert Thompson taught factor to accept whitespace separated arguments,
52 Hyejin Kim pointed out that some of mktemp's longopts were attached to
53 the wrong short options,
54 Luis Felipe Strano Moraes fixed a wrong free() call in bootchartd in pending.
55 Patches from Ashwini Sharma to make "df /dev/node" work, prevent du from
56 looping endlessly following symlinks, and to make expr.c
57 (in pending) understand == and regex matches. (Speaking of expr, it gets
58 priority groupings wrong but the bug was actually in the posix spec's
59 HTML conversion. They fixed the posix spec upstream for us. Still need
60 to fix the expr code, but it's in pending for a reason...)</p>
61
62 <p>Some commands grew new option flags, such as cp --remove-destination
63 and touch -h.</p>
64
65 <p>The parallel build has better error reporting now. When toybox needs to
66 re-exec itself to regain suid root permissions and hasn't got the suid bit,
67 it now gives the right error message ("not root" instead of "no such command").
68
69 <p>Added a test to "mount" to not mount the same device/directory combination
70 over itself (the OS catches this for block devices, but not for tmpfs).
71 Make blkid distinguish ext3 from ext4. Added catv back into cat (because
72 the Android guys wanted it, and they have historical usage on their side,
73 so...). Handle nanoseconds in touch.</p>
74
75 <p>Fixed a segfault when CP_MORE was disabled (the resulting option flag list
76 no longer defined -d but still had it in option groups at the end).
77 Workaround for glibc redefining dirname() and basename() to random non-posix
78 semantics because gnu. (They could have created dirname_r() but didn't want
79 to.)</p>
80
81 <p>Fix an ifconfig test that was preventing assigning an ipv4 address to
82 interface aliases. Several cleanup passes on hwclock but not quite
83 promoted out of pending yet.<p>
84
85 <p>Fixed a wrong error message in rm (if you had a chmod 000 directory and
86 did rm -r on it without -f, after the prompt it would complain it was a
87 directory, which was not the problem).</p>
88
89 <p>The gzip compression code now does "store only" output to stdout, for
90 what that's worth.</p>
91
92 <p>Cleanup mountpoint and expand, and remove them from toys/pending/README
93 (a list of commands that predate the toys/pending directory but needed
94 another pass).</p>
95
96 <h3>Library and infrastructure:</h3>
97
98 <p>Reworked the option parsing infrastructure so more commands build
99 standalone (via scripts/single.sh or "make change"). The option flag bit
100 values are no longer packed, it leaves spaces where currently disabled
101 flags go, and you can #define FORCE_FLAGS so disabled flags aren't zeroed.
102 This allows multiple commands to more easily share infrastructure, even if
103 your current flag context is for a disabled command (switched off in config),
104 you can force them to stay on and as long as the flags read the same right
105 to left they'll have the same values.</p>
106
107 <p>We've started removing use of strncpy() because it's a hugely broken
108 standard C function: the length is the maximum length to _append_, not
109 the size of the destination buffer. It memsets the remaining space it didn't
110 copy ala "memset(dest+strlen(dest), 0, len);" so
111 if you think len is the size of dest you're guaranteed to stomp memory off the
112 end). And if it runs out of space it won't null terminate because reasons.
113 (Meanwhile sprintf("%*s", len, str) is counting wide characters in your current
114 locale, so if you set a locale other than "C" it will also go past your
115 allocated buffer size. Whoever is maintining the C library standards is really
116 bad at strings.)
117 Instead we have xstrncat() which will error_exit() if src+dest+1 doesn't
118 fit in the buffer. (Because randomly truncating input data isn't necessarily
119 an improvement.) And there's always xmprintf().</p>
120
121 <p>Similarly, strtol() doesn't return an error indicator on overflow,
122 you have to clear and then check errno. So new xstrtol() that cares
123 about overflow.</p>
124
125 <p>The bionic and musl guys agree faccessat(AT_SYMLINK_NOFOLLOW) is not
126 supported, so stop using it.</p>
127
128 <p>Fixed toy_exec() to detect when argc is in optargs, so we don't
129 need a separate xexec_optargs().</p>
130
131 <hr><b>February 18, 2015</b>
132 <p>Dreamhost continues to be unable to make mailing list archives work, so
133 here's <a href=http://www.mail-archive.com/toybox@lists.landley.net/>another
134 list archive</a> with a less awkward interface than gmane.</p>
135
136 <p>(Neither gives you the convenient historical monthly views of mailman,
137 but I still have hopes dreamhost will someday figure out what they're doing
138 wrong. They've only been trying since October. Last month they did a
139 <a href=http://www.dreamhoststatus.com/2015/01/14/discussion-list-hardware-maintenance/>hardware upgrade to fix a software problem</a>, and the stale
140 data loads much faster now, so that's something.)</p>
141
142 <p>Update (Feb 19): the archive started updating again, by discarding
143 all the pending data. So there are now _two_ giant holes in Dreamhost's
144 web archive, from Dec 15-Jan 3, and then another hole from Jan 16-Feb 18.
145 The relevant messages are in both of the other archives. Here's hoping
146 the chronic archive constipation problem won't happen a sixth time.</p>
10 147
11 <hr><b>December 30, 2014</b> 148 <hr><b>December 30, 2014</b>
12 <p>Due to Dreamhost's <a href=http://landley.net/dreamhost.txt>ongoing</a> 149 <p>Due to Dreamhost's <a href=http://landley.net/dreamhost.txt>ongoing</a>
13 <a href=http://landley.net/dreamhost2.txt>inability</a> to make mailman 150 <a href=http://landley.net/dreamhost2.txt>inability</a> to make mailman
14 work reliably, I've added a link to a backup web archive at 151 work reliably, I've added a link to a backup web archive at
15 <a href=http://news.gmane.org/gmane.linux.toybox>gmane</a> to the nav bar 152 <a href=http://news.gmane.org/gmane.linux.toybox>gmane</a> to the nav bar
16 on the left.</p> 153 on the left.</p>
17 154
18 <p>You still subscribe to the list through 155 <p>You still subscribe to the list through
19 <a href=http://lists.landley.net/listinfo.cgi/toybox-landley.net>the first link</a>.</p> 156 <a href=http://lists.landley.net/listinfo.cgi/toybox-landley.net>the first link</a>.</p>
157
158 <p>Update (January 27, 2015): they're <a href=https://twitter.com/landley/status/558428839462703104>still working on it</a>.</p>
20 159
21 <hr><b>November 19, 2014</b> 160 <hr><b>November 19, 2014</b>
22 161
23 <blockquote><p>"This time it was right, it would work, and no one would have to get nailed to anything." - The Hitchhiker's Guide to the Galaxy.</p></blockquote> 162 <blockquote><p>"This time it was right, it would work, and no one would have to get nailed to anything." - The Hitchhiker's Guide to the Galaxy.</p></blockquote>
24 163