From: John Cowan <xxxxxx@ccil.org>
Date: Friday, November 22, 2019 1:29 PM

On Fri, Nov 22, 2019 at 1:57 PM <xxxxxx@ancell-ent.com> wrote:
 
there was such a high premium in the early days of UNIX in reducing characters to be typed and printed at 110 baud.  Which is what gave us the most infamous to this day examples in the creat call that lead to the O_CREAT flag used by open-file with a friendlier name.

It was more a matter of memory shortage in this case. C had to be compilable on non-Unix systems with truly ancient linkers that required externally visible names to be unique in the first 6 characters in order to keep their symbol tables small.  What's more, the early C compilers added a leading underscore to all C-generated names to avoid collisions with non-C names (similarly, the Unix/GNU Fortran compilers used to add a trailing underscore to avoid conflicts with C).  That left only 5 characters, hence "creat".

I had forgotten about that.  6 character limits are often rooted in a lot of these systems starting out on 36 bit machines, where a limited 6 bit no lower case character set allowed storing 6 in a word, e.g. FORTRAN on the IBM 704 (but not LISP, which also started on that CPU).  Or in the case of UNIX, it started out on I'm fairly sure a very memory limited, perhaps as little as 4K words 18 bit mini-computer.

O_NONBLOCK

This will take some thought.  It can't just be passed through blindly, because in a green-threads Scheme it would block the whole process. 

Include a warning?  Perhaps or also in Issues??

The fact that it doesn't work on sockets (reliably) makes me think it's hardly worth having.  With the exception of terminals, device I/O is rare nowadays, an fifos were never anything *but* rare (local domain sockets more than cover their use cases).

Still, this SRFI supports FIFOs, making and detecting them....

- Harold