Michael Sperber <sperber(a)informatik.uni-tuebingen.de> writes:
>>>>> "Stephen" == Stephen J Turnbull
<turnbull(a)sk.tsukuba.ac.jp> writes:
Stephen> However, according my
understanding of something Steve Baur wrote, it
Stephen> should be possible to run XEmacs with _nothing_ except the binary
Stephen> itself, and at least manage the functionality of MS-Edit under DOS.
Stephen> If that is a goal, then crashing just because it can't find any
Stephen> packages, or even core Lisp, is not acceptable. Steve?
That is correct. With just the core lisp, it's still better than VI,
I believe.
Right. This has little to do with path searching, but I have a set
of
patches that make it go a lot further than it did. Still, it's very
much hardwired into the system that it can get at the core Lisp
auto-autoloads. Questions for Steve:
- Is being able to run a naked executable a priority?
Yes. Jamie Zawinski and others run XEmacs that way. You should be
able to find the bitching about this on c.e.x in DejaNews. Another
way to look at it though is to consider this a case of graceful
degradation. We should still have warning messages, but if the user
knows what he is doing, he should be able to do it.
- What's the rationale of auto-autoloads not being dumped?
There's two main reasons. You can't ensure that every package you
ever wish to have around will be available at dump time. You want to
be able to pick up[1] freshly installed packages the same way packages
installed at dump time are picked up. You also want to be able to
reload the autoloads of packages that have been upgraded.[2]
This could be implemented by rescanning the autoloads at startup and
reloading autoloads files that weren't present at dump time and
reloading out of date autoloads. For a variety of reasons, I suspect
this is much slower than just reloading all the autoloads to begin
with. Also, there is no clean way we can unload files once they have
been loaded. -More- If you happen to touch the timestamp of the
installed binary you lose forever after. The easiest and safest way
to ensure that all autoloaded stuffs are present and up-to-date is to
load them in at run-time.
I think loading autoloads at runtime is a win. I think as people gain
experience with longer lived binaries (I don't see this happening too
much while updates are being made every other day) they will appreciate
this feature too. Think about it a second. It's another step in the
direction of making the dumped binary less special.
Stop XEmacs. Install a bunch of new lisp packages. Restart XEmacs.
With the current architecture you are now in an identical situation
to what used to require redumping the binary (or recompiling and
relinking temacs if the object code is no longer available). The new
lisp is bound as tightly to XEmacs as Lisp that was present at dump
time.
Footnotes:
[1] "Pick up" means load the autoloads.
[2] If you don't, we can perhaps work out some method of dumping
autoloads and then ignoring new stuff in the future.