From a7055db6cb0cde39ca0e6533f63290e0170854a6 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sun, 14 Aug 2016 19:04:02 -0500 Subject: Explain shared library policy, fix an unblanaced tag, add some links. --- www/design.html | 31 +++++++++++++++++++++++++++---- www/roadmap.html | 8 ++++---- 2 files changed, 31 insertions(+), 8 deletions(-) mode change 100755 => 100644 www/design.html (limited to 'www') diff --git a/www/design.html b/www/design.html old mode 100755 new mode 100644 index b358d440..993a7f78 --- a/www/design.html +++ b/www/design.html @@ -289,12 +289,13 @@ older kernels or other implementations (ala BSD), but we don't police their corner cases.

32/64 bit

-

Toybox should work on both 32 bit and 64 bit systems. By the end of 2008 -64 bit hardware will be the new desktop standard, but 32 bit hardware will -continue to be important in embedded devices for years to come.

+

Toybox should work on both 32 bit and 64 bit systems. 64 bit desktop +hardware went mainstream in 2005 and was essentially ubiquitous +by the end of the decade, but 32 bit hardware will continue to be important +in embedded devices for several more years.

Toybox relies on the fact that on any Unix-like platform, pointer and long -are always the same size (on both 32 and 64 bit). Pointer and int are _not_ +are always the same size (on both 32 and 64 bit). Pointer and int are _not_ the same size on 64 bit systems, but pointer and long are.

This is guaranteed by the LP64 memory model, a Unix standard (which Linux @@ -352,6 +353,28 @@ of it.)

Locale support isn't currently a goal; that's a presentation layer issue (I.E. a GUI problem).

+

Shared Libraries

+ +

Toybox's policy on shared libraries is that they should never be +required, but can optionally be used to improve performance.

+ +

Toybox should provide the command line utilities for +self-hosting development evirionments, +and an easy way to set up "hermetic builds" (I.E. builds which provide +their own dependencies, isolating the build logic from host command version +skew with a simple known build environment). In both cases, external +dependencies defeat the purpose.

+ +

This means toybox should provide full functionality without relying +on any external dependencies (other than libc). But toybox may optionally use +libraries such as zlib and openssl to improve performance for things like +deflate and sha1sum, which lets the corresponding built-in implementations +be simple (and thus slow). But the built-in implementations need to exist and +work.

+ +

(This is why we use an external https wrapper program, because depending on +openssl or similar to be linked in would change the behavior of toybox.)

+

Coding style

diff --git a/www/roadmap.html b/www/roadmap.html index 9dff8b2a..4cdafb0d 100755 --- a/www/roadmap.html +++ b/www/roadmap.html @@ -96,7 +96,7 @@ source.)

alias bg cd command fc fg getopts hash jobs kill read type ulimit umask unalias wait exit if while for case export set unset trap exec function source - +

A few other commands are judgement calls, providing command-line internationalization support (iconv locale localedef), System V inter-process @@ -193,9 +193,9 @@ su sync tar umount useradd userdel usermod zcat

Use case: provide a self-hosting development environment

-

The following commands are enough to build the Aboriginal Linux development -environment, boot it to a shell prompt, and build Linux From Scratch 6.8 under -it. (Aboriginal Linux currently uses BusyBox for this, thus provides a +

The following commands are enough to build the Aboriginal Linux development +environment, boot it to a shell prompt, and build Linux From Scratch 6.8 under +it. (Aboriginal Linux currently uses BusyBox for this, thus providing a drop-in test environment for toybox. We install both implementations side by side, redirecting the symlinks a command at a time until the older package is no longer used, and can be removed.)

-- cgit v1.2.3