[erlang-questions] UNIX streams and Erlang ports
Bjorn Gustavsson
bjorn@REDACTED
Mon Feb 5 08:41:17 CET 2007
We have no intention of removing the message protocol for ports,
so if you want to use ports in a stream-like way, you still can.
/Bjorn
Robert Virding <robert.virding@REDACTED> writes:
> I discovered a copy of a very interesting, but rather old, paper by
> Dennis Ritchie called "A Stream Input-Output System" from 1984. It
> describes a new flexible system for communication between user
> applications and devices.
>
> "A stream is a full-duplex connection bwtween a user's process and a
> device or pseudo device. It consists of several linearly connected
> processing modules, and is analagous to a Shell pipeline, except that
> data flows in both directions. The modules in a stream communicate
> almost exclusively by passing messages to thier neighbors. ..."
>
> It is a truly elegant concept.
>
> What makes it especially interesting for us is that this was the model
> on which Erlang ports and i/o was based. Ports represent devices and
> applications communicate with devices by sending/receiving messages,
> i.e. streams. By inserting processes bewtween the port and the
> application the data can be processed along the way, i.e. processing
> modules. This is the reason why originally ports looked almost exactly
> like processes. An application communicated with a device by messages
> and would not see what extra processing was done along the way, or where
> it was done. We actually debated whether to have a separate data type at
> all for ports.
>
> Unfortunatley this model broke when the port_XXX functions were added.
> You now have to know what you are communicating with. Goodbye abstraction.
>
> What I find rather ironic and appeals to my, sometimes twisted, sense of
> humour is part of the manual text describing the port_XXX commands. The
> manual tries to show why the port_XXX commands are much more "logical"
> than the message interface. All I can say is that they, those who added
> the commands and wrote the text, missed the point and that the commands
> are in fact illogical and break the model.
>
> Reading old papers can be fun. You can find Ritchie's paper on his site,
> along with a lot of other interesting stuff.
>
> Robert
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>
--
Björn Gustavsson, Erlang/OTP, Ericsson AB
More information about the erlang-questions
mailing list