BTW:  My memory is that Joy did not like them for some reason, probably because they were not as sexy as some of the stuff Accent could do (but that's a guess -- I've forgotten).  So with 4.2, Joy created Unix domain sockets.

BTW: a slow cache refresh is occurring in my brain ... I remember one of the things that there was a lot of arguing/moaning about at the time was the directionality of such a feature.  Bruce's hack from the mid-70s was unidirectional and you needed two pipes to go both ways.

On Fri, Mar 6, 2020 at 4:06 PM Clem Cole <clemc@ccc.com> wrote:
The first version was from Rand (called "Rand Pipes").   They certainly were available in the mid-70s on Sixth Edition, you have to ask someone like Bruce Borden if they were on Fifth.  I think the code is on one of the 'USENIX' tapes in Warren's archives.

At this point in time, someone would need to refresh my memory of the details of Rand's implementation compared to what came in the USG systems in the 1980s.   For instance, I believe the early versions used mknod(2) to create the "named entity."   IIRC early USG did that too, and mkfifo(3) came as part of the POSIX (I have memories of the discussion at a POSIX meeting, but as I say, I've forgotten the details).

IIRC there were differences in buffering behavior, flushing, error path between USG's later versions and the original Rand, but I'd have to stare at the code again to remember.

On Fri, Mar 6, 2020 at 3:42 PM Paul Ruizendaal <pnr@planet.nl> wrote:
The Luderer paper on distributed Unix has the following paragraph:

"A new special UNIX interprocess communication mechanism is the fifo, which provides communication between unrelated processes by associating a new special file type with a file name. Since remote fifos are legal, they can be used for interprocessor communication between S-UNIX machines or between an S-UNIX machine and an F-UNIX machine.”

The paper is from late 1981. Maybe I’m especially mud-eyed today, but I cannot see FIFO’s implemented in V7..V8 or 4.1xBSD. When did FIFO’s become a standard Unix feature?

Paul