[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

for better or for worse,



es has been announced to the rest of the world.  version 0.84 is now
available for ftp from the usual place.  (thanks Chris!)  i think this
release should work straight out of the box on most machines.

very little has changed since 0.83; see the CHANGES file for details.
the usenet posting follows.

paul

Article 9818 of comp.unix.shell:
Xref: adobe comp.unix.shell:9818 comp.unix.wizards:21071 comp.lang.misc:10810 comp.lang.tcl:4036 comp.lang.scheme:6086
Newsgroups: comp.unix.shell,comp.unix.wizards,comp.lang.misc,comp.lang.tcl,comp.lang.scheme
Path: adobe!haahr
From: haahr@adobe.com (Paul Haahr)
Subject: es, a new shell
Message-ID: <1993Apr30.032118.27003@adobe.com>
Followup-To: comp.unix.shell
Keywords: es rc shell
Sender: usenet@adobe.com (USENET NEWS)
Organization: Adobe Systems Incorporated
Date: Fri, 30 Apr 1993 03:21:18 GMT

We'd like to announce the availability of es, a new Unix shell.

Es evolved out of Byron's public reimplementation of rc, the Plan 9
shell.  When he was writing rc, the two of us started speculating
what a shell would be like if it were designed as a programming
language rather than as an ad hoc collection of syntax and builtins
that happen to trigger certain system calls.  We stole a lot from
other programming languages---notably rc, Scheme, and Tcl---and
ended up with a system that is very extensible and programmable.

The version we are releasing is 0.84; that is, a little more than
four-fifths of a product.  It's been used by a few dozen people
while the big design issues were worked out, but we're freezing
development of major new features until we've got a stable 1.0
version.  We don't think there are very many serious bugs, but we
can't claim that it's been extensively tested.  (At least one of
us has been using it as a login shell for over six months.)

Es is availble by anonymous ftp from

	ftp.sys.utoronto.ca:/pub/es/es-0.84.tar.Z

It is written in ANSI C, and effectively requires a compiler that
knows about prototypes, <stdarg.h> and the like.  You may need to
add a few compile-time options to the CFLAGS line in the Makefile,
and, of course, header files always move around, but other than
that it should just compile and run.

For details on es, please see the man page in the distribution.  For
some background on the design of es, see our Winter 1993 Usenix paper,
``Es: a shell with higher-order functions,'' available by ftp as

	ftp.sys.utoronto.ca:/pub/es/usenix-w93.ps.Z

Please report any bugs in es (or other problems with it) to us at

	haahr@adobe.com
	byron@netapp.com

There is a mailing list for discussing es.  Send mail to

	es-request@hawkwind.utcs.toronto.edu

to join the list.  The list itself is

	es@hawkwind.utcs.toronto.edu

Es is in the public domain.  We hold no copyrights or patents on
the source code, and do not place any restrictions on its distribution.
We would appreciate it if any distributions credit the authors.

The following are answers to a few questions people might have about es.

Q: What machines does it run on?

A: So far, we've run it successfully on Sparc machines under
   SunOS 4.x and Solaris 2, Sun3s, Silicon Graphics and MIPS
   machines, DEC Alpha OSF/1 and MIPS Ultrix machines, NeXTs,
   and IBM RS6000s.  Others have run it under SCO Open Desktop,
   Interactive's Unix for Intel processors, and HP/UX 9.0.1.
   Somebody sent us a note about getting it running on a Cray.
   Where the native compilers support ANSI C we've used them,
   otherwise we've used gcc.

Q: What's performance like?

A: Pretty good, not that it matters much, since most shells spend
   very little time doing anything interesting other than making
   system calls.  Roughly, performance is slightly worse than that
   of rc.  Interactive performance is pretty good, and startup time
   is pretty small.

Q: What's going to change between now and the 1.0 release?

A: As little as possible.  We want to get the remaining bugs out
   and address portability issues.  We'd also like to document the
   internals better.

Q: Does es support history?

A: Yes, in two forms.  First, es can be used with GNU readline or
   a compatible library, such as editline.  Second, es will optionally
   write all interactive input to a file, which an auxiliary program
   can manipulate.  It does not have csh-style ! history.

Q: You say es is extensible.  Can I add csh-style history?

A: No, or, at least, not yet.  We'd like to come up with a way for
   an es user to extend the syntax.  Right now extensibility in es
   is similar to C++ operators:  you can give new semantics to
   existing syntax, but you can't invent wholly new syntax.

   Future versions of es probably will support user-defined syntax.
   We think definition-by-example systems such as extend-syntax in
   Scheme are a good model, but we don't know how to apply that
   approach to a language that doesn't have lispish syntax.

Q: Does es have job control?

A: No.  While neither of us likes job control, we did not leave it
   out for ideological reasons.  Rather, we wanted to avoid the
   complexity it would add to the shell.  If someone can tell us
   how to add job control portably without requiring pervasive
   changes to the shell's semantics or implementation, we would
   probably do it.

Q: Isn't es just another of those minimalist, spartan shells that
   people like to read about but not use?

A: As two of rc's earliest adopters outside of Bell Labs, we'd
   disagree with the premise that a small shell is worse to use
   than a big one.  Nonetheless, we're ashamed to admit that es is
   not as minimalist as it could be.  In fact, compiled with
   assertion checking on (the default), es is larger than csh on
   most systems.

   Rc is in many ways the perfect shell.  It's small, fast, and
   predictable.  There's not much to confuse a user in it.  Es is
   different; it's larger, slower, and has many nooks and crannies.
   The central difference between the two shells is that rc is
   hard-coded to the right thing, where you can customize es to do
   what you want it to do.  That ability to extend es required a
   more sophisticated language and more builtin operations than
   are found in rc.

Q: What does es mean for Byron's rc implementation?

A: Rc is a mature, stable piece of code.  New development on
   rc has mostly stopped, reflecting the maturity of the code.
   The last release of Byron's rc was last May, although another
   one is coming soon.  Es, on the other hand, is still rather
   immature, and makes a wonderful testbed for new ideas on how to
   construct shells.

   We expect that some rc users will switch to es and some will
   not.

Enjoy!

-- Paul Haahr & Byron Rakitzis
-- 
paul haahr		adobe systems incorporated
haahr@adobe.com		...!decwrl!adobe!haahr		+1 415 962 6056