* [9fans] mash
@ 2000-11-02 13:20 rob pike
2000-11-02 15:54 ` Rick Hohensee
0 siblings, 1 reply; 15+ messages in thread
From: rob pike @ 2000-11-02 13:20 UTC (permalink / raw)
To: 9fans
We needed a make-like facility in Inferno but I dreaded porting
make or mk. I had been musing for some time that mk is conceptually
just a special dependency-driven wrapper for shell scripts (this is its
major advance over make, in which the recipes are all mangled and
variables adjusted before the script is run). It therefore seemed that
a shell with a little extra could provide the ability to write building
scripts as shell scripts. But I didn't know how to do it right. I mooted
this to Brucee, who ran with it and made mash by exploiting the module
loading of Inferno. It was a brilliant coup and I wish I had it in other
systems.
-rob
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] mash
2000-11-02 13:20 [9fans] mash rob pike
@ 2000-11-02 15:54 ` Rick Hohensee
2000-11-03 9:27 ` Leo Caves
0 siblings, 1 reply; 15+ messages in thread
From: Rick Hohensee @ 2000-11-02 15:54 UTC (permalink / raw)
To: 9fans
>
> We needed a make-like facility in Inferno but I dreaded porting
> make or mk. I had been musing for some time that mk is conceptually
> just a special dependency-driven wrapper for shell scripts (this is its
> major advance over make, in which the recipes are all mangled and
> variables adjusted before the script is run). It therefore seemed that
> a shell with a little extra could provide the ability to write building
> scripts as shell scripts. But I didn't know how to do it right. I mooted
> this to Brucee, who ran with it and made mash by exploiting the module
> loading of Inferno. It was a brilliant coup and I wish I had it in other
> systems.
>
> -rob
>
Hmmmm, haven't looked at that.
Rick Hohensee
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] mash
2000-11-02 15:54 ` Rick Hohensee
@ 2000-11-03 9:27 ` Leo Caves
0 siblings, 0 replies; 15+ messages in thread
From: Leo Caves @ 2000-11-03 9:27 UTC (permalink / raw)
To: 9fans
strange that mash appears to be so little utilised in the inferno release.
in a naive search of the inferno source tree I find two "mashfiles",
one to build mash itself and the other related to mail extensions
to acme.
the lack of adoption sends a confusing message.
the fact that there is another command shell for inferno without
these features seeemingly relegates the "make" functionality
to another special purpose language.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] mash
@ 2000-11-03 17:25 rog
0 siblings, 0 replies; 15+ messages in thread
From: rog @ 2000-11-03 17:25 UTC (permalink / raw)
To: 9fans
leo caves wrote;
> the lack of adoption sends a confusing message.
> the fact that there is another command shell for inferno without
> these features seeemingly relegates the "make" functionality
> to another special purpose language.
i liked mash, in principle, but i thought its syntax was unnecessarily
complex, leaving behind some of the simplifications that rc had given
us, and adding expressions, for instance. limbo made it very easy to
provide loadable shell modules, but i thought that it should be
possible to do more with less.
i had already written most of an inferno shell before mash, so i dusted
it off, borrowed most of the good ideas from mash, and that became the
inferno shell. it's comparable in size to mash but simpler and more
versatile, i think. the syntax is very small, but still substantially
similar to rc's.
it should be quite possible to write a "make"-style dependency module
for it without changing the syntax at all.
the key being that it allows the passing around of fragments of
shell-script as values, so it would be perfectly possible to write a
built-in shell module that defined a command "dep" (dependency) that
might look something like:
dep x.dis : x.b {
limbo -g x.b
}
or:
dep %.dis : %.b {
limbo -g $stem.b
}
and a "mk" command to do the customary make-style dependency
evaluation, executing recipes as necessary.
in this scheme, you do lose the advantages of having a special syntax
for the make features (e.g. distinguishing between quoted and unquoted
wildcard chars), but the shell syntax isn't cluttered with stuff that's
essentially only good for one application, and only in the way
otherwise. swings and roundabouts.
i don't know how long mash will stay in the inferno distribution, once
i've plundered its "make" code and converted it to sh... but then i'm
completely biased, and probably wrongheaded about all of this as a
result!
cheers,
rog.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
2000-07-18 8:18 ` Lucio De Re
@ 2000-07-18 8:24 ` Lucio De Re
0 siblings, 0 replies; 15+ messages in thread
From: Lucio De Re @ 2000-07-18 8:24 UTC (permalink / raw)
To: 9fans
Oh, dear! Caught by the Reply-to :-) :-) :-)
On Tue, Jul 18, 2000 at 10:18:53AM +0200, Lucio De Re wrote:
>
> On Tue, Jul 18, 2000 at 08:42:33AM +0000, forsyth@caldo.demon.co.uk wrote:
> >
> > >>I seem to recall the original Inferno shell being quite limited. The
> > >>new man pages are encouraging :-)
> >
> > it's still there as tiny/sh, because on small devices a simple command interpreter
> > is useful for maintenance but one might begrudge the extra flash and memory
> > that plumper shells consume.
>
> Depends, I guess. The 8K AVR device I'm toying with isn't likely to
> run any shells at all :-( More's the pity.
>
> BTW, I just accessed Vita Nuova's web site for the first time since the
> Plan 9 release (I must have missed an announcement about Inferno in the
> excitement) and my impressions are that it is very striking.
>
> USD 300 is around SAR 2200, just around UKP 200, I think. I'm starting
> to save right now :-)
>
> More seriously, can I get some encouragement from Vita Nuova to support
> your products in South Africa? No need for any form of exclusivity,
> it may suffice to let interested parties know that they can approach me
> for assistance.
>
> ++L
<blush>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
2000-07-18 7:42 [9fans] Mash forsyth
@ 2000-07-18 8:18 ` Lucio De Re
2000-07-18 8:24 ` Lucio De Re
0 siblings, 1 reply; 15+ messages in thread
From: Lucio De Re @ 2000-07-18 8:18 UTC (permalink / raw)
To: 9fans
On Tue, Jul 18, 2000 at 08:42:33AM +0000, forsyth@caldo.demon.co.uk wrote:
>
> >>I seem to recall the original Inferno shell being quite limited. The
> >>new man pages are encouraging :-)
>
> it's still there as tiny/sh, because on small devices a simple command interpreter
> is useful for maintenance but one might begrudge the extra flash and memory
> that plumper shells consume.
Depends, I guess. The 8K AVR device I'm toying with isn't likely to
run any shells at all :-( More's the pity.
BTW, I just accessed Vita Nuova's web site for the first time since the
Plan 9 release (I must have missed an announcement about Inferno in the
excitement) and my impressions are that it is very striking.
USD 300 is around SAR 2200, just around UKP 200, I think. I'm starting
to save right now :-)
More seriously, can I get some encouragement from Vita Nuova to support
your products in South Africa? No need for any form of exclusivity,
it may suffice to let interested parties know that they can approach me
for assistance.
++L
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
@ 2000-07-18 7:42 forsyth
2000-07-18 8:18 ` Lucio De Re
0 siblings, 1 reply; 15+ messages in thread
From: forsyth @ 2000-07-18 7:42 UTC (permalink / raw)
To: 9fans
>>I seem to recall the original Inferno shell being quite limited. The
>>new man pages are encouraging :-)
it's still there as tiny/sh, because on small devices a simple command interpreter
is useful for maintenance but one might begrudge the extra flash and memory
that plumper shells consume.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
2000-07-17 9:12 ` Chris Locke
@ 2000-07-18 6:27 ` Lucio De Re
0 siblings, 0 replies; 15+ messages in thread
From: Lucio De Re @ 2000-07-18 6:27 UTC (permalink / raw)
To: 9fans
On Mon, Jul 17, 2000 at 09:12:42AM +0000, Chris Locke wrote:
>
> If you are interested in Mash you should check out
> the new Inferno shell.
>
> There's a short paper on it here...
> http://www.vitanuova.com/papers/sh.html
I get an error, rather strange.
> and a man page here...
> http://www.vitanuova.com/man/1/sh.html
I seem to recall the original Inferno shell being quite limited. The
new man pages are encouraging :-)
> oh, and here is the mash man page...
> http://www.vitanuova.com/man/1/mash.html
>
Ha! Still there :-) Good.
++L
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
2000-07-16 17:50 brucee
@ 2000-07-17 9:12 ` Chris Locke
2000-07-18 6:27 ` Lucio De Re
0 siblings, 1 reply; 15+ messages in thread
From: Chris Locke @ 2000-07-17 9:12 UTC (permalink / raw)
To: 9fans
If you are interested in Mash you should check out
the new Inferno shell.
There's a short paper on it here...
http://www.vitanuova.com/papers/sh.html
and a man page here...
http://www.vitanuova.com/man/1/sh.html
oh, and here is the mash man page...
http://www.vitanuova.com/man/1/mash.html
Mash was a great improvement on the original Inferno
shell but suffered some problems itself.
It is made fatter by the specific pattern/dependency list
syntax built into the parser. I struggled to find a use for
this outside of the make 'plug-in'.
Most users aren't running make in the shell all the time, so
we have a bunch of code (and remember that Inferno was originally
intended for small devices) built in to the shell that, under
normal usage, serves no purpose.
There was also a problem with sharing 'contexts'.
For example, when using the graphical Mash shell (wm/mash)
you can use the tk 'plug-in' to create buttons that act as
command shortcuts - when clicked they spit out a command as if
it had been typed. However, they don't work if you run
a sub-shell (e.g. mash) in the wm/mash window. The 'commands'
are buffered up until the sub-shell exits.
Another problem was that the dependency syntax wasn't the same
as mk or make. On several projects I looked at setting up
mash-make files. I tend to develop for Inferno on Plan9 using
Acme and the host limbo compiler because it is faster at compiling
than the Inferno (.dis) based limbo compiler. Consequently I found
that to use mash-make I was having to maintain two different
'mkfile's. This was too much bother so I stuck with mk on Plan9
and the minor inconvenience of having to make sure my Plan9/Inferno
namespaces overlapped.
It would have made for a very interesting paper for USENIX,
it would have been one of the few interesting things there.
The proceedings were incredibly dull this year
(apart from Rob's "getting dot dot right", which was a delight).
Chris Locke.
P.S. to BruceE, I didn't mean to be harsh on Mash, it really is a
nice piece of work, any chance of posting up your paper?
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
@ 2000-07-17 2:01 pip
2000-07-16 22:21 ` Boyd Roberts
0 siblings, 1 reply; 15+ messages in thread
From: pip @ 2000-07-17 2:01 UTC (permalink / raw)
To: 9fans
[-- Attachment #1: Type: text/plain, Size: 165 bytes --]
>s/interesting/bad/
Care to share your bountiful wisdom ? Is it that you think that the
standardisation process of C made the language evolve for the worse ?
[-- Attachment #2: Type: message/rfc822, Size: 2206 bytes --]
From: Boyd Roberts <boyd@noos.fr>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] Mash
Date: Sun, 16 Jul 2000 23:49:25 +0200
Message-ID: <39722DE5.6060908@noos.fr>
pip@namaste.stricca.org wrote:
> <junk>
> > [that's the C Reference Manual brainiac]
> <junk>
>
> Something interesting happened in December 1989.
s/interesting/bad/
--
Boyd Roberts boyd@psycho-basket-case.org
``I come over here to kill them cocksuckers, not work for 'em''
-- Moon Dog, _Pettibone's Law_, John Keene
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
@ 2000-07-17 0:57 pip
2000-07-16 21:49 ` Boyd Roberts
0 siblings, 1 reply; 15+ messages in thread
From: pip @ 2000-07-17 0:57 UTC (permalink / raw)
To: brucee, 9fans, brucee
[-- Attachment #1: Type: text/plain, Size: 485 bytes --]
<junk>
> [that's the C Reference Manual brainiac]
<junk>
Something interesting happened in December 1989. ANSI
adopted what was to become the ANSI C standard, which was
then adopted by ISO and is ISO/IEC standard 9899-1990. If
you require a copy, you can get it from ANSI or ISO:
American National Standards Institute
11 West 42nd Street
New York, NY 10036
Telephone (212) 642-4900
or
ISO Sales
Case postale 56
CH-1211 Geneve 20
Switzerland
-
pip
[-- Attachment #2: Type: message/rfc822, Size: 3411 bytes --]
From: brucee@plan9.bell-labs.com
To: 9fans@cse.psu.edu, brucee@plan9.bell-labs.com
Subject: [9fans] Mash
Date: Sun, 16 Jul 2000 13:50:19 -0400
Message-ID: <200007161750.NAA09238@cse.psu.edu>
> Does that mean you haven't ported "mash" yet? :-) :-) :-)
>
> I only browsed the mash documentation, but it seemed very intriguing.
Hi, I'm Bruce Ellis - a friend of Mark Shaney's - and
I wrote mash. There was a plan to replace mk either
by adding loadable module support to rc or by more or
less a mash port. It's syntax is almost identical to rc
though I got rid of the "if not" wart by some deft but
perhaps not totally successful changes.
I actually did the dynamic loader (with much encouragement
from Russ - loadable vga drivers would be nice) but had
too many other things on my plate to do the rest.
(This involved really minor changes to 8l and a small
library file - 240 lines. I didn't do the other loaders.)
I wrote a paper on mash for Usenix but it was rejected,
though there were some very fine papers on web servers
and perl that could fill its place. (Sarcasm?)
Maybe I should tidy up the draft and put it somewhere.
You may not understand it though - some of the reviewers
seemed to have trouble with it because it wasn't ksh/nmake.
Let me be naughty and share some of their comments.
Yes, this is so unprofessional.
---
I find nothing interesting or novel or conceptually
appealing about the paper.
[ok - more fool you]
The author states that "a history mechanism probably
doesn't belong in a shell." Make and Tk do?
[they aren't in the shell boofhead, that's the point]
Is a 1978 AT&T manual the best reference on the C language?
[that's the C Reference Manual brainiac]
What is a "trampoline function"?
[where did you go to school]
On the second last page, you write "mush" instead of "must"
[it's a draft - meant "tush" anyway]
We hope to see you in Monterey!
[eat my shorts]
---
But I digress. Mash is fun, makes Inferno a better place.
The make loadable module is 723 lines of code. nmake
is 723 pages of code.
Comments/suggestions welcome - though I don't read 9fans,
Russ forwarded me the mail.
Bruce Ellis
Computing Prototypes Research Group
Bell Laboratories
* Don't meddle in the mouth.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
2000-07-17 2:01 pip
@ 2000-07-16 22:21 ` Boyd Roberts
0 siblings, 0 replies; 15+ messages in thread
From: Boyd Roberts @ 2000-07-16 22:21 UTC (permalink / raw)
To: 9fans
pip@namaste.stricca.org wrote:
> >s/interesting/bad/
> Care to share your bountiful wisdom ? Is it that you think that the
> standardisation process of C made the language evolve for the worse ?
>
yeah, i think it got worse. look at the horrors like strftime().
on the other hand, look at the beauty of ken-C on plan 9.
doing more with less -- that is the deal.
--
Boyd Roberts boyd@psycho-basket-case.org
``I come over here to kill them cocksuckers, not work for 'em''
-- Moon Dog, _Pettibone's Law_, John Keene
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
@ 2000-07-16 22:20 brucee
0 siblings, 0 replies; 15+ messages in thread
From: brucee @ 2000-07-16 22:20 UTC (permalink / raw)
To: pip, 9fans, brucee
>> Something interesting happened in December 1989. ANSI
>> adopted what was to become the ANSI C standard, which was
>> then adopted by ISO and is ISO/IEC standard 9899-1990.
What an ass.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [9fans] Mash
2000-07-17 0:57 pip
@ 2000-07-16 21:49 ` Boyd Roberts
0 siblings, 0 replies; 15+ messages in thread
From: Boyd Roberts @ 2000-07-16 21:49 UTC (permalink / raw)
To: 9fans
pip@namaste.stricca.org wrote:
> <junk>
> > [that's the C Reference Manual brainiac]
> <junk>
>
> Something interesting happened in December 1989.
s/interesting/bad/
--
Boyd Roberts boyd@psycho-basket-case.org
``I come over here to kill them cocksuckers, not work for 'em''
-- Moon Dog, _Pettibone's Law_, John Keene
^ permalink raw reply [flat|nested] 15+ messages in thread
* [9fans] Mash
@ 2000-07-16 17:50 brucee
2000-07-17 9:12 ` Chris Locke
0 siblings, 1 reply; 15+ messages in thread
From: brucee @ 2000-07-16 17:50 UTC (permalink / raw)
To: 9fans, brucee
> Does that mean you haven't ported "mash" yet? :-) :-) :-)
>
> I only browsed the mash documentation, but it seemed very intriguing.
Hi, I'm Bruce Ellis - a friend of Mark Shaney's - and
I wrote mash. There was a plan to replace mk either
by adding loadable module support to rc or by more or
less a mash port. It's syntax is almost identical to rc
though I got rid of the "if not" wart by some deft but
perhaps not totally successful changes.
I actually did the dynamic loader (with much encouragement
from Russ - loadable vga drivers would be nice) but had
too many other things on my plate to do the rest.
(This involved really minor changes to 8l and a small
library file - 240 lines. I didn't do the other loaders.)
I wrote a paper on mash for Usenix but it was rejected,
though there were some very fine papers on web servers
and perl that could fill its place. (Sarcasm?)
Maybe I should tidy up the draft and put it somewhere.
You may not understand it though - some of the reviewers
seemed to have trouble with it because it wasn't ksh/nmake.
Let me be naughty and share some of their comments.
Yes, this is so unprofessional.
---
I find nothing interesting or novel or conceptually
appealing about the paper.
[ok - more fool you]
The author states that "a history mechanism probably
doesn't belong in a shell." Make and Tk do?
[they aren't in the shell boofhead, that's the point]
Is a 1978 AT&T manual the best reference on the C language?
[that's the C Reference Manual brainiac]
What is a "trampoline function"?
[where did you go to school]
On the second last page, you write "mush" instead of "must"
[it's a draft - meant "tush" anyway]
We hope to see you in Monterey!
[eat my shorts]
---
But I digress. Mash is fun, makes Inferno a better place.
The make loadable module is 723 lines of code. nmake
is 723 pages of code.
Comments/suggestions welcome - though I don't read 9fans,
Russ forwarded me the mail.
Bruce Ellis
Computing Prototypes Research Group
Bell Laboratories
* Don't meddle in the mouth.
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2000-11-03 17:25 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-11-02 13:20 [9fans] mash rob pike
2000-11-02 15:54 ` Rick Hohensee
2000-11-03 9:27 ` Leo Caves
-- strict thread matches above, loose matches on Subject: below --
2000-11-03 17:25 rog
2000-07-18 7:42 [9fans] Mash forsyth
2000-07-18 8:18 ` Lucio De Re
2000-07-18 8:24 ` Lucio De Re
2000-07-17 2:01 pip
2000-07-16 22:21 ` Boyd Roberts
2000-07-17 0:57 pip
2000-07-16 21:49 ` Boyd Roberts
2000-07-16 22:20 brucee
2000-07-16 17:50 brucee
2000-07-17 9:12 ` Chris Locke
2000-07-18 6:27 ` Lucio De Re
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).