On Sun, Nov 14, 2010 at 7:25 PM, Sam Watkins <sam@nipl.net> wrote:
hi,

I am wondering what you think about the capabilities of 9p compared to
http/1.1.  Perhaps this seems like an odd comparison, but I think 9p and http
are broadly similar in purpose and functionality.  While writing a simple
webserver, I got to thinking that http is really a very capable protocol.

http is text-based, it supports pipelining and arbitraty metadata.  As far as I
know, 9p does not support pipelining nor arbitraty metadata.  It seems to me
that these are big advantages for http.  9p supports walking; are there other
things 9p can do which http cannot, which give 9p a significant advantage?

Am I correct, that 9p does not support pipelining?  I suppose this would be a
big problem.  For example, with http pipelining one may ask a server to HEAD
(like stat) 10,000 files together, without having to wait for the responses.
Over a high latency link (e.g. Australia -> USA), this might save perhaps an
hour of waiting.

Under certain situations, 9p can do some forms of pipelining.  The tagged requests don't have to be waited on in order, for the next outgoing request to be sent, unless there's a dependency of one completing before the other, or the evaluation of completion of a previous one on another.
 

Such an asyncronous interface might be useful even when accessing local disks -
if the filesystem receives 100 open/read/stat requests bundled together, it
might optimise disk access to minimise seeking, as is commonly done for writes.

By the way, I read the other day on this list that there is no need to improve
cat(1).  Well for me, I still feel that the command `cat` without args should
concatenate 0 files (producing no output), not copy stdin to stdout!

That's an interesting point of view.  I think the concept of "standard input" is that if no input is given, it was going to be the fallback.  Same goes for standard output.

With that said, I think cat is behaving just fine to take no arguments and then default to the standard input and output :-).
 


Sam