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 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) mode change 100755 => 100644 www/design.html (limited to 'www/design.html') 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

-- cgit v1.2.3