9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Dan Cross <crossd@gmail.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] rc's shortcomings (new subject line)
Date: Wed, 29 Aug 2012 14:08:08 +0530	[thread overview]
Message-ID: <CAEoi9W5_r=4w5EcdrbKuqD566p=C5KvEEHg72YKzdat18En2-w@mail.gmail.com> (raw)
In-Reply-To: <8ee568439e1855124564ecf0e83ac2b3@kw.quanstro.net>

On Wed, Aug 29, 2012 at 2:04 AM, erik quanstrom <quanstro@quanstro.net> wrote:
>> > the haahr/rakitzis es' if makes more sense, even if it's wierder.)
>>
>> Agreed; es would be an interesting starting point for a new shell.
>
> es is great input.  there are really cool ideas there, but it does
> seem like a lesson learned to me, rather than a starting point.

Starting point conceptually, if not in implementation.

>> I think in order to really answer that question, one would have to
>> step back for a moment and really think about what one wants out of a
>> shell.  There seems to be a natural conflict a programming language
>> and a command interpreter (e.g., the 'if' vs. 'if not' thing).  On
>> which side does one err?
>
> since the raison d'être of a shell is to be a command interpter, i'd
> go with that.

Fair enough, but that will color the flavor of the shell when used as
a programming language.  Then again, Inferno's shell was able to
successfully navigate both in a comfortable manner by using clever
facilities available in that environment (module loading and the
like).  It's not clear how well that works in an environment like
Unix, let alone Plan 9.

>> I tend to agree.  As a command interpreter, rc is more or less fine as
>> is.  I'd really only feel motivated to change whatever people felt
>> were common nits, and there are fairly few of those.
>
> there are nits of omission, and those can be fixable.  ($x(n-m) was added)

Right.

>> > perhaps (let's hope) someone else has better ideas.
>>
>> Well, something off the top of my head: Unix pipelines are sort of
>> like chains of coroutines.  And they work great for defining linear
>> combinations of filters.  But something that may be interesting would
>> be the ability to allow the stream of computations to branch; instead
>> of pipelines being just a list, make them a tree, or even some kind of
>> dag (if one allows for the possibility of recombining streams).  That
>> would be kind of an interesting thing to play with in a shell
>> language; I don't know how practically useful it would be, though.
>
> rc already has non-linear pipelines.  but they're not very convienient.

And somewhat limited.  There's no real concept of 'fanout' of output,
for instance (though that's a fairly trivial command, so probably
doesn't count), or multiplexing input from various sources that would
be needed to implement something like a shell-level data flow network.

Muxing input from multiple sources is hard when the data isn't somehow
self-delimited.  For specific applications this is solvable by the
various pieces of the computation just agreeing on how to represent
data and having a program that takes that into account do the muxing,
but for a general mechanism it's much more difficult, and the whole
self-delimiting thing breaks the Unix 'data as text' abstraction by
imposing a more rigid structure.

There may be other ways to achieve the same thing; I remember that the
boundaries of individual writes used to be preserved on read, but I
think that behavior changed somewhere along the way; maybe with the
move away from streams?  Or perhaps I'm misremembering?  I do remember
that it led to all sorts of hilarious arguments about what the
behavior of things like, 'write(fd, "", 0)' should induce in the
reading side of things, but this was a long time ago.

Anyway, maybe something along the lines of, 'read a message of length
<=SOME_MAX_SIZE from a file descriptor; the message boundaries are
determined by the sending end and preserved by read/write' could be
leveraged here without too much disruption to the current model.

> i think part of the problem is answering the question, what problem
> would we like to solve.  because "a better shell" just isn't well-defined
> enough.

Agreed.

> my knee-jerk reaction to my own question is that making it easier
> and more natural to parallelize dataflow.  a pipeline is just a really
> low-level way to talk about it.  the standard
>         grep x *.[ch]
> forces all the *.[ch] to be generated before 1 instance of grep runs on
> whatever *.[ch] evaluates to be.
>
> but it would be okay for almost every use of this if *.[ch] were generated
> in parallel with any number of grep's being run.
>
> i suppose i'm stepping close to sawzall now.

Actually, I think you're stepping closer to the reducers stuff Rich
Hickey has done recently in Clojure, though there's admittedly a lot
of overlap with the sawzall way of looking at things.

        - Dan C.



  parent reply	other threads:[~2012-08-29  8:38 UTC|newest]

Thread overview: 133+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-28  8:57 [9fans] rc vs sh Rudolf Sykora
2012-08-28  9:47 ` hiro
2012-08-28  9:52 ` dexen deVries
2012-08-28 10:27   ` Rudolf Sykora
2012-08-28 13:07   ` Lucio De Re
2012-08-28 13:40     ` Rudolf Sykora
2012-08-28 14:10       ` Lucio De Re
2012-08-28 14:13         ` Kurt H Maier
2012-08-28 14:52           ` Lucio De Re
2012-08-28 15:05             ` Kurt H Maier
2012-08-28 15:18               ` Dan Cross
2012-08-28 15:30                 ` Kurt H Maier
2012-08-28 15:45                   ` Dan Cross
2012-08-28 17:43                     ` Kurt H Maier
2012-08-28 18:20                       ` Dan Cross
2012-08-28 18:26                         ` Kurt H Maier
2012-08-28 18:39                           ` Dan Cross
2012-08-28 18:47                             ` Kurt H Maier
2012-08-28 20:42                             ` Jeremy Jackins
2012-08-28 21:20                               ` Dan Cross
2012-08-28 20:40                   ` Uriel
2012-08-28 15:36               ` Lucio De Re
2012-08-28 15:35                 ` Kurt H Maier
2012-08-28 15:41                   ` erik quanstrom
2012-08-28 15:47                     ` Kurt H Maier
2012-08-28 16:04                       ` hiro
2012-08-28 16:05                   ` Lucio De Re
2012-08-28 17:46                     ` Kurt H Maier
2012-08-28 18:19                       ` Lucio De Re
2012-08-28 18:18                         ` Kurt H Maier
2012-08-28 20:44                   ` Uriel
2012-08-31 22:24                     ` Kurt H Maier
2012-08-31 23:00                       ` Uriel
2012-08-31 23:15                         ` hiro
2012-08-31 23:56                           ` Matthew Veety
2012-09-02 15:20                             ` suharik
     [not found]                             ` <CAF9FGtS9xYBNzneNPs2eBkkqVGzn5V0FjdEWDYs_EaUu0waRvQ@mail.gmail.c>
2012-09-02 17:25                               ` erik quanstrom
2012-09-02 20:40                                 ` suharik
2012-09-03  7:31                                 ` Rudolf Sykora
2012-09-03  8:22                                   ` dexen deVries
2012-09-03 10:04                                   ` suharik
2012-09-03 10:57                                     ` hiro
     [not found]                                 ` <CAF9FGtRdcFuuefr4q0zFBrkwaQ5a_-w4J-=xqo-MYp+phjQBaA@mail.gmail.c>
2012-09-03 13:42                                   ` erik quanstrom
     [not found]                                 ` <CAF9FGtTFskxpVd_CxGEKpRwfSihVjyREqWwFCmjiWksCKZoDvg@mail.gmail.c>
2012-09-03 13:46                                   ` erik quanstrom
2012-10-25 13:36                                     ` Ethan Grammatikidis
2012-10-25 13:48                                       ` erik quanstrom
2012-09-03  8:32                         ` Balwinder S Dheeman
2012-08-28 16:06             ` tlaronde
2012-08-28 16:12               ` Aram Hăvărneanu
2012-08-28 16:32                 ` tlaronde
2012-08-28 20:43                 ` tlaronde
2012-08-28 18:13               ` Lucio De Re
2012-08-30  6:14                 ` arnold
2012-08-30  7:41                   ` Lucio De Re
2012-08-30  9:34                     ` tlaronde
2012-08-30 10:26                       ` Lucio De Re
2012-08-30 10:29                         ` tlaronde
2012-08-30 10:50                           ` Lucio De Re
2012-08-30 10:35                         ` Dan Cross
2012-08-28 14:16         ` erik quanstrom
2012-08-28 14:58           ` Lucio De Re
2012-08-28 14:16         ` dexen deVries
2012-08-28 14:23           ` hiro
2012-08-28 14:34             ` hiro
2012-08-29  9:16   ` Balwinder S Dheeman
2012-08-29 15:10     ` Charles Forsyth
2012-08-29 15:22       ` hiro
2012-08-29 15:34         ` Charles Forsyth
2012-10-25 13:45       ` Ethan Grammatikidis
2012-10-25 13:56       ` dexen deVries
2012-08-28 15:09 ` Dan Cross
     [not found] ` <CAEoi9W6K07ZgNS+7-oeQY3dkedW7qZLnOh79m5J7KCw7os5aEQ@mail.gmail.c>
2012-08-28 15:26   ` erik quanstrom
2012-08-28 15:40     ` Lucio De Re
2012-08-28 15:34       ` erik quanstrom
2012-08-28 18:24     ` dexen deVries
2012-08-28 18:44       ` [9fans] rc's shortcomings (new subject line) erik quanstrom
2012-08-28 19:34         ` dexen deVries
2012-08-29  0:06           ` arisawa
2012-08-29  8:12             ` dexen deVries
2012-08-28 19:41         ` Dan Cross
2012-08-28 20:14           ` Bakul Shah
2012-08-29  1:39             ` erik quanstrom
2012-08-29  1:43               ` erik quanstrom
2012-08-29  2:13               ` Bakul Shah
2012-08-29  2:23                 ` erik quanstrom
2012-08-29  2:44                   ` Bakul Shah
2012-08-29  4:28                     ` erik quanstrom
2012-08-28 20:31           ` Aram Hăvărneanu
2012-09-04 17:27           ` 😜
2012-08-28 19:53         ` Bakul Shah
     [not found]         ` <CAEoi9W5bZE+coAaQA-Be4P_JQoB6TR31GS=gYhq=6BhHNXCRKw@mail.gmail.c>
2012-08-28 20:34           ` erik quanstrom
2012-08-28 22:46             ` Bakul Shah
2012-08-29  1:28               ` erik quanstrom
2012-08-29  8:09             ` dexen deVries
2012-08-29  8:38             ` Dan Cross [this message]
     [not found]             ` <CAEoi9W5_r=4w5EcdrbKuqD566p=C5KvEEHg72YKzdat18En2-w@mail.gmail.c>
2012-08-29 13:57               ` erik quanstrom
2012-08-29 15:07                 ` Charles Forsyth
2012-08-30 10:05                 ` Dan Cross
2012-08-30 10:43                   ` Charles Forsyth
2012-08-30 13:41                   ` dexen deVries
2012-08-30 13:47                     ` erik quanstrom
2012-08-30 14:26                       ` dexen deVries
2012-08-30 14:29                         ` erik quanstrom
2012-08-30 14:24                     ` Dan Cross
     [not found]                     ` <CAEoi9W6NL-zGryJnMrAX3B77bk1bOEMfkv_R7M4W052LZR4yrg@mail.gmail.c>
2012-08-30 14:26                       ` erik quanstrom
2012-08-30 14:33                         ` Dan Cross
     [not found]                         ` <CAEoi9W45W0pK7MA2FvxsCVCuRcqw-JxOiEn+JQtWMo0rFcSEpg@mail.gmail.c>
2012-08-30 14:41                           ` erik quanstrom
2012-08-30 14:48                             ` dexen deVries
2012-08-30 15:11                               ` sl
2012-08-30 15:13                               ` Lucio De Re
2012-08-30 15:07                                 ` Burton Samograd
2012-08-30 15:13                                 ` Charles Forsyth
2012-08-30 15:14                                   ` Charles Forsyth
2012-08-30 17:02                   ` Bakul Shah
2012-08-30 17:18                     ` erik quanstrom
2012-08-30 20:06                       ` Charles Forsyth
     [not found]                   ` <CAOw7k5jQxJCs64ZjrXp1mU0zTUTG6p7VXYX5ykwQ8OmFATLirg@mail.gmail.c>
2012-08-30 20:10                     ` erik quanstrom
     [not found]                 ` <CAEoi9W6c2JaxrTDwR76TjuN9DeBXnO6gueOGCaEh+Fksfb9zqQ@mail.gmail.c>
2012-08-30 13:33                   ` erik quanstrom
2012-08-30 14:21                     ` Dan Cross
2012-08-30 14:25                       ` Dan Cross
2012-08-30 14:45                     ` Charles Forsyth
2012-08-30 14:55                       ` Charles Forsyth
     [not found]                   ` <CAEoi9W5AagpdK4aZCYs5tSMESU3yoMe9bmgX3GcphTcYuMq9kQ@mail.gmail.c>
2012-08-30 14:34                     ` erik quanstrom
2012-08-30 14:44                     ` erik quanstrom
     [not found]                   ` <CAOw7k5i-JO=bOS8h+S0zdWghCWhSN36uFebMYnzvs=fdNQgA+g@mail.gmail.c>
2012-08-31  1:33                     ` erik quanstrom
2012-10-25 14:56 ` [9fans] rc vs sh Ethan Burns
2012-10-25 15:08   ` hiro
2012-10-25 17:02     ` Gorka Guardiola
2012-10-25 17:18       ` Matthew Veety
2012-10-25 17:26         ` John Floren
2012-10-25 19:03           ` hiro
2012-10-25 19:08     ` Skip Tavakkolian
2012-08-30 15:24 [9fans] rc's shortcomings (new subject line) Lucio De Re

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEoi9W5_r=4w5EcdrbKuqD566p=C5KvEEHg72YKzdat18En2-w@mail.gmail.com' \
    --to=crossd@gmail.com \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).