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

Re: everyone's least favorite creatures



> > i'll admit up front that i'll probably reply to a good number of
> > good suggestions with ``NO! we NEED that!''

> `Needing' something isn't a reason to put it in initial.es if it can
> by synthesized from primitive stuff.  It's a reason to have a custom
> environment full of things you need.

that's not what i meant by needing.  what i meant, and i can see how
it might have been hard to figure this out from what i said, was that
there are a number of features which appear to be completely gratuitous,
but which we needed to implement some of the required functionality of
the shell.

for example, %fsplit is not really necessary as a shell feature.
on the other hand, we needed it in order to do path/PATH and
cdpath/CDPATH aliasing at ``user'' level.  does that make it
a creeping feature?

now, what is ``required functionality of the shell''?  that's somewhat
vague, but, personally, i consider it equivalent shell-like functionality
to rc.  that is, all of the redirections, pipes, backgrounding, ||, &&,
path searching, the environment, etc.  in cases, es has gone further
towards matching traditional shells than rc (e.g., ~user expansion) and in
cases it does less (e.g., exec {>foo} instead of exec > foo).

> You might consider the dumping (or encapsulation) of the environment
> to be a meta-need for satisfying needs.

i think that Noah's package stuff (and to a lesser extent, the autoloading
hack in the sample .esrc) go a long way to addressing this need.

on a related note, we keep hearing suggestions about dynamic loading of
c code, but are hesitant to make it an official part of es, for a number
of reasons, including

	+ portability across unix versions is hard (though not impossible).
	  note that this is the reason that Ousterhout gives for tcl not
	  supporting dynamic linking, and, imho, tcl is a much better
	  candidate for dynamic linking than es, at least in its current
	  implementation.

	+ the details of writing es primitives (i.e., c code that works
	  with es) is constantly changing.  there will be a rev in the
	  next major release to support lexical scoping of function names,
	  for example.

paul